【问题标题】:How to calculate which sector of a circle a given point is with custom sectors?如何计算给定点与自定义扇区的圆的哪个扇区?
【发布时间】:2021-11-28 08:32:22
【问题描述】:

所以我正在制作一个 TD 游戏,我可以在其中放置一把加特林枪,并且根据鼠标所在圆圈的哪个扇区,精灵和子弹路径会发生变化。

我的困难在于创建一个算法来告诉我我的鼠标在哪个扇区。

我的圆有 16 个扇区,半径为 300。每个圆弧的长度为 117.81。 从 (300,300) 扩展,我有一个精确的所有线坐标列表,所以我现在可以像这样绘制扇区: Circle

每当我的鼠标移动时,我都会使用鼠标侦听器来检测鼠标的坐标,所以我有一个“currentPoint”来检查它在哪个扇区内。 根据这些信息,谁能想出一种简单的方法来简单地返回鼠标当前所在扇区的整数?最好有点效率。

这是我考虑外观的两种方式: Two_Ideas

我确实看过这个 StackOverflow,它看起来像一个类似的问题:Efficiently find points inside a circle sector 我用 Java 实现了它,但如果没有向量,它似乎无法翻译,而且我对数学有点困惑,无法让它工作。

一段时间以来一直在尝试解决这个问题,我希望能在任何类型的实现方面提供任何帮助(不介意添加 Trig 计算),以及任何理解问题的帮助。 谢谢!!

【问题讨论】:

标签: java math geometry trigonometry


【解决方案1】:

要获得扇区,您需要获得相对于点中心的角度。

伪代码(我不确定 Java 中的数学函数和舍入如何):

double angle = math.atan2(mouse.y-center.y, mouse.x-center.x);
angle = angle - math.pi / 16.0;
while (angle < 0) {
   angle = angle + 2*math.pi;
}
sector = math.floor(angle * 8.0 / math.pi);

我修正了半个扇区,因为你的第一个扇区以 OX 轴为中心。

【讨论】:

  • 谢谢!效果很好。
猜你喜欢
  • 1970-01-01
  • 2021-08-30
  • 2016-07-26
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多