【问题标题】:Java How to make a graphics object move in its facing directionJava如何使图形对象朝其面对的方向移动
【发布时间】:2020-02-22 17:20:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java animation math awt trigonometry


    【解决方案1】:

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

    要旋转对象:只需 rotate 使用新角度的向量。

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

    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;
    

    【讨论】:

    • 听起来可以,但我该如何使用 Vectors?在我一直使用数组之前,我从未使用过它们。
    • 矢量数学并不难,但胜利在于它更容易推理,而且您不必搞乱复杂的三角函数。只需跟踪方向向量。查看thesequestions 获取一些示例
    • 谢谢,我知道如何处理向量,我应该让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2014-06-21
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多