iCAx开思工具箱

标题: 在一个新坐标系下画圆~ [打印本页]

作者: 皮尔洛    时间: 2008-7-2 09:56
标题: 在一个新坐标系下画圆~
在一个新的工作坐标系下画圆
怎么得到的圆心坐标和输入的不一样呢?
是不是要转换坐标系,具体该怎么做~~
大虾们帮我看看呗
谢咯~~
部分代码如下
        //建立工作坐标系
        double x_vec[3],y_vec[3];
        double csys_origin[3];
        tag_t matrix_id;
        tag_t csys_id;
        double matrix_values[9];
        x_vec[0]=cut_point[0][0]-p3[max_num][0];
        x_vec[1]=cut_point[0][1]-p3[max_num][1];
        x_vec[2]=cut_point[0][2]-p3[max_num][2];
        y_vec[0]=pro_point_coords[0]-p3[max_num][0];
        y_vec[1]=pro_point_coords[1]-p3[max_num][1];
        y_vec[2]=pro_point_coords[2]-p3[max_num][2];
        csys_origin[0] = p3[max_num][0];
        csys_origin[1] = p3[max_num][1];
        csys_origin[2] = p3[max_num][2];
   
        UF_MTX3_initialize (x_vec,y_vec, matrix_values);
        UF_CSYS_create_matrix (matrix_values, &matrix_id);
        UF_CSYS_create_csys (csys_origin,matrix_id,&csys_id);
        UF_CSYS_set_wcs(csys_id);

//做圆弧
        UF_CURVE_arc_t arc_coords;
        tag_t arc_id;
       //double cut_point_co1[3];
        
       //UF_CSYS_map_point    (UF_CSYS_ROOT_WCS_COORDS,cut_point_co,UF_CSYS_ROOT_COORDS,cut_point_co1);
        arc_coords.start_angle = -45.0 * DEGRA;
        arc_coords.end_angle = 45.0 * DEGRA;
        arc_coords.arc_center[0] =p3[max_num][0]; //cut_point_co1[0];
        arc_coords.arc_center[1] =p3[max_num][1]; //cut_point_co1[1];
        arc_coords.arc_center[2] =p3[max_num][2];// cut_point_co1[2];
        arc_coords.radius = dist1;
        UF_CALL(UF_CSYS_ask_wcs(&csys_id));
        UF_CALL(UF_CSYS_ask_matrix_of_object(csys_id,&arc_coords.matrix_tag));
        UF_CALL(UF_CURVE_create_arc(&arc_coords,&arc_id));
作者: soul_liu    时间: 2008-7-3 18:46
我通常的做法是这样的:
首先在绝对坐标系下是怎样绘制,坐标就怎样设置
实际位置通过矩阵变化获得,将各种变化综合到mtx[16]的矩阵数组里
然后实际调用API函数绘制的时候就与矩阵数组相乘,以结果作为参数绘制
作者: 皮尔洛    时间: 2008-7-4 09:44
标题: 回复 2楼 soul_liu 的帖子
谢谢回复~
是不是可以这样理解
先不建立工作坐标系,先作图,然后再进行坐标转换~
作者: hj-hanjun    时间: 2008-7-28 01:03
extern int UF_CSYS_map_point (
int input_csys,
double input_point[ 3 ],
int output_csys,
double output_point[ 3 ] );






欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3