iCAx开思工具箱
标题:
关于样条曲线Knots信息的获取。。(有疑问,大家支招)
[打印本页]
作者:
sincosxu
时间:
2008-9-18 23:38
标题:
关于样条曲线Knots信息的获取。。(有疑问,大家支招)
函数大概代码:
变量的定义在此省略
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:08
标题:
回复 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
全部吻合。。
希望知道第一个问题的人,能解答下。。。
作者:
hexuejunok
时间:
2008-9-23 10:59
节点一般是一非递减序列,且规一化后在[0,1]]区间内,不可能出现负数呀?
路过啊!
作者:
sincosxu
时间:
2008-9-23 20:43
标题:
回复 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),就像极点的坐标.......
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3