java - build 雷达

标签 java math vector angle

我想尝试用 Java OpenGL 构建雷达。基本上,在该方法中,您传递玩家的当前位置、玩家面对的角度以及敌人的位置。如果敌人就在正前方,那么红点(象征敌人)应该在圆圈(雷达)的顶部,可以说是0度。如果直接向右,红点将是 90 度,等等。基本上,我尝试找到直接在玩家前方射出的 vector 与从玩家到敌人的 vector 之间的角度。我到底该怎么做呢?我环顾四周并找到了 atan2() 的建议,但还不确定如何使用它。如果有更快、更有效的做事方式,也请告诉我。

编辑:我使用了绘制点的方法,而不是点积和余弦等,并且我使用玩家的位置作为原点。但是,如果距离大于使用距离公式选择的数字 70,我如何使敌方点出现在雷达边缘?任何低于 70 的东西都会在雷达范围内,但任何超过 70 的敌人,我希望敌人只是在雷达边缘盘旋,而不是让敌人的点消失。

最佳答案

假设你的玩家和敌人在一些 2D 空间(甚至 3D 空间,但他们在 2D 平面上移动,例如水平地面)中具有坐标,我认为更简单的方法是直接在玩家/敌人实体的位置到雷达上,然后根据玩家当前相对于正北面的角度,以玩家为原点在雷达上应用旋转变换。

关于java - build 雷达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780042/

相关文章:

java - POJO 中的 SqlResultSetMapping

c++ - vector push_back move 实现

c++ - 如何在 C++ 中对 STL 迭代器进行平均操作

java - JList 填充了不显示任何内容的 vector

java - 记录可用/必需的 Java 属性文件内容的最佳实践

java - maven-2 可以帮助我创建 Java 客户端-服务器应用程序吗?

c - 如何在mergeSort中将Infinity指示为哨兵卡?

javascript - 查找对象中 3 个键的所有组合

c - 将链表拆分为半个 C 编程

java - 安卓.view.InflateException : Binary XML file line #6: Error inflating class fragemnt