计算几何基础:向量的叉乘、点乘与夹角计算
创作时间:
作者:
@小白创作中心
计算几何基础:向量的叉乘、点乘与夹角计算
引用
CSDN
1.
https://blog.csdn.net/Meloor/article/details/89715670
计算几何是计算机科学和数学领域的重要分支,广泛应用于图形学、机器人学、计算机视觉等领域。本文将详细介绍向量的叉乘、点乘以及夹角的计算方法,帮助读者掌握这些基本的计算几何工具。
一、向量的叉乘
向量p=(x1,y1), q=(x2,y2)
则pxq=x1.y2-x2.y1
pxq= - qxp
叉乘的大小等于于2倍三角形面积。
右手法则:手掌表示p向量,手指表示q向量,方向均指向指尖
pxq> 0,则p在q的顺时针方向(q,p),即大拇指朝上,手指与手掌弯曲成九十度,手指弯向左边,p逆时针方向旋转到q
pxq<0, 则p在q的逆时针方向 (p,q) ,即大拇指朝下,手指与手掌弯曲成九十度,手指弯向右边,p顺时针方向旋转到q
pxq=0. 则pq重合
代码计算叉乘
class point{
public:
double x;
double y;
point(double x_=0,double y_=0):x(x_),y(y_){}
friend const point operator+(const point& p1,const point& p2){
return point(p1.x+p2.x,p1.y+p2.y);
};
friend const point operator-(const point& p1,const point& p2){
return point(p1.x-p2.x,p1.y-p2.y);
};
friend const point operator*(const point& p,const double& m){
return point(p.x*m,p.y*m);
};
friend const point operator*(const double& m,const point& p){
return point(p.x*m,p.y*m);
};
friend const point operator/(const point& p,const double& m){
return point(p.x/m,p.y/m);
};
friend ostream& operator <<(ostream& out,point& a){
printf("(%lf,%lf)",a.x,a.y);
return out;
};
};
typedef point vect2;//重命名,向量也是用坐标表示
class line{
public:
point start;
point end;
line(point s=point(0,0),point e=point(0,0)):start(s),end(e){}
};
double cross(point O,point A,point B){//叉乘
double oa_x=A.x-O.x;
double oa_y=A.y-O.y;
double ob_x=B.x-O.x;
double ob_y=B.y-O.y;
return oa_x*ob_y-oa_y*ob_x;
}
二、向量的点乘
向量p=(x1,y1), q=(x2,y2)
pq=x1x2+y1y2
double dot(point O,point A,point B){//点乘
double oa_x=A.x-O.x;
double oa_y=A.y-O.y;
double ob_x=B.x-O.x;
double ob_y=B.y-O.y;
return oa_x*ob_x+oa_y*ob_y;
}
三、向量的夹角
cos(alpha)=(pq)/(|p|*|q|)
#include<cmath>
double dot(point O,point A,point B){//点乘
double oa_x=A.x-O.x;
double oa_y=A.y-O.y;
double ob_x=B.x-O.x;
double ob_y=B.y-O.y;
return oa_x*ob_x+oa_y*ob_y;
}
double dis(const point &p1,const point &p2){//求两点之间距离
double ans=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
return sqrt(ans);
}
double angle(point O,point A,point B){//两向量OA,OB的夹角
return acos(dot(O,A,B)/(dis(O,A)*dis(O,B)));
}
热门推荐
探访全球著名老虎保护区:东北虎与孟加拉虎的生存现状
捕捉老虎野性瞬间:暗处伏击!
耳鸣,切勿掉以轻心。
明水古城:山东春节旅游必打卡!
故宫博物院揭秘明清帝王生活
故宫御花园:皇家园林的秘密
故宫博物院三大书法镇馆之宝:从《平复帖》到《兰亭序》
军中儒帅陈毅,手底下除了叶王陶,还出了哪些战将?
手指肚皮肤特别薄怎么办?原因分析与应对方法
手指肚的中医解读与调理之道
交行周万阜:政策性因素对银行手续费收入的一次性影响将逐步消退
肿瘤放射治疗不良反应及应对方法
健康成年猫也需要定期体检!最新研究揭示:21%猫咪存在潜在健康问题
为什么医生建议您做24小时动态血压监测?看完就懂了!
关于李清照的10件事
三叶酸草:秋冬季节的常绿观赏植物
秋冬滋补首选:野鸡的N种好处
秋冬必吃:野鸡的神仙做法大揭秘!
《亲爱的,请将我埋葬》开发者分享:如何让游戏写作具有真实感
5组数据见证中国城乡焕新颜,农村基础设施如何改善?
动感单车:低碳环保新宠儿
戴耳机耳朵疼怎么办?7个实用解决方案
动感单车燃脂大挑战!你敢试试吗?
动感单车:释放压力的最佳方式?
动感单车减肥,饮食搭配这样做效果翻倍!
扬州必打卡!这些美食让你流连忘返
瘦西湖:扬州最美自然景观,园林之盛甲天下
哈尔滨必打卡地道美食推荐
李清照《渔家傲》:一位宋代才女的豪放词风
平潭岛看"蓝眼泪",最佳季节揭秘!