Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js-绘制圆环,但无法理解定义它的方程式_Three.js - Fatal编程技术网

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);