矢量
如果一条线段的端点是有次序之分的话,那么这种线段就称为 有向线段,如果有向线段p1p2的起点p1在坐标的原点,则可以把它称为矢量 p2
矢量的加减
设二维矢量 P = (x1, y1), Q = (x2, y2),则 P + Q = (x1 + x2, y1 + y2), P - Q = (x1 - x2, y1 - y2),且有 P + Q = Q + P, P - Q = -(Q - P)
矢量叉积
设矢量 P = (x1, y1), Q = (x2, y2),则 P * Q = x1 * y2 - x2 * y1; 其结果是一个由 (0, 0), P, Q, P + Q 所组成的平行四边形的 带符号的面积,P * Q = -(Q * P), P * (- Q) = -(P * Q)
叉积的一个非常重要的性质是可以通过它的符号来判断两矢量相互之间的顺逆时针关系:
若 P * Q > 0,则 P 在 Q 的顺时针方向
若 P * Q < 0, 则 P 在 Q 的逆时针方向
若 P * Q = 0,则 P 与 Q 共线,但不确定 P, Q 的方向是否相同
折线段的拐向判断
如图,假设有折线段 p0p1p2 ,要确定 p1p2 相对于 p0p1 是向左拐还是向右拐,可以通过计算(p2 - p0)*(p1 - p0) 的符号来确定折线的拐向(点 p2 - p0 实际上就是向量 p2,但这里要注意线段和矢量的区别)
判断点是否在线段上
设点 Q = (x, y), P1 = (x1, y1), P2 = (x2, y2),若 (Q - P1)*(P2 - P1) = 0 且 min(x1, x2) <= x <= max(x1, x2) && min(y1, y2) <= y <= max(y1, y2),则点 Q 在线段 P1P2 上
判断两线段是否相交
1)快速排斥试验
设以线段 P1P2 为对角线的矩形为 R,设以线段 Q1Q2 为对角线的矩形为 T,若 R、T 不相交,则两线段不可能相交
假设 P1 = (x1, y1), P2 = (x2, y2), Q1 = (x3, y3), Q2 = (x4, y4),设矩形 R 的 x 坐标的最小边界为 minRX = min(x1, x2),以此类推,将矩形表示为 R = (minRX, minRY, maxRX, maxRY) 的形式,若两矩形相交,则相交的部分构成了一个新的矩形 F,如图所示,我们可以知道 F 的 minFX = max(minRX, minTX), minFY = max(minRY, minTY), maxFX = min(maxRX, maxTX), maxFY = min(maxRY, maxTX),得到 F 的各个值之后,只要判断矩形 F 是否成立就知道 R 和 T 到底有没有相交了,若 minFX > maxFX 或 minFY > maxFy 则 F 无法构成,RT不相交,否则 RT相交
2)跨立试验
若 P1P2 跨立 Q1Q2,则 P1,P2 分别在 Q1Q2 所在直线的两端,则有 (P1 - Q1)*(Q2 - Q1) * (Q2 - Q1)*(P2 - Q1) > 0,当 (P1 - Q1)*(Q2 - Q1) = 0 时,说明 (P1 - Q1) 与 (Q2 - Q1) 共线,但由于已经经过快速排斥试验,所以 Q1 必为 P1P2 与 Q1Q2 的交点,依然满足线段相交的条件,则跨立试验可改为:
当 (P1 - Q1)*(Q2 - Q1) * (Q2 - Q1)*(P2 - Q1) >= 0,则 P1P2 跨立 Q1Q2,当 Q1Q2 也跨立 P1P2 的时候,则 P1P2 相交
(注意式子中被隔开的 * 代表两个叉积的值的相乘,而另外的两个 * 则代表计算矢量叉积)
- 大小: 4 KB
- 大小: 16.1 KB
- 大小: 12.2 KB
分享到:
相关推荐
首先,我们来看计算几何中的基本概念之一——矢量。矢量是具有方向和大小的量,通常表示为一个点的坐标差。例如,如果有一个从原点(0,0)到点(p1, p2)的有向线段,那么这个线段可以被视为矢量P = (x1, y1),其中x1和...
- **点在线段上的判定**:利用矢量叉积和点坐标的范围检查,可以有效判断一点是否位于给定线段上,确保其既在直线上又在指定线段范围内。 - **两线段相交性判定**:结合点在线段上的判定和矢量叉积,可以精确判断两...
在地理信息系统(GIS)中,算法是实现各种空间分析和数据处理的基础。本题要求使用C#语言解决一系列与GIS相关的算法问题,以下是对这些算法知识点的详细说明。 1. 线段延长问题 在GIS中,经常需要根据已知线段和一...
在图形变换过程中,矢量运算非常重要,主要包括矢量的加法、减法、点积和叉积。 - **两个矢量的加法**:矢量加法遵循向量的几何意义,即头尾相连形成平行四边形的法则。 - **矢量的长度**:矢量的长度计算公式为 \...
本文将详细介绍一种基于矢量叉积的方法来实现这一功能。 #### 算法原理 判断一个点 \( P \) 是否位于由三个顶点 \( A \)、\( B \) 和 \( C \) 构成的三角形内部,可以通过比较各个边与点 \( P \) 形成的向量之间的...
平面向量是高中数学中的重要知识点,特别是在高考复习阶段,对于理解和解决与向量相关的几何问题、代数问题具有至关重要的作用。湖南省长沙市长郡中学2016届高三数学一轮复习的“粗细考点精讲”系列,针对的就是这个...
- **应用**:几何计算基础。 - **实现思路**:使用海伦公式或向量叉积。 3. **两矢量间角度**: - **功能**:计算两个向量之间的夹角。 - **应用**:物理仿真、游戏开发等。 - **实现思路**:利用点积公式计算...
叉乘法可以用来计算平面上两点构成的向量之间的叉积,进而推导出任意多边形的面积。 **2. 求三角形面积** 三角形面积可以通过多种方法计算,如海伦公式、底乘高除以2等。 **3. 两矢量间角度** 两个矢量之间的...
- **OpenGL**:作为GLScene的基础,OpenGL是一个开放标准的API,用于渲染2D和3D矢量图形。它定义了一套函数集,可以在不同平台上绘制图形而无需考虑底层硬件细节。 #### 组件 - **GLScene**:核心库,包含基本的...
这部分涵盖了空间直角坐标系下的点、直线、平面的位置关系,以及向量的基本运算,如向量的加法、减法、点积和叉积等。 #### 多元函数微分法及应用 - **偏导数**:用于描述多元函数关于其中一个变量的变化率。 - **...
d) 矢量的叉积 e) 矢量的输出 f) 完成相应应用程序的设计 8、 链表类设计 定义Link类,参照实现: a) 建立链表的数据结构 b) 输入链表结点的数据 c) 显示链表结点数据 d) 插入链表结点 e) 删除链表结点 f) 完成相应...