计算几何基础:向量的叉乘、点乘与夹角计算
创作时间:
作者:
@小白创作中心
计算几何基础:向量的叉乘、点乘与夹角计算
引用
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)));
}
热门推荐
上海大观园一日游攻略,含交通线路、游玩线路、景点介绍
重磅!昌平人热盼的17号线支线来了!但这站没了
全球储能产业的崛起:家庭储能系统如何成为能源转型的关键
别再忍痛了!止痛药合理使用不会成瘾
复方阿司匹林片过敏处理:从日常护理到医疗干预
安痛定过敏这样处理:四种方案缓解不适
安痛定使用全攻略:适用症状、服用方法与禁忌
复方阿司匹林片过敏处理指南:从日常护理到静脉注射
纷繁多样的戒烟产品有用吗?专家答疑
二楼下水道堵反水?从设计到维护的全方位解决方案
家庭水管清洁指南:4大好处+6步操作详解
戒酒需要多吃点什么好?
戒酒记:身体重启,生活焕新
什么饮料解酒效果最好
《香肠派对》二次元头像制作秘籍:从游戏到社交的创意之旅
转生成为虚拟主播,目标百万舰长
如何在Windows 10系统中优化扬声器以获得更佳音质?
越鞠丸:中医治疗气郁六证的常用方剂
海鲜快递保质期:不同种类的海鲜如何安全送达?
轮状病毒疫苗:社区肠胃炎防控的利器
燕麦粥:肠胃炎患者的营养良方
远离辛辣,肠胃炎说拜拜
2024全球熊猫伙伴大会在成都召开 成都大熊猫繁育研究基地展示多项科研成果
成都大熊猫基地辟谣:电刺激采精技术安全可靠,网络谣言已依法打击
成都大熊猫基地最新开放时间,乐乐带你玩转熊猫塔
成都大熊猫繁育研究基地:国宝乐园里的萌趣日常
东北老铁的“笨鸡蛋”,到底有多少种吃法?
红心鸡蛋和黄心鸡蛋有什么区别?
京都站,通往古都的大门!不可错过的当地美食和景点!
冬季穿衣勿太紧会影响血液循环与保暖效果,易引发健康问题