向量相关
作者:互联网
向量基础知识:
单位向量e:模(向量算出来的长度)等于1的向量
AB=(a,b,c) BC=(d,e,f)
向量的长度|AB|= √(a2 +b2+c2)
单位向量、长度、向量的关系:AB=|AB|*e
向量加减:AB±BC=AC= (a±d,b±e,c±f)
向量数乘:k*AB=(k*a,k*b,k*c)
向量数除:AB/k=(a/k,b/k,c/k)
向量相乘:AB*BC=|AB|*|BC|*cos<ABC>=a*d+b*e+c*f
1.两个向量之和 UF_VEC2_add(2维)
头文件#include<uf_vec.h>
使用说明UF_VEC2_add(double-输入矢量1,double-输入矢量2,double-输入矢量和)
double vec1[2] = {10.0, 0.0};
double vec2[2] = {0.0, 10.0};
double vec_sum[2];
UF_VEC2_add (vec1, vec2, vec_sum);
三维矢量转二维,z坐标去除(2维)
double vec_3D [3];
double vec_2D [2];
UF_VEC3_vec2 ( vec_3D,vec_2D [2])二维矢量转三维,z为0(3维)
double v3[3];
UF_VEC2_vec3 (vec_sum,v3);
两个向量之和UF_VEC3_add(3维)
头文件#include<uf_vec.h>
UF_VEC3_add(double-输入矢量1,double-输入矢量2,double-输入矢量和)
double vec1[3] = {10.0, 0.0,0.0};
double vec2[3] = {0.0, 10.0,0.0};
double vec_sum[3];
UF_VEC3_add (vec1, vec2, vec_sum);
//vec_sum= vec1+ vec2;
向量映射(一个点通过一个向量映射到另一个点)
使用说明UF_VEC3_affine_comb(要移动的点G,移动的距离值k,移动的单位向量e,移动后的点)--移动的向量也可不是单位向量,但是如不是单位向量对应的移动距离值就必须是:移动的大小k/移动向量的大小|e|,其原理相当于点G通过向量k*e移动到另一个点,即向量OG+向量k*e与其结果等同;
1.正常方式-单位向量-移动距离
double vec[3] = { 20.0,30.0,40.0 };
double K=625.0; //沿着单位向量移动距离为625
double e[3] = { 9.0/25.0,13.0 / 25.0,20.0 / 25.0 }; // 单位向量
double vec_comb[3];
UF_VEC3_affine_comb(vec, K, e, vec_comb);
2.其他方式-非单位向量AB-移动距离k=625,若要保证沿着向量AB移动距离为K,即验证向量AB的单位向量e移动距离k,需要的是K1*AB=k*e,所以K1=k/|AB|
double vec[3] = { 20.0,30.0,40.0 };
double K1 = 25.0;//非单位向量值等于 625/|vec_to_scale[3]|=625/√(9²+13²+20²) =625/25=25
double AB[3] = { 9.0,13.0 ,20.0 }; // 非单位向量
double vec_comb[3];
UF_VEC3_affine_comb(vec, K1,AB, vec_comb);
3.相当于向量之和
double vec[3] = { 20.0,30.0,40.0 };
double ddd[3] = { (9.0 / 25.0)*625, (13.0 / 25.0) * 625, (20.0 / 25.0) * 625 }; // 单位向量*距离625
double vec_comb[3];
UF_VEC3_add(vec, ddd, vec_comb);
以上3种方式映射后的点vec_comb结果等同。
标签:AB,double,vec,向量,相关,UF,单位向量 来源: https://www.cnblogs.com/kangkangfive/p/16195808.html