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();

矢量和运行结果

UG二次开发中的矢量应用_第1张图片

获得直线上任意点的坐标,本次验证的是中点

UG二次开发中的矢量应用_第2张图片 

 计算点到直线的距离

方法一:

UG二次开发中的矢量应用_第3张图片

 UG二次开发中的矢量应用_第4张图片

方法二:

UG二次开发中的矢量应用_第5张图片 

UG二次开发中的矢量应用_第6张图片 

 

你可能感兴趣的:(ug二次开发,c++,visualstudio,ui)