找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16306|回复: 3
打印 上一主题 下一主题

[原创] 关于样条曲线Knots信息的获取。。(有疑问,大家支招)

[复制链接]
跳转到指定楼层
1
发表于 2008-9-18 23:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
函数大概代码:
         变量的定义在此省略
         UF_CURVE_spline_t spline_data;
         UF_UI_select_with_single_dialog( cue,title,UF_UI_SEL_SCOPE_NO_CHANGE, NULL, NULL,
                &response, &object, cursor, &view );
         UF_DISP_set_highlight( object,0 );/*取消高亮显示*/
          spline=curve_t;
          UF_CURVE_ask_spline_data(spline, &spline_data);
          sprintf(message,"极点数=%i,样条曲线阶次=%i,开始参数为:%f,结束参数为:%f,rational值为:%i,\n
                                     节点信息(%f,%f,%f),\n(%f,%f,%f),\n(%f,%f,%f),\n
                                      极点信息(%f,%f,%f,%f),\n(%f,%f,%f,%f),\n(%f,%f,%f,%f)\n",
                    spline_data.num_poles,spline_data.order,
                    spline_data.start_param,spline_data.end_param,spline_data.is_rational,spline_data.knots[0],
                    spline_data.knots[1],spline_data.knots[2],spline_data.knots[3],spline_data.knots[4],spline_data.knots[5],
                    spline_data.knots[6],spline_data.knots[7],spline_data.knots[8],

                    spline_data.poles[0][0],spline_data.poles[0][1],spline_data.poles[0][2],spline_data.poles[0][3],
                    spline_data.poles[0][4],spline_data.poles[0][5],spline_data.poles[0][6],spline_data.poles[0][7],
                    spline_data.poles[0][8],spline_data.poles[0][9],spline_data.poles[0][10],spline_data.poles[0][11]);
           UF_UI_open_listing_window();
           UF_UI_write_listing_window(message);

函数调试后无问题。。。在UG随意建了一个样条曲线。。Knots点的信息看不明白,Poles点的信息倒是都是正确的。。

结果如下:
       极点数=11,样条曲线阶次=4,开始参数为:0.000000,结束参数为:1.000000,rational值为:0,
       节点信息(-0.375000,-0.250000,-0.125000),
                      (0.000000,0.125000,0.250000),
                      (0.375000,0.500000,0.625000),

       极点信息(220.744160,-31.659255,0.000000,1.000000),
                      (217.636993,-14.922744,0.000000,1.000000),
                       (221.859039,0.986853,0.000000,1.000000)     
希望明白的人给个提示。。。

[ 本帖最后由 sincosxu 于 2008-9-19 00:16 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2008-9-19 00:08:40 | 只看该作者

回复 1楼 sincosxu 的帖子

换成另外一个函数也能达到我的目的(获得样条线上的点,非极点和节点)
        ---------------UF_CURVE_ask_spline_thru_pts       (spline,°ree,&periodicity,&num_points,&point_data,¶meters);
输出结果:
Degree is: 3
Periodicity is : 0
parameters[0]: 0.000000
,
Points (1):
point_data[0]->point[0]: 61.413689
point_data[0]->point[1]: -6.263671
point_data[0]->point[2]: 0.000000
parameters[1]: 0.206078
,
Points (2):
point_data[1]->point[0]: 79.663523
point_data[1]->point[1]: 7.663834
point_data[1]->point[2]: 0.000000
parameters[2]: 0.457198
,
Points (3):
point_data[2]->point[0]: 102.715945
point_data[2]->point[1]: -8.184706
point_data[2]->point[2]: 0.000000
parameters[3]: 0.620636
全部吻合。。
希望知道第一个问题的人,能解答下。。。
3
发表于 2008-9-23 10:59:46 | 只看该作者
节点一般是一非递减序列,且规一化后在[0,1]]区间内,不可能出现负数呀?
路过啊!
4
发表于 2008-9-23 20:43:14 | 只看该作者

回复 3楼 hexuejunok 的帖子

楼上的说的正确。。。
我上面的结果是没问题的。。
API里面有介绍
knots[degree-1]------knots[poles]中存储的才是节点的信息
在我编制的函数中,degree是4,也就是说knots数组中前三个不是knots信息,从第四个开始才是节点信息,也就是(0.000000,0.125000,0.250000),(0.375000,0.500000,0.625000)
确实是个非递减序列。。
但是目前的问题是:如何提取节点的坐标(x,y,z),就像极点的坐标.......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-4 06:07 , Processed in 0.025989 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表