24小时热门版块排行榜    

查看: 2513  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 守门老人 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 10/500 2026-08-21 17:32 by chengyan1220
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] filecode,4个jtjc了 +11 ziyangfang 2026-08-19 14/700 2026-08-21 16:51 by applepetty
[基金申请] 让我中一个面上吧! +11 大萍1987 2026-08-20 13/650 2026-08-21 14:48 by 20120902066
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +15 医学老男孩 2026-08-20 18/900 2026-08-21 13:46 by 医学老男孩
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 什么时候开奖? +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
[基金申请] 今天基金会出结果吗?20260819 +15 kkkl_v 2026-08-19 16/800 2026-08-21 11:22 by 365372687
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 13/650 2026-08-21 08:30 by 北京莱茵编辑
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
信息提示
请填处理意见