You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Three.js平面内指定X、Y坐标点的Z坐标?

求解平面内已知X、Y坐标点的Z值

我已经通过三个点计算出3D平面,代码如下:

const { Vector3, Plane } = require('three')

const points = [new Vector3(0, 0, 0), new Vector3(1, 0, 1), new Vector3(1, 2, 0)]
const plane = new Plane().setFromCoplanarPoints(...points)

现在需要获取该平面内第四个点(已知X=0.75,Y=0.75,求Z值)的坐标,但尝试用projectPoint方法未得到预期结果:

const targetPoint = new Vector3()
plane.projectPoint(new Vector3(0.75, 0.75, 0), targetPoint)

/* 返回结果,X、Y被改变,不符合需求
Vector3 {
  x: 0.5833333333333334,
  y: 0.8333333333333334,
  z: 0.16666666666666666
}
*/

正确解法:利用平面方程计算Z值

Three.js中Plane的定义为 normal.x * x + normal.y * y + normal.z * z + constant = 0,通过这个方程可以解出固定X、Y时的Z值:

const x = 0.75;
const y = 0.75;
// 从平面方程推导Z的计算公式
const z = -(plane.normal.x * x + plane.normal.y * y + plane.constant) / plane.normal.z;
const targetPoint = new Vector3(x, y, z);

// 可选:验证点是否在平面上,结果应趋近于0
console.log(plane.distanceToPoint(targetPoint));

说明

projectPoint方法的作用是将输入点垂直投影到平面上,因此会改变X、Y坐标以满足垂直条件,这和我们固定X、Y求Z的需求不符,所以需要用平面方程直接计算。

TurfJS主要面向2D地理空间数据处理,对于3D平面的这类计算没有适配的原生方法,推荐使用上述Three.js的方案。

内容的提问来源于stack exchange,提问作者João Pimentel Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:55:25