我遇到以下问题。我想在Java3D中绘制一个两个球体之间的圆柱体。两者都位于(-1,-1,-1)和(1,1,1)。
所以我写了以下方法:
public TransformGroup buildJoint(double sx,double sy,double sz,double ex,double ey,double ez)
{
TransformGroup transformGroup=new TransformGroup();
transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// Get the cylinder size
double cylinderSize=Math.sqrt((ex-sx)*(ex-sx)+(ey-sy)*(ey-sy)+(ez-sz)*(ez-sz));
// 1st Relocation for the cylinder size offset
Transform3D relocateT3D=new Transform3D();
Vector3d relocate=new Vector3d(0,cylinderSize/2,0);
relocateT3D.setTranslation(relocate);
//2nd Relocation to place the cylinder at the start point
Transform3D move3D=new Transform3D();
Vector3d move=new Vector3d(sx,sy,sz);
move3D.setTranslation(move);
move3D.mul(relocateT3D);
move3D.rotZ(-Math.PI/4.f); // Rotate the cylinder 45gr around Z axis
Transform3D roty3D=new Transform3D();
roty3D.rotY(-Math.PI/4.f); // Rotate the cylinder 45gr around Y axis
roty3D.mul(move3D);
transformGroup.setTransform(roty3D);
Cylinder cylinder=new Cylinder(0.05f,(float) cylinderSize);
transformGroup.addChild(cylinder);
return transformGroup;
}
我用以下方法调用此函数: TransformGroup joint = buildJoint(-1,-1,-1,1,1,1);
但有趣的是,不知何故,圆柱体的两端都不会在球体中间内部结束。存在约0.2弧度的不准确度。
有人知道这里会发生什么吗?