UG二次开发中的矢量应用 |
您所在的位置:网站首页 › ug批量导入点坐标 › UG二次开发中的矢量应用 |
本文主要针对ug二次开发是的矢量进行说明和举例,并附有代码和运行图片,程序代码链接: https://download.csdn.net/download/weixin_47753171/87847292 uf_vec矢量 uf_vec.h 1、UF_VEC3_add求加 2、UF_VEC3_affine_comb矢量仿射 3、UF_VEC3_angle_between求两个向量之间的角度 4、UF_VEC3_ask_perpendicular返回一个垂直于输入向量的3D向量 5、UF_VEC3_convex_comb获得向量上点的坐标 6、UF_VEC3_copy 三维向量的复制 7、UF_VEC3_cross 叉乘 8、UF_VEC3_distance 两点之间的距离 9、UF_VEC3_distance_to_plane 点到面的距离 10、UF_VEC3_dot 点乘 11、UF_VEC3_is_equal 判断给定的向量在一定的公差内是否相等 12、UF_VEC3_is_parallel 判断是否平行 13、UF_VEC3_is_perpendicular 判断是否垂直 14、UF_VEC3_is_zero//判断是否为零向量 15、UF_VEC3_linear_comb等比缩放 16、UF_VEC3_mag求一个向量的实际大小 17、UF_VEC3_midpt 求向量中点的坐标 18、UF_VEC3_negate 反向量 19、UF_VEC3_scale 向量缩放 20、UF_VEC3_sub向量求差 21、UF_VEC3_triple点乘叉乘复合运算 22、UF_VEC3_unitize标准单位化 23、UF_VEC3_vec2三维转二维 UF_VEC3_vec4三维转四维 UF_initialize(); //矢量和 /* double vectorAB[3] = { 7.0,1.0,0.0 }; double vectorAC[3] = { 5.0,3.0,0.0 }; double vectorAD[3]; UF_VEC3_add(vectorAB, vectorAC, vectorAD); char msg[1000]; sprintf(msg, "%f %f %f", vectorAD[0], vectorAD[1], vectorAD[2]); uc1601(msg, 1);//12,4,0 */ /* //求线上点的坐标 double x = 0.5; //计算点的参数这里选择中点pnt_on_seg = (parameter pnt1) + ((1.0 - parameter) pnt2). double point1[3] = { 0.0,0.0,0.0 }; double point2[3] = { 10.0,5.0,0.0 }; double point3[3]; UF_VEC3_convex_comb(x, point1, point2, point3); char msg[1000]; sprintf(msg, "%f %f %f", point3[0], point3[1], point3[2]); uc1601(msg, 1); */ //利用向量叉乘(cross)求出点到直线的距离,已知A(3,4,0) B(10,6,0) C(8,3,0)求C点到AB的距离 //定义A,B,C三个点 double A[3] = { 3.0,4.0,0.0 }; double B[3] = { 10.0,6.0,0.0 }; double C[3] = { 8.0,3.0,0.0 }; //定义向量 double vectorAB[3] = { 7.0,2.0,0.0 }; double vectorAC[3] = {5.0,-1.0,0.0 }; double out_vector[3]; UF_VEC3_cross(vectorAB, vectorAC, out_vector); //out_vector可以用绝对值表示方法二(不建议使用) double a=fabs(out_vector[2]); //返回双精度参数x的绝对值 //转化数据类型 char msg1[256]; sprintf(msg1, "%f", a); uc1601(msg1, 1); /* 方法一 //求距离也相当于求叉乘结果,即平行四边形面积 double distance; UF_VEC3_distance_to_plane(out_vector, A, out_vector, 0.001, &distance); */ //求AB之间的距离 double distanceAB; UF_VEC3_distance(A, B, &distanceAB); //转化数据类型 char msg[256]; //sprintf(msg, "%f", distance / distanceAB);///方法一中 sprintf(msg, "%f", a / distanceAB);///方法二中 //打印距离 uc1601(msg, 1); UF_terminate();矢量和运行结果 获得直线上任意点的坐标,本次验证的是中点
计算点到直线的距离 方法一: 方法二:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |