计算几何基础:向量的叉乘、点乘与夹角计算
创作时间:
作者:
@小白创作中心
计算几何基础:向量的叉乘、点乘与夹角计算
引用
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)));
}
热门推荐
太原晋商博物院免费开放,千年古建讲述三晋商业传奇
太原:从历史文化名城到数字经济新高地
VPN让公共WiFi使用更安全
WiFi安全警钟再敲响:从APT28攻击事件看公共WiFi风险防范
一文读懂“绿色出行”
南北方春节:时间、食物、活动三大差异
数据说话:掌握这些计算机技能,就业竞争力提升59%
从睡眠到饮食:新手养猫必备的六大生活配置
猫咪驱虫指南:频率、方法和注意事项全解析
电动车废旧锂电池回收现状调查:三种渠道均存安全隐患,国家已出台规范要求
电动汽车电池多久会出现衰退
“天上龙肉,地上驴肉”,那么好吃的驴肉,为什么我们很少吃?
驴肉火烧的派别之争,你站河间派还是保定派?
李玫瑾:溺爱是最大的伤害,这四个原则帮你避免“惯子如杀子”
平遥古城必打卡特色景点推荐
冬日平遥古城两日游完美攻略
平遥古城:一座活着的明清建筑博物馆
平遥中国年:千年古城迎新春
总台"品牌强国工程"走进华为,探访数字化转型成功之道
龙门浩老街:重庆的另一张历史文化名片
李子坝观景平台背后 还有这些设计美学
陈建斌凭《一个勺子》获金马奖,展现导演演员双重实力
青岛地铁6号线“走红”的背后,轨道交通如何连接民生与发展?
米公祠园林:南北交融的园林艺术典范
绥化进藏之旅:探寻神秘高原的火车路线指南
《庆余年》取景地唐城:襄阳古城的盛唐穿越之旅
秋天打卡襄阳古城墙,摄影技巧大揭秘
成都市龙泉驿区L社区:构建农村低保残疾人社会支持系统的实践探索
除了发热还致头晕,是“新毒株”吗?专家回应
早上起来头晕心慌怎么办