首页 > 解决方案 > Java如何使图形对象朝其面对的方向移动

问题描述

在过去的几周里,我一直在尝试解决我遇到的三角问题。我需要制作一个 Java.awt 图形图像,该图像是用 USB 操纵杆的输入 x 和 y 绘制的,朝着它当前面对的方向移动,我得到了旋转,但我需要找出如何制作该moveForward()功能。

多一点背景是,目前我想使用操纵杆x 轴来转动图像。我尝试使用x = speed * sin(angle)and y = speed * cos(angle)。操纵杆也是罗技制造的,我正在尝试制作FRC(First Robotics Competition)机器人模拟器。

基本上下图显示了我的想法。我希望机器人向上、向下、向左和向右移动,并且在任何给定的旋转中它都可以朝着该旋转移动

理想图像函数

如果有人可以提供帮助,那就太棒了。

请注意...我再次在 Java 中执行此操作,并且我已经尝试修复此问题 2 周。

如果需要更多代码,请评论

标签: javaanimationmathawttrigonometry

解决方案


这类问题的一般方法是使用方向向量。此向量用于跟踪对象的航向。

旋转对象:只需使用新角度旋转矢量。

移动对象:将向量乘以当前速度(可以是恒定的)。最后将向量添加到对象的位置以获得新位置。像这样:

newPosition = direction.multiply(speed).add(position)

然后在新位置和旋转处绘制对象。


边注:

将向量与标量相乘就是v.x*scalarv.y*scalar。添加只是v.x+a andv.y+b`。所以:

newPosition.x = direction.x * speed + position.x;
newPosision.y = direction.y * speed + position.y;

推荐阅读