Cesium.Ray 知识详解,示例代码

在这里插入图片描述

查看本专栏API内容目录

vue+cesium 示例教程200+目录


Cesium.Ray 是 CesiumJS 中的一个核心类,用于表示三维空间中的一条无限射线。在地理信息系统(GIS)、三维可视化和碰撞检测等场景中,射线常被用于模拟视线、激光扫描或计算物体间的相交关系。以下是关于 Cesium.Ray 的详细介绍:

一、基本概念

Cesium.Ray 表示从一个起点(origin)沿特定方向(direction)无限延伸的直线。其数学表达式为:
[
P(t) = \text{origin} + t \times \text{direction} \quad (t \geq 0)
]
其中,t 是一个非负实数,代表从起点沿方向延伸的距离。

二、核心属性与方法

属性
  1. origin

    • 类型:Cesium.Cartesian3
    • 描述:射线的起点(世界坐标系中的三维坐标点)。
  2. direction

    • 类型:Cesium.Cartesian3
    • 描述:射线的方向向量(通常需要归一化,即长度为 1
下面是一个使用 `Cesium.Plane.projectPointOntoPlane` 方法的示例,该示例演示如何将一个三维球体上的点投影到一个平面上: ``` var viewer = new Cesium.Viewer('cesiumContainer'); // 创建一个球体 var sphere = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), ellipsoid: { radii: new Cesium.Cartesian3(100000.0, 100000.0, 100000.0), material: Cesium.Color.RED.withAlpha(0.5) } }); // 创建一个平面 var plane = new Cesium.Plane(Cesium.Cartesian3.UNIT_Z, 0.0); // 监听鼠标移动事件 var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function(event) { // 获取鼠标点击的位置 var ray = viewer.camera.getPickRay(event.endPosition); var intersection = viewer.scene.globe.pick(ray, viewer.scene); if (intersection) { // 投影点到平面上 var projectedPoint = new Cesium.Cartesian3(); Cesium.Plane.projectPointOntoPlane(intersection, plane, projectedPoint); // 创建一个点表示投影点 viewer.entities.add({ position: projectedPoint, point: { pixelSize: 10, color: Cesium.Color.YELLOW } }); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); ``` 这个示例中,首先创建了一个三维球体和一个平面。球体的位置是 (-75.59777, 40.03883),半径是 100000 米,颜色是红色。平面的法向量是 z 轴正方向,平面上的一点是原点。然后,监听鼠标移动事件,在鼠标点击的位置创建一个点,并将这个点投影到平面上。具体来说,当鼠标左键点击时,我们会获取鼠标点击位置的地理坐标,并将其投影到平面上。然后,我们在投影点的位置创建一个点,用黄色标记。这个示例演示了如何使用 `Cesium.Plane.projectPointOntoPlane` 方法将一个点投影到一个平面上,以及如何在三维场景中使用该方法。
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值