对于three.js中的相机移动,我需要计算点C
,以便将相机从点A
移动到特定距离dist
到点B
。
答案 0 :(得分:4)
three.js有很方便的方法。
假设a
,b
和c
是THREE.Vector3()
的实例,
a.set( 2, 1, 4 );
b.set( 9, 4, 2 );
c.subVectors( a, b ).setLength( dist ).add( b );
three.js r.91
答案 1 :(得分:1)
所以你需要计算点C
的坐标,因为它位于距离B
给定距离的A
和B
之间的线上?使用以下步骤非常简单:
B
到A
的向量(这只是A - B
)。B
。这是一个简短的javascript示例:
const A = [2, 1, 4];
const B = [9, 4, 2];
const dist = 3;
function addVectors(v1, v2) {
return v1.map((x, i) => x + v2[i]);
}
function scalarMultiply(v, c) {
return v.map(x => x*c);
}
function getLength(v) {
return Math.hypot(...v);
}
const vecB2A = addVectors(A, scalarMultiply(B, -1)); // Step 1
const normB2A = scalarMultiply(vecB2A, 1/getLength(vecB2A)); // Step 2
const distB2A = scalarMultiply(normB2A, dist); // Step 3
const C = addVectors(B, distB2A); // Final step
console.log(C);

答案 2 :(得分:0)
点C等于点B减去'dist'乘以方向为AB的单位矢量。所以这很容易:
从A到B的向量v相等(xB-xA,yB-yA,zB-zA)/距离(AB)
然后C = B - d * v其中d是你想要C的B的距离。