首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三维盒在JavaFx中的定位

三维盒在JavaFx中的定位
EN

Stack Overflow用户
提问于 2016-02-08 14:53:59
回答 1查看 1.2K关注 0票数 1

我是JavaFx 3d建模的初学者。我试着在房间里建立一个盒子的三维模型。我有盒子的尺寸和每个盒子左上角的和弦。我尝试用setTranslateX()设置和弦,但是结果不正确。下面是我的代码的一部分,我尝试设置这些和弦:

代码语言:javascript
复制
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)

这就是我得到的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35272544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档