主题
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
计算射线上距离给定点最近的点,并返回该点的坐标。
| 参数 | 类型 | 说明 |
|---|---|---|
point | Vector3 |
返回值 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
计算给定点到射线的最短距离。
| 参数 | 类型 | 说明 |
|---|---|---|
point | Vector3 |
返回值 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)属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Origin | Vector3 | - | 射线的起点坐标。 |
Direction | Vector3 | - | 射线的方向向量。 |
Unit | Ray | - | 返回方向归一化后的新射线,其方向向量长度为1。(只读) |
