24小时热门版块排行榜    

查看: 2325  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 守门老人 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿吉林大学材料学硕321求调剂 +3 Ymlll 2026-03-18 5/250 2026-03-18 19:32 by Ymlll
[考研] 【同济软件】软件(085405)考研求调剂 +3 2026eternal 2026-03-18 3/150 2026-03-18 19:09 by 搏击518
[考研] 26调剂/材料/英一数二/总分289/已过A区线 +7 步川酷紫123 2026-03-13 7/350 2026-03-18 17:12 by 尽舜尧1
[考研] 求材料调剂 +7 隔壁陈先生 2026-03-12 7/350 2026-03-18 16:14 by 枫桥ZL
[考研] 收复试调剂生 +4 雨后秋荷 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
[考研] 环境工程调剂 +8 大可digkids 2026-03-16 8/400 2026-03-18 09:36 by zhukairuo
[考研] 085601求调剂 +4 Du.11 2026-03-16 4/200 2026-03-17 17:08 by ruiyingmiao
[考研] 278求调剂 +3 Yy7400 2026-03-13 3/150 2026-03-17 08:24 by laoshidan
[考研] 274求调剂 +5 时间点 2026-03-13 5/250 2026-03-17 07:34 by 热情沙漠
[考研] 333求调剂 +3 文思客 2026-03-16 7/350 2026-03-16 18:21 by 文思客
[考研] 070303 总分349求调剂 +3 LJY9966 2026-03-15 5/250 2026-03-16 14:24 by xwxstudy
[考研] 机械专硕调剂 +3 笨笨兔子 2026-03-12 3/150 2026-03-15 20:02 by 栗子粥?
[考研] 288求调剂 +4 奇点0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[考研] 中科大材料与化工319求调剂 +3 孟鑫材料 2026-03-14 3/150 2026-03-14 20:10 by ms629
[考研] 308 085701 四六级已过求调剂 +7 温乔乔乔乔 2026-03-12 14/700 2026-03-14 10:49 by JourneyLucky
[考研] 材料与化工(0856)304求B区调剂 +6 邱gl 2026-03-12 7/350 2026-03-13 23:24 by 邱gl
[考研] 材料与化工求调剂一志愿 985 总分 295 +8 dream…… 2026-03-12 8/400 2026-03-13 22:17 by 星空星月
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-12 3/150 2026-03-13 14:18 by JourneyLucky
[考研] 290求调剂 +3 ADT 2026-03-13 3/150 2026-03-13 10:19 by peike
[考博] 26读博 +4 Rui135246 2026-03-12 10/500 2026-03-13 07:15 by gaobiao
信息提示
请填处理意见