Cesium.Ray
是一个用于射线的 JavaScript 类,它表示了一个射线,由其发射点和方向组成。
射线是一个重要概念,它经常在计算机图形学和计算机视觉中出现,常被用于求交、碰撞检测、路径追踪等计算中。
在 CesiumJS 中,Cesium.Ray
提供了一系列方法,可用于进行射线相关的计算,如求交等。
创建一个 Cesium.Ray
对象需要指定两个参数:射线的起点和方向。可以通过以下代码创建一个射线:
var origin = new Cesium.Cartesian3(0, 0, 0);
var direction = new Cesium.Cartesian3(0, 0, 1);
var ray = new Cesium.Ray(origin, direction);
上述代码创建了一个起点为 (0, 0, 0)
,方向为 (0, 0, 1)
的射线。
Cesium.Ray
对象提供了访问射线起点和方向的方法,分别为 origin
和 direction
属性。例如,要获取上述代码中创建的射线的起点和方向,可以分别使用以下代码:
var origin = ray.origin;
var direction = ray.direction;
Cesium.Ray
对象提供了以下方法:
atDistance(distance: Number, result: Cartesian3) -> Cartesian3
返回沿射线指定距离处的点。例如,要获取上述代码中创建的射线沿其方向方向 10 个单位长度处的点,可以使用下面的代码:
var result = new Cesium.Cartesian3();
ray.atDistance(10, result);
此时 result
将等于 (0, 0, 10)
。
getPoint(t: Number, result: Cartesian3) -> Cartesian3
返回射线上指定偏移量处的点。t
参数表示偏移量,如果为 0,则返回起点;如果为正数,则返回沿射线方向的点;如果为负数,则返回起点相反方向的点。例如,要获取上述代码中创建的射线沿其方向方向 10 个单位长度处的点,可以使用下面的代码:
var result = new Cesium.Cartesian3();
ray.getPoint(10, result);
此时 result
将等于 (0, 0, 10)
。
intersectPlane(plane: Plane, result: Cartesian3) -> Cartesian3
返回射线与平面的交点。plane
参数表示平面,result
参数表示交点。如果射线和平面不相交,则返回 undefined
。例如,要获取上述代码中创建的射线与坐标系 XY 平面的交点,可以使用下面的代码:
var result = new Cesium.Cartesian3();
var plane = new Cesium.Plane(Cesium.Cartesian3.UNIT_Z, 0);
ray.intersectPlane(plane, result);
此时如果射线确实与坐标系 XY 平面相交,则 result
将为交点。
intersectionSphere(center: Cartesian3, radius: Number, result: Array) -> Array
返回射线与球的交点。center
参数表示球心,radius
参数表示球的半径,result
参数表示交点数组。如果射线不与球相交,则返回空数组。例如,要获取上述代码中创建的射线与球的交点,可以使用下面的代码:
var result = [];
var center = new Cesium.Cartesian3(0, 0, 10);
var radius = 5;
ray.intersectionSphere(center, radius, result);
此时如果射线确实与球相交,则 result
将为交点数组。
toString() -> String
返回射线的字符串表示。例如,要获取上述代码中创建的射线的字符串表示,可以使用下面的代码:
var str = ray.toString();
此时字符串 str
的值将为 (0, 0, 0) + t(0, 0, 1)
。