【发布时间】:2019-06-11 04:39:06
【问题描述】:
假设我有两个顶点,我想知道这两个顶点之间的 3D 角度。通过 3D 角度,我的意思是在每个三维平面上一个顶点与另一个顶点之间的角度,存储为
{ x, y, z }
function getAngleBetweenVertices(vert1, vert2){
return {
x: 0, // ?
y: 0, // ?
z: 0 // ?
}
}
// Classes
class Vertex {
constructor(position){
this.position = {
x: 0,
y: 0,
z: 0,
...position
};
}
}
// Init
let vert1 = new Vertex({ x: 1, y: 0, z: 1 });
let vert2 = new Vertex({ x: 0, y: 1, z: 1 });
let angle = getAngleBetweenVertices(vert1, vert2);
console.log("angle ", angle);
例如,在上图中,我在一条连接三角形上两个顶点的线段上进行了追踪。应该可以求出x、y、z轴上两个顶点位置的夹角。
如何计算两个顶点之间的三维角度?
【问题讨论】:
-
在目前的状态下,这个问题可能因为不清楚(根据您的评论)而关闭,即使您也不清楚。你想达到什么目的?
-
this 被链接为可能的重复候选者,但我无法破译那里的 python 并识别解决方案的正确 JS 版本。
-
@RobbyCornelissen 从一个顶点到另一个顶点的角度。
-
当我第一次发布这个问题时,我使用的术语是“矢量”而不是“3D 角度”,这是不正确的。我正在寻找所有三个平面上 3D 空间中两个位置之间的角度。
-
@Spektre 获取角度的目的是然后构建一个简单的(不完美但快速)函数,用于确定光线与 tri 碰撞时应该反弹的位置。通过知道从 tri 的一个顶点到下一个顶点的角度,对于所有三个边缘,我相信我可以计算出一个非常快速且有点准确的向量来确定光线应该反弹的位置。最终,为了好玩,我正在努力在光线追踪系统中找出我自己的反射光版本。
标签: javascript algorithm geometry