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