计算几何基础:向量的叉乘、点乘与夹角计算
创作时间:
作者:
@小白创作中心
计算几何基础:向量的叉乘、点乘与夹角计算
引用
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)));
}
热门推荐
自制生巧克力变宝石,可可粉的秘密武器
85后艺术家用巧克力复刻三星堆面具走红:从珠宝鉴定师到巧克力艺术大师
大学生体质测试管理系统:功能、优势与未来展望
大学生体质测试管理系统:体育领域的黑科技
大数据助力学生体质健康管理
海外常用支付方式大盘点
银行卡网上交易限额:了解相关政策和操作方法
车内污渍清除技巧
洁厕灵如何制作出来的 洁厕灵配方技术
年画里的祭灶习俗
红烧羊排的家常做法,做法简单,软烂入味,越啃越香,解馋又下饭
秋冬高血压管理秘籍:药物治疗与生活调理双管齐下
高血压患者长期服药真的伤身吗?
2024版中国高血压防治指南发布,ARNI和SGLT2i成推荐用药
直播见证团圆:河北女孩刘佳佳32岁生日认亲记
郁豹豹认亲后直播带货风波:一场利益与亲情的博弈
楹联里的汉字韵律,竟然这么有趣?
全国第九届楹联书法作品展在郑州开幕
北京古韵楹联,打卡文化新地标
你知道泰国有哪些著名又特色的节日吗?
职场提案高手教你如何提建议
制度建设助力企业管理升级
合理化建议系统,打造企业文化新高度
莆田到成都四日游旅游攻略
当归党参黄芪排骨汤:一碗养生汤的科学与艺术
制造企业如何通过制度审阅提升风险管理?
猫咪雷弟陪你成长,亲子关系更亲密
亲子环保公益:培养下一代的责任感
阿里巴巴公益季报:暖心行动不停歇
蒙古铁骑的战术与装备揭秘:为何无人能敌?