Skip to content

Ray ​

Ray 表示三维空间中的射线,由起点和方向向量定义。它提供最近点计算和点到射线距离的几何方法,常用于空间查询和碰撞检测前的数学预处理。

概览 ​

Ray 表示三维空间中的射线,由起点和方向向量定义。它提供最近点计算和点到射线距离的几何方法,常用于空间查询和碰撞检测前的数学预处理。

可通过 Ray.New(origin, direction) 构造

代码示例 ​

构造射线并计算最近点与距离

lua
-- @runtime client
-- 构造射线:从原点出发,方向为 (1, 0, 0)
local ray = Ray(Vector3(0, 0, 0), Vector3(1, 0, 0))

-- 计算点 (2, 3, 0) 到射线的最近点
local closest = ray:ClosestPoint(Vector3(2, 3, 0))
print("最近点: " .. tostring(closest))

-- 计算点 (2, 3, 0) 到射线的距离
local dist = ray:Distance(Vector3(2, 3, 0))
print("距离: " .. tostring(dist))

-- 获取射线的单位方向向量
local unitDir = ray.Unit
print("单位方向: " .. tostring(unitDir))

函数 ​

ClosestPoint ​

签名:ClosestPoint(point: Vector3) -> Vector3

计算射线上距离给定点最近的点,并返回该点的坐标。

参数类型说明
pointVector3

返回值 Vector3

计算射线上离目标点最近的点

lua
-- @runtime client
-- 构造射线:起点 (0,0,0),方向 (1,0,0)
local ray = Ray(Vector3(0, 0, 0), Vector3(1, 0, 0))
-- 目标点 (2, 3, 0)
local point = Vector3(2, 3, 0)
-- 获取射线上最近的点
local closest = ray:ClosestPoint(point)
print("最近点坐标: ", closest.x, closest.y, closest.z)

Distance ​

签名:Distance(point: Vector3) -> Float

计算给定点到射线的最短距离。

参数类型说明
pointVector3

返回值 Float

计算点到射线的最短距离

lua
-- @runtime client
-- 构造射线:起点 (0,0,0),方向 (0,1,0)
local ray = Ray(Vector3(0, 0, 0), Vector3(0, 1, 0))
-- 目标点 (3, 4, 0)
local point = Vector3(3, 4, 0)
-- 获取点到射线的最短距离
local dist = ray:Distance(point)
print("点到射线的最短距离: ", dist)

属性 ​

名称类型默认值说明
OriginVector3-射线的起点坐标。
DirectionVector3-射线的方向向量。
UnitRay-返回方向归一化后的新射线,其方向向量长度为1。(只读)