我是JavaFx 3d建模的初学者。我试着在房间里建立一个盒子的三维模型。我有盒子的尺寸和每个盒子左上角的和弦。我尝试用setTranslateX()设置和弦,但是结果不正确。下面是我的代码的一部分,我尝试设置这些和弦:
for (int i = 0; i < Main.load.size(); i++) {
Load l=Main.load.get(i);
Box sphere = new Box(l.getLength()*10, l.getWidth()*10, l.getHeight()*10);
sphere.setTranslateX(l.getX()*10);
sphere.setTranslateY(l.getY()*10);
sphere.setTranslateZ(l.getZ()*10);
PhongMaterial m = new PhongMaterial();
m.setDiffuseColor(new Color(Math.random(),Math.random(),Math.random(),1));
m.setSpecularColor(Color.BLACK);
sphere.setMaterial(m);
root.getChildren().add(sphere);
}我希望有人能帮我。
下面是一个示例:
尺寸:蓝色(30,50,50)粉红色(10,10,20)
位置:蓝色(0,0,0)粉红色(30,0,0)
这就是我得到的
发布于 2016-02-09 03:24:44
当您对JavaFX 3D对象(如Box )进行转换时,您需要在任意轴上计算对象宽度的一半。Box的默认位置是在原点居中,这意味着Box对象的中心位于0、0、0。您的宽度为30 * 10,但您的translateX转换为0*10=0。因此,蓝色框的最右边是X=150 (300 / 2.0 = 150)。您的粉红盒有一个translateX of 10*30=300。粉红框的中心将被转换为300,这意味着最左边的边缘将是300 -(宽度/2.0)= 300 - (50) = 250。
https://stackoverflow.com/questions/35272544
复制相似问题