我是WebGL和Three.js的新手。如果我希望所有圆柱体的高度在旋转后都为固定值,那么如何计算原始高度?

这就是我想要的:我有几个圆柱体,并将每个圆柱体的原始点作为底部的中心,圆柱体通过球体连接,圆柱体将根据参数旋转x,y和z。圆柱体高度为30,但是旋转后y轴的高度小于30。如果希望旋转后y轴的高度仍为30,该怎么办?我需要在旋转之前重新计算圆柱体的高度,我可以如何获得一些建议吗?非常感谢您的帮助。有人可以帮忙吗? :)

var cyliderHeight = 30;

var cylinderGeometry = new THREE.CylinderGeometry( topRadius, botRadius, cyliderHeight, 16 );
cylinderGeometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, cyliderHeight/2, 0 ) );

var cylinder = new THREE.Mesh( cylinderGeometry, material );
cylinder.position.set( positionX, positionY, positionZ);

group.add( cylinder );
cylinder.rotation.x = NaturalIncrease  / 100000;
cylinder.rotation.y = year * 4 / 10000;
cylinder.rotation.z = NetOverseasMigration  / 100000;

var sphere = new THREE.Mesh( new THREE.SphereGeometry(topRadius, 20, 20), material );
var point = new THREE.Vector3( 0, cyliderHeight, 0 );
point.applyEuler( cylinder.rotation );
sphere.position.set( point.x + positionX, point.y + positionY, point.z + positionZ );

最佳答案

绕y轴的旋转无关紧要。您可以在两个不同的步骤中考虑旋转的其他两个分量,然后将伸长率应用两次。

10-04 22:07