24小时热门版块排行榜    

查看: 2516  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

守门老人

铁虫 (初入文坛)

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

如题   VC新手  不懂怎么弄 请教各位大虾  谢谢
回复此楼
已阅   回复此楼   关注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的回帖
查看全部 7 个回答

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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 建议基金发布提前给出明确的时间点 +10 kulium 2026-08-21 12/600 2026-08-21 19:46 by kulium
[基金申请] 科研孤儿太难了 +16 我4大白菜 2026-08-20 17/850 2026-08-21 19:07 by sakuraai
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 让我中一个面上吧! +11 大萍1987 2026-08-20 13/650 2026-08-21 14:48 by 20120902066
[基金申请] 人气不行了 +7 fansofjerry 2026-08-21 7/350 2026-08-21 14:13 by Vivilian
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 只有每年这种时候来逛逛小木虫 +23 yaoyewhu2008 2026-08-20 25/1250 2026-08-21 12:19 by Poppy1104
[基金申请] 什么时候开奖? +7 CrisMessi 2026-08-18 7/350 2026-08-21 12:15 by weiyin
[基金申请] 时间戳又变了8-15 +15 archvillain 2026-08-15 27/1350 2026-08-21 11:32 by tim76
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 13/650 2026-08-21 08:30 by 北京莱茵编辑
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见