在 JavaFx 中定位 3d 框
Positioning of 3d boxes in JavaFx
我是 JavaFx 3d 建模的初学者。我正在尝试在房间中创建盒子的 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)
当您平移像 Box 这样的 JavaFX 3D 对象时,您需要沿任何轴计算对象宽度的一半。 Box 的默认位置是以原点为中心,这意味着 Box 对象的中心位于 0,0,0。您的宽度是 30 * 10,但您的 translateX 转换为 0*10=0。所以你的蓝色盒子最右边的边缘将是 X=150 (300 / 2.0 = 150)。你的 Pink Box 的 translateX 为 10*30=300。粉红色框的中心将转换为 300,这意味着最左边的边缘将位于 300 - (width/2.0) = 300 - (50) = 250.
我是 JavaFx 3d 建模的初学者。我正在尝试在房间中创建盒子的 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)
当您平移像 Box 这样的 JavaFX 3D 对象时,您需要沿任何轴计算对象宽度的一半。 Box 的默认位置是以原点为中心,这意味着 Box 对象的中心位于 0,0,0。您的宽度是 30 * 10,但您的 translateX 转换为 0*10=0。所以你的蓝色盒子最右边的边缘将是 X=150 (300 / 2.0 = 150)。你的 Pink Box 的 translateX 为 10*30=300。粉红色框的中心将转换为 300,这意味着最左边的边缘将位于 300 - (width/2.0) = 300 - (50) = 250.