我目前正在使用javafx 8进行3d可视化项目。

由于旋转摄像机时点太多会很慢,因此我决定隐藏场景中未显示的那些点(本例中为3d框)。

问题是当我调用box.localToScreen(0,0,0)时,坐标有时似乎不正确。例如,有时该点仍显示在屏幕上,但是localToScreen(0,0,0)返回的坐标可以为负。我错过了什么吗?还是我滥用这种方法?

这是我有的一些代码:

// where I build these boxes from points
for (point p : mergedList) {
    Box pointBox = new Box(length, width, height);

    boxList.add(pointBox);
    pointBox.setTranslateX(p.getX());
    pointBox.setTranslateY(p.getY());
    pointBox.setTranslateZ(p.getZ());

...

// where I call localToScreen to get its coordinates
for (Box b : boxList) {
    Point2D p = b.localToScreen(0, 0, 0); // I have also tried b.localToScreen(b.getTranslateX(), b.getTranslateY(), b.getTranslateZ())
    double x = p.getX(), y = p.getY();
    System.out.println(x);
    System.out.println(y);
}


提前致谢。

最佳答案

我也在寻找一些localToScreen和screenToLocal问题的解决方案。
对于您的情况,如果使用多个监视器,则只有主监视器为您提供正坐标。辅助监视器将为您提供负坐标。
您是否尝试使用localToScene而不是localToScreen?

09-10 12:36