Math 旋转二维空间中的对象

Math 旋转二维空间中的对象,math,javafx,2d,formula,Math,Javafx,2d,Formula,我正在寻找在2D空间中旋转对象的解决方案。我有道理 坐标X,Y,我需要把这个物体绕着中心的物体移动一段距离。我正在使用javafx。我需要一些 这就是公式。也许我必须用一些罪和因来扭转,但我不知道如何。谢谢您的帮助。您可以向正在旋转的对象的变换列表中添加: double x = /* x-coordinate for center of rotation */ ; double y = /* y-coordinate for center of rotation */ ; double angl

我正在寻找在2D空间中旋转对象的解决方案。我有道理 坐标X,Y,我需要把这个物体绕着中心的物体移动一段距离。我正在使用javafx。我需要一些 这就是公式。也许我必须用一些罪和因来扭转,但我不知道如何。谢谢您的帮助。

您可以向正在旋转的对象的变换列表中添加:

double x = /* x-coordinate for center of rotation */ ;
double y = /* y-coordinate for center of rotation */ ;
double angle = /* angle in degrees */ ;

Rotate rotate = new Rotate(angle, x, y);
nodeToRotate.getTransforms().add(rotate);

旋转中心的坐标必须与正在旋转的节点使用的坐标系相同。

旋转向量时
(x,y)
(连接中心和点的线) 新坐标将是
(x',y')
,并通过

x'=x*cos(角度)-y*sin(角度)

y'=x*sin(角度)+y*cos(角度)


因为这里的y坐标是颠倒的(即正向下),所以您必须用
-y

替换
y
,非常感谢您的回复,但它仍然不起作用。我有一个物体叫船。它有坐标X和坐标Y。我需要我的物体以XY为中心旋转。中心对象坐标是x300和y300。由于中心从(0,0)移动到(300300),所以将
X
Y
替换为
(X-300)
(Y-300)
,现在由于Y轴被反转,它变成了
(300-Y)
@TomášZachoval,正如我的回答中所说的,您所需要的就是
ship.getTransforms()。添加(新的旋转)(angle,300300));
。我很抱歉,但可能理解得太慢了。请你用代码让我停下来好吗?公共静态无效turnVithShip(ForeginShip ship,double dgr){double x=ship.getPicture().getLayoutX()+338;double y=ship.getPicture().getLayoutY()+308;double nx=x*Math.cos(Math.toRadians(dgr))-y*Math.sin(Math.toRadians(dgr));double ny=x*Math.sin(Math.toRadians(dgr))+x*Math.cos(Math.toRadians(dgr));ship.getPicture().setLayoutX(nx);ship.getPicture().setLayoutY(ny);}@TomášZachoval我认为James D提供的答案更简单明了:)是的,谢谢你们,我相信。但是我不知道它是怎么用的。我在船上有新方法吗?因为我不能使用getTransforms()来发货,我也不知道为什么?@TomášZachoval如果您想为您的船使用
getTransforms()
,您需要将船设置为
节点的类型,请参阅