java - Java如何使图形对象朝其面对的方向移动
问题描述
在过去的几周里,我一直在尝试解决我遇到的三角问题。我需要制作一个 Java.awt 图形图像,该图像是用 USB 操纵杆的输入 x 和 y 绘制的,朝着它当前面对的方向移动,我得到了旋转,但我需要找出如何制作该moveForward()
功能。
多一点背景是,目前我想使用操纵杆x 轴来转动图像。我尝试使用x = speed * sin(angle)
and y = speed * cos(angle)
。操纵杆也是罗技制造的,我正在尝试制作FRC(First Robotics Competition)机器人模拟器。
基本上下图显示了我的想法。我希望机器人向上、向下、向左和向右移动,并且在任何给定的旋转中它都可以朝着该旋转移动。
如果有人可以提供帮助,那就太棒了。
请注意...我再次在 Java 中执行此操作,并且我已经尝试修复此问题 2 周。
如果需要更多代码,请评论
解决方案
这类问题的一般方法是使用方向向量。此向量用于跟踪对象的航向。
旋转对象:只需使用新角度旋转矢量。
移动对象:将向量乘以当前速度(可以是恒定的)。最后将向量添加到对象的位置以获得新位置。像这样:
newPosition = direction.multiply(speed).add(position)
然后在新位置和旋转处绘制对象。
边注:
将向量与标量相乘就是v.x*scalar
和v.y*scalar
。添加只是v.x+a and
v.y+b`。所以:
newPosition.x = direction.x * speed + position.x;
newPosision.y = direction.y * speed + position.y;
推荐阅读
- java - Java 从 JSON 文件生成 jasperReport
- assembly - MIPS 程序集 (MARS) 中的 .align 指令
- reactjs - 如何在 react-data-grid 中隐藏列
- bash - 如何处理空间值 - Unix KSH 脚本
- sql - SQL - 需要像日期时间的在线离线状态
- google-bigquery - 如何为在 BigQuery 中创建的表选择分区?
- python - Pandas:要保存以包含 dtypes 的文件类型
- c# - 为什么这个布尔值不是线程安全的?
- c# - 将 A* 更新为跳转点搜索
- java - 构造函数 SomeClass() 已经在类 SomeClass 中定义