点与向量
外观
点与向量是计算几何中最基础的概念,用于描述空间中的位置和方向。它们在计算机图形学、物理模拟、机器人路径规划等领域有广泛应用。本章将详细讲解它们的数学定义、基本运算及实际应用。
数学定义[编辑 | 编辑源代码]
点(Point)[编辑 | 编辑源代码]
在二维或三维空间中,点表示一个具体的位置,通常用坐标表示:
- 二维点:
- 三维点:
向量(Vector)[编辑 | 编辑源代码]
向量表示方向和大小(长度),由起点和终点确定。若起点为原点,则向量与点坐标相同。
- 二维向量:
- 三维向量:
基本运算[编辑 | 编辑源代码]
向量加法[编辑 | 编辑源代码]
两个向量相加的结果是对应分量相加:
向量减法[编辑 | 编辑源代码]
向量减法表示从到的位移:
点积(Dot Product)[编辑 | 编辑源代码]
点积用于计算两个向量的夹角或投影长度:
叉积(Cross Product)[编辑 | 编辑源代码]
叉积用于计算垂直向量(仅限三维)或面积(二维): 二维: 三维:
代码实现[编辑 | 编辑源代码]
以下是Python中点和向量的基础实现:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def dot(self, other):
return self.x * other.x + self.y * other.y
def cross(self, other):
return self.x * other.y - self.y * other.x
# 示例
p1 = Point(1, 2)
v1 = Vector(3, 4)
v2 = Vector(5, 6)
print("点积:", v1.dot(v2)) # 输出: 39
print("叉积:", v1.cross(v2)) # 输出: -2
实际应用[编辑 | 编辑源代码]
1. 碰撞检测[编辑 | 编辑源代码]
在游戏开发中,通过向量叉积判断点是否在多边形内。
2. 路径规划[编辑 | 编辑源代码]
机器人导航中,向量表示移动方向和速度,点表示目标位置。
3. 图形渲染[编辑 | 编辑源代码]
计算光照时,使用点积确定光线与表面法线的夹角。
总结[编辑 | 编辑源代码]
- 点描述位置,向量描述方向和大小。
- 向量运算(加法、点积、叉积)是计算几何的核心工具。
- 实际应用广泛,包括图形学、游戏开发和机器人学。
通过掌握点与向量的概念,可以为学习更复杂的几何算法(如凸包、线段相交)打下坚实基础。