Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Javascript 如果我想要所有气缸';旋转后高度为固定值,如何计算原始高度?_Javascript_Rotation_Three.js - Fatal编程技术网

Javascript 如果我想要所有气缸';旋转后高度为固定值,如何计算原始高度?

Javascript 如果我想要所有气缸';旋转后高度为固定值,如何计算原始高度?,javascript,rotation,three.js,Javascript,Rotation,Three.js,我是WebGL和Three.js的新手。如果我希望旋转后所有圆柱体的高度都是一个固定值,我将如何计算原始高度 这是我想要的:我有几个圆柱体,我把每个圆柱体的原点作为底部的中心,圆柱体通过球体连接,圆柱体将根据参数旋转x、y和z。圆柱体高度为30,但旋转后y轴上的高度小于30。如果我希望y轴的高度在旋转后仍然是30,我应该怎么做?我需要在旋转前重新计算气缸高度,我能得到一些建议吗?非常感谢你的帮助。有人能帮忙吗?:) 绕y轴旋转无关紧要。您可以在两个不同的步骤中考虑旋转的其他两个组件,并将延伸应用

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

这是我想要的:我有几个圆柱体,我把每个圆柱体的原点作为底部的中心,圆柱体通过球体连接,圆柱体将根据参数旋转x、y和z。圆柱体高度为30,但旋转后y轴上的高度小于30。如果我希望y轴的高度在旋转后仍然是30,我应该怎么做?我需要在旋转前重新计算气缸高度,我能得到一些建议吗?非常感谢你的帮助。有人能帮忙吗?:)


绕y轴旋转无关紧要。您可以在两个不同的步骤中考虑旋转的其他两个组件,并将延伸应用两次

你能用三角函数吗?30=sin(θ)*开始高度高,但高度30是我在x方向旋转,然后在y方向旋转,然后在z方向旋转后想要的固定高度,触发函数会工作吗?该函数中的θ是偏离“高度”法线的角度,我不知道如何设置尺寸,但它应该工作。嗨,谢谢。但是如果圆柱体在x,y,z方向旋转,你知道怎么计算θ吗?有人能帮忙吗?我不知道该怎么解决它。仍在寻找解决方案。。
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 );