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:16 编辑 ]
作者: 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://www.icax.org/) Powered by Discuz! X3.3