gpt4 book ai didi

java - 为什么 JavaFX 中的 Transform 看起来像 3D?

转载 作者:行者123 更新时间:2023-11-30 08:28:54 25 4
gpt4 key购买 nike

看起来像Transform JavaFX 中的类包含 3 个坐标(x、y 和 z)。

如果我旋转出平面会怎样?它会做透视吗?

更新

实际上,即使旋转出平面 1 度,物体也会消失。为什么?

public class TransformTry extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Drawing Operations Test");
Group root = new Group();
Canvas canvas = new Canvas(300, 250);
//canvas.getTransforms().add(new Rotate(1, new Point3D(0, 1, 0))); // square disappears
canvas.getTransforms().add(new Rotate(1, new Point3D(0, 0, 1))); // rotates correctly
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.strokeRect(-50, -50, 100, 100);
root.getChildren().add(canvas);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}


}

更新 2

我找到了一种使用透视相机的方法,但它的工作方式很奇怪:它总是从窗口中心上方看起来,因此平面外对象会随着窗口大小的改变而变化:

public class ShapeTry01 extends Application {

@Override
public void start(Stage stage) throws Exception {



Shape shape = new Rectangle(100,100,50,50);
shape.setStroke(Color.RED);
shape.setFill(null);

Group group = new Group();
group.getChildren().add(shape);
//group.getTransforms().add(new Rotate(10, new Point3D(0, 0, 1)));
group.getTransforms().add(new Rotate(10, new Point3D(0, 1, 0)));

PerspectiveCamera camera = new PerspectiveCamera();
camera.setFieldOfView(45);

Scene scene = new Scene(group);
scene.setCamera( camera );

stage.setTitle("ShapeTry01");
stage.setScene(scene);
stage.show();

}

public static void main(String[] args) {
launch(args);

}


}

最佳答案

JavaFX 2 是从 3D 开始的,因此很多 API 都提到了 z 坐标。但真正有用的3D只是在JavaFX8(明年发布)中加入的。

您可以在此处查看文档:http://docs.oracle.com/javafx/8/3d_graphics/jfxpub-3d_graphics.htm并尝试开发人员预览:https://jdk8.java.net/download.html

关于java - 为什么 JavaFX 中的 Transform 看起来像 3D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com