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

如何用Three.js求解垂直于AB线的D、E点坐标?

用Three.js找到垂直于AB线的D、E点

因为你的三个点都在XY平面(Z=0),可以通过以下步骤快速实现:

  • 步骤1:计算AB方向向量
    用B点坐标减去A点坐标,得到从A指向B的向量ab:

    const ab = new THREE.Vector3().subVectors(B, A);
    
  • 步骤2:生成垂直于AB的向量
    由于所有点都在XY平面,我们可以利用Z轴单位向量(0,0,1)和ab做叉乘,直接得到垂直于AB的向量:

    const perpendicular = new THREE.Vector3().crossVectors(ab, new THREE.Vector3(0, 0, 1));
    

    叉乘的结果会是一个在XY平面内、与AB完全垂直的向量。

  • 步骤3:归一化垂直向量
    把垂直向量归一化(长度变为1),这样后续可以灵活控制D、E到中点C的距离:

    perpendicular.normalize();
    
  • 步骤4:计算D、E点坐标
    设定你想要的D、E到C的距离(比如distance = 5),然后从中点C出发,分别向垂直向量的正负方向移动对应距离,得到D和E:

    const distance = 5; // 可根据需求调整
    const D = new THREE.Vector3().copy(C).add(perpendicular.clone().multiplyScalar(distance));
    const E = new THREE.Vector3().copy(C).sub(perpendicular.clone().multiplyScalar(distance));
    

补充说明

  • 如果你不需要对称的D、E,只需要其中一个点,只保留对应的add或sub操作即可。
  • 因为所有点的Z值都是0,最终得到的D、E的Z值也会是0,符合你的场景需求。

内容的提问来源于stack exchange,提问作者Patryk Janik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:24:20