24小时热门版块排行榜    

查看: 2322  |  回复: 6

守门老人

铁虫 (初入文坛)

[求助] 哪位大牛能给个用C++语言编写的B样条函数的代码

如题   VC新手  不懂怎么弄 请教各位大虾  谢谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:40:47
hoho,我正在搞nurbs目前,不过代码不能给啊.给你推荐本书
北航,施法中<计算机辅助几何设计与非均匀有理B样条>
相信你们图书馆肯定有这本书,详细讲解了NURBS和bezier曲线曲面
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-06-29 15:02:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

来自天狼

木虫 (正式写手)

【答案】应助回帖


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:40:55
守门老人(金币+30): 很有用 谢谢了 2011-07-02 10:39:55
先上个TC2.0下的代码,从书上抄来的,效果是用B样条画个小鸭子,你可以自己改成VC代码。
#include "graphics.h"
void main()
{
    int driver=9, mode=2;
    /*int x[20], y[20];*/
    float t;
    int a0, a1, a2, a3, b0, b1, b2, b3, x1, y1, i, j;
    /*控制点坐标,20个(前4行),最后几个点与前几个点重合,是为了使画出的图形闭合*/
    static int p[][2] =
    {
        260, 100, 260, 20, 200, 20, 180, 60, 180, 60,
                80,  60,  80, 90,  195, 80, 200, 140, 120, 200,
                120, 340, 240, 360, 430, 360, 480, 180, 520, 140,
                520, 140, 520, 140, 340, 160, 300, 200, 240, 160,
                260, 100, 260, 20, 200, 20
    };

    initgraph(&driver, &mode, "";
    setlinestyle(0, 0, 3);

    /*逐个处理控制点*/
    for(i = 0; i < 20; i++)
    {
        a0 = ( p[0] + 4 * p[i+1][0] + p[i+2][0] ) / 6;
        a1 = ( p[i+2][0] - p[0] ) /2;
        a2 = ( p[0] - 2 * p[i+1][0] + p[i+2][0] ) / 2;
        a3 =-( p[0] - 3 * p[i+1][0] + 3 * p[i+2][0] - p[i+3][0] ) / 6;
        b0 = ( p[1] + 4 * p[i+1][1] + p[i+2][1] ) / 6;
        b1 = ( p[i+2][1] - p[1] ) / 2;
        b2 = ( p[1] - 2 * p[i+1][1] + p[i+2][1] ) / 2;
        b3 =-( p[1] - 3 * p[i+1][1] + 3 * p[i+2][1] - p[i+3][1] ) / 6;

        /*生成离散点*/
        for(j = 0; j < 30; j++)
        {
            t = j / 30.0;
            x1 = a0 + a1 * t + a2 * t * t + a3 * t * t * t;
            y1 = b0 + b1 * t + b2 * t * t + b3 * t * t * t;
            if(i==0 && j==0)
                moveto(x1, y1);
            else
                lineto(x1, y1);
        }
    }
    circle(220, 60, 8);
    /*setcolor(12);*/
    setlinestyle(1, 0, 1);
    moveto(p[0][0], p[0][1]);

    /*画包线*/
    for(i = 1; i < 23; i++)
    {
        lineto(p[0], p[1]);
    }
    /*lineto(p[0][0], p[0][1]);*/
    getch();
    closegraph();
}
3楼2011-06-29 19:45:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:41:01
都是人才呀~~~真是后悔没学好数学,当白条了。哎~
漩涡的中心有一块空地,空空的。
4楼2011-06-29 19:49:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

来自天狼

木虫 (正式写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:41:08
怎么小木虫把代码里的中括号里的“i”给吃掉了?凡是单个的p[0]和p[1],p后面应该有个“中括号i”,比如“p[0]”应该是“p[0]”。
5楼2011-06-29 20:48:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

来自天狼

木虫 (正式写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:41:16
我晕,又给吃掉了
p[0]应该是p[i][0]
6楼2011-06-29 20:53:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-29 21:41:26
引用回帖:
Originally posted by 来自天狼 at 2011-06-29 20:48:39:
怎么小木虫把代码里的中括号里的“i”给吃掉了?凡是单个的p[0]和p[1],p后面应该有个“中括号i”,比如“p[0]”应该是“p[0]”。

因为【i】【/i】是斜体的标志啊~

所以发代码的时候要把代码圈在【code】【/code】中间才好~以上中文【】换英文中括号
7楼2011-06-29 20:57:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 守门老人 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化学调剂0703 +8 啊我我的 2026-03-11 8/400 2026-03-16 17:23 by 我的船我的海
[考研] 304求调剂 +5 素年祭语 2026-03-15 5/250 2026-03-16 17:00 by 我的船我的海
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 326求调剂 +4 上岸的小葡 2026-03-15 5/250 2026-03-16 08:39 by Linda Hu
[考研] 复试调剂 +3 呼呼?~+123456 2026-03-14 3/150 2026-03-14 16:53 by WTUChen
[考研] 学硕285求调剂 +13 Wisjxn 2026-03-12 46/2300 2026-03-14 10:33 by JourneyLucky
[考研] 266求调剂 +4 学员97LZgn 2026-03-13 4/200 2026-03-14 08:37 by zhukairuo
[考研] 求调剂,一志愿江南大学环境工程085701 +3 Djdjj12 2026-03-10 4/200 2026-03-14 00:31 by JourneyLucky
[考研] 321求调剂 +3 CUcat 2026-03-10 3/150 2026-03-14 00:25 by JourneyLucky
[考研] 求调剂(材料与化工327) +4 爱吃香菜啦 2026-03-11 4/200 2026-03-13 22:11 by JourneyLucky
[考研] 336求调剂 +6 Iuruoh 2026-03-11 6/300 2026-03-13 22:06 by JourneyLucky
[考研] 求材料调剂 085600英一数二总分302 前三科235 精通机器学习 一志愿哈工大 +4 林yaxin 2026-03-12 4/200 2026-03-13 22:04 by 星空星月
[考研] 求材料调剂 +5 隔壁陈先生 2026-03-12 5/250 2026-03-13 22:03 by 星空星月
[考研] 304求调剂 +7 7712b 2026-03-13 7/350 2026-03-13 21:42 by peike
[考研] 材料工程调剂 +4 咪咪空空 2026-03-11 4/200 2026-03-13 19:57 by JourneyLucky
[考研] 工科材料085601 279求调剂 +8 困于星晨 2026-03-12 10/500 2026-03-13 15:42 by ms629
[考研] 土木第一志愿276求调剂,科研和技能十分丰富,求新兴方向的导师收留 +3 土木小天才 2026-03-12 3/150 2026-03-13 15:01 by JourneyLucky
[考研] 化工0817调剂 +8 灿若星晨 2026-03-10 8/400 2026-03-10 22:44 by 星空星月
[考研] 收调剂 +7 调剂的考研学生 2026-03-10 7/350 2026-03-10 17:57 by 麦茶汤圆
信息提示
请填处理意见