跳转到内容

点与向量

来自代码酷

点与向量是计算几何中最基础的概念,用于描述空间中的位置和方向。它们在计算机图形学、物理模拟、机器人路径规划等领域有广泛应用。本章将详细讲解它们的数学定义、基本运算及实际应用。

数学定义[编辑 | 编辑源代码]

点(Point)[编辑 | 编辑源代码]

在二维或三维空间中,表示一个具体的位置,通常用坐标表示:

  • 二维点:P=(x,y)
  • 三维点:P=(x,y,z)

向量(Vector)[编辑 | 编辑源代码]

向量表示方向和大小(长度),由起点和终点确定。若起点为原点,则向量与点坐标相同。

  • 二维向量:v=(vx,vy)
  • 三维向量:v=(vx,vy,vz)

坐标表示
方向和大小
位置
向量
位移

基本运算[编辑 | 编辑源代码]

向量加法[编辑 | 编辑源代码]

两个向量相加的结果是对应分量相加: a+b=(ax+bx,ay+by)

向量减法[编辑 | 编辑源代码]

向量减法表示从ab的位移: ba=(bxax,byay)

点积(Dot Product)[编辑 | 编辑源代码]

点积用于计算两个向量的夹角或投影长度: ab=axbx+ayby=|a||b|cosθ

叉积(Cross Product)[编辑 | 编辑源代码]

叉积用于计算垂直向量(仅限三维)或面积(二维): 二维:a×b=axbyaybx 三维:a×b=(aybzazby,azbxaxbz,axbyaybx)

代码实现[编辑 | 编辑源代码]

以下是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. 图形渲染[编辑 | 编辑源代码]

计算光照时,使用点积确定光线与表面法线的夹角。

总结[编辑 | 编辑源代码]

  • 点描述位置,向量描述方向和大小。
  • 向量运算(加法、点积、叉积)是计算几何的核心工具。
  • 实际应用广泛,包括图形学、游戏开发和机器人学。

通过掌握点与向量的概念,可以为学习更复杂的几何算法(如凸包、线段相交)打下坚实基础。