计算几何——向量的叉乘、点乘、夹角
汇总篇:计算几何汇总
一、向量的叉乘
向量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=x1*x2+y1*y2
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)));
}
计算几何——向量的叉乘、点乘、夹角相关推荐
- 向量(矢量)叉乘(叉积)与点乘(点积)
矢量叉乘与点乘 点乘(点积) 定义式 点乘的几何意义(实际意义) 叉乘(叉积) 定义式 叉乘的几何意义(实际意义) 今天来介绍一下数学上的叉乘与点乘的意义. 点乘(点积) 定义式 我们先来说明一下点乘 ...
- 四维向量叉乘matlab,请教:四维或者更高维向量的叉乘定义
叉乘的集合意义是已知道N维空间中的N-1个基向,可以求出与这N-1个基向量正交的另一个基向量吧. 有的书上说叉乘只在3维上有定义,就是vec1和vec2相乘得: (vec1.y * vec2. ...
- 计算机图形常用数学之向量运算 向量的模 向量的点乘内积 向量的叉乘外积 向量的模向量的加减法 向量归一化
向量 已知a.b.c是三个向量 向量的投影 投影过程 a向量在b向量上的投影就是作a到b的垂线,交点就是投影坐标a向量在b向量上的投影就是作a到b的垂线,交点就是投影坐标a向量在b向量上的投影就是作a ...
- 计算几何之用叉乘求多边形面积
一.理论基础 二维向量叉乘得到的是对应平行四边形的有向面积,所以,只要保证按照逆时针对点排序,以下的算法都是可行的: ①凸多边形,选取一个A0,从A1开始依次挑选相邻的两个点,求三角形面积,求和即可 ...
- 向量相似度的计算和向量夹角余旋的关系
在向量空间模型中,文本泛指各种机器可读的记录.用D(Document)表示,特征项(Term,用t表示)是指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集 ...
- 直角坐标系中向量与三个坐标轴的夹角问题
最近在学习阵列信号处理,发现课件上有一个来波矢量与坐标夹角换算的问题,于是就写了几笔,加以整理得到下面的内容. 设有空间直角坐标系O-XYZ P点坐标,向量与X轴.Y轴和Z轴的夹角分别为α.β和γ. ...
- matlab 计算任一向量与X轴正方向的夹角
https://www.ilovematlab.cn/thread-46944-1-1.html
- 1、使用库函数计算两个向量的夹角
首先需要安装Eigen库.安装方法如下链接:https://blog.csdn.net/m0_37957160/article/details/109581546 使用到的库函数是: C ++ 中的a ...
- DirectX 向量点乘和叉乘
使用 Length()函数获取向量的长度: 运行一下:还是 不是有效的win32应用程序 错误:下回再整: 然后看一下向量的乘法: 可以调用Add()函数实现两个向量相加: 调用Multiply()实 ...
最新文章
- Daydream VR
- Classes in JScript – Part III 类的继承与封装
- numpy安装失败-小失误
- [BZOJ 1588] [HNOI 2002] 营业额统计
- 13-Canny边缘检测
- oracle监控工具ignite使用图解
- mysql8.0.11-1 修改密码报错
- PCWorld:HTML5会终结移动应用程序吗?
- 彻底解决Python包下载慢问题
- H264、H265编码概念及I帧P帧B帧
- 什么是RS485总线?怎么使用RS485总线?——转自微信公众号弱点课堂
- MTK6577 编译报错
- ubantu apt命令失败
- (转)CGJ02、BD09、西安80、北京54、CGCS2000常用坐标系详解
- 随机生成数字字母组合
- android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
- HTTP状态码的含义
- 苹果x支持5g吗_【苹果】曝iPhone12双卡下不支持5G?NO!小白实测支持
- linux中错误编号对应意思
- PXE实现系统批量自动安装