gpt4 book ai didi

java - 如何在java3D中使用MouseListener和MouseMotionListener来旋转3D对象?

转载 作者:行者123 更新时间:2023-12-01 05:07:31 25 4
gpt4 key购买 nike

我正在 java swing 中制作桌面应用程序。我使用 PointArray[] 从 2D 图像制作了 3D 图像。现在我想使用 MouseListener 和 MouseMotionListener 旋转图像。我使用 MouseRotate 对象来旋转 myImage,但它对此效果不佳,MouseRotate 以原点(0,0,0)旋转图像。但我想使用图像的中心点旋转图像。表示使用中心点而不是原点旋转图像。那么,我该怎么做呢?

最佳答案

嗯,没有代码很难判断,但我认为你可以设置一个变换矩阵并用它来旋转它。假设图像面向屏幕正面,您可以尝试如下操作:

public void mouseDragged(MouseEvent e)
{
int dx = e.getX() - x; //x should be a global variable
int dy = e.getY() - y; //same applies here
x = e.getX(); //to set x for the next update loop
y = e.getY();
double rotation = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
Transform3D transform = new Transform3D();
Matrix3d matrix = new Matrix3d();
transformG.getTransform(transform); //assuming the TransformGroup your image is in is transformG
transform.getRotationScale(matrix);
transform.rotZ(rotation);
transformG.setTransform(transform);
}

如果您愿意,您可以设置不同的旋转量,但这应该给您一个想法

关于java - 如何在java3D中使用MouseListener和MouseMotionListener来旋转3D对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495841/

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