Three.js-绘制圆环,但无法理解定义它的方程式
我试着做一个动画,它代表一个球体,相机绕着这个球体旋转,我在上面画了一个圆(用Three.js-绘制圆环,但无法理解定义它的方程式,three.js,Three.js,我试着做一个动画,它代表一个球体,相机绕着这个球体旋转,我在上面画了一个圆(用THREE.TorusGeometry绘制) 然后,我在当前点上投影一个平面,该点由从摄影机位置到原点的方向定义(0,0,0) 对于由y=0和x²+z²=1定义的圆(即定义为Oxz平面=球体赤道平面的圆),可以在以下位置看到结果: 正如你所看到的,平面的坐标画得很好,但我不明白为什么黄色的圆圈没有画在Oxz平面上(在这个链接中,你可以看到它在Oxy平面上) 在矩阵乘法之前,我在环面向量上面定义了: var coor
THREE.TorusGeometry
绘制)
然后,我在当前点上投影一个平面,该点由从摄影机位置到原点的方向定义(0,0,0)
对于由y=0
和x²+z²=1
定义的圆(即定义为Oxz平面=球体赤道平面的圆),可以在以下位置看到结果:
正如你所看到的,平面的坐标画得很好,但我不明白为什么黄色的圆圈没有画在Oxz平面上(在这个链接中,你可以看到它在Oxy平面上)
在矩阵乘法之前,我在环面向量上面定义了:
var coordTorus = new THREE.Vector3(radius*Math.cos(timer), 0, radius*Math.sin(timer));
i、 e,通过x'²+z'²=1
和y'=0
(选项2)。在这种情况下,我没有得到黄色圆圈的有效结果,它被绘制到Oxy平面,而不是像预期的那样绘制到Oxz平面
为了得到一个好的结果,我必须在局部平面上定义x'²+y'²=1
和z'=0
,但我不明白为什么
如果有人能告诉我解释的话?很难从所有代码中提取出您的问题所在。我把事情清理干净,以不同的方式解决,我认为显示了你想要的 我没有旋转所有对象,而是只旋转了摄影机,这似乎比您的解决方案简单得多:
/**
* Rotate camera
*/
function rotateCamera() {
// For camera rotation
stepSize += 0.002;
alpha = 2 * Math.PI * stepSize;
if (alpha > 2 * Math.PI) {
stepSize = 0;
}
// Rotate camera around a circle
camera.position.x = center.x + distance * Math.cos(alpha);
camera.position.z = center.y + distance * Math.sin(alpha);
// Camera should look at center
camera.lookAt(new THREE.Vector3(0, 0, 0));
}
然后我将切线平面添加到摄影机而不是场景:
所以它会随着相机旋转
camera.add(plane);