java - 椭圆形和圆弧之间的碰撞检测

标签 java collision-detection paint

我正在编写一个简单的游戏,或者看起来是这样。我创建了一个绘制 Arc2D (半圆形)的类,该类将在鼠标移动时重新绘制拱门。

enter image description here

然后我创建了一个绘制椭圆的新类。本类(class)有一些简单的数学来移动屏幕上的椭圆形。椭圆形的运动并不是很重要。现在已经完成了,我想检测椭圆是否在任何点与圆弧(半圆,仅圆弧线)碰撞。

我尝试的是将椭圆形变成矩形并使用相交方法。此代码位于圆弧的绘制方法中。

Arc2D temp= new Arc2D.Double(200, 200, 100, 100, angle, 180, Arc2D.OPEN);
MasterOval m = new MasterOval();
Rectangle r1 = m.bounds();//This gets the bounds of the oval
if(r1.intersects(temp.getBounds()))
    System.out.println("hit");//display if intersects

出于某种原因,我无法弄清楚为什么它在与弧碰撞时不会显示“hit”一词。有没有办法查看它们是否相交?由于隐私政策,这是我可以提供的所有代码。请帮忙。

最佳答案

好吧,我不确定您的 MasterOval 类是否实现了 Shape 接口(interface),但如果实现了(如果没有,请考虑使用 Ellipse2D.Double 或类似的东西),检查 Shape 实例之间碰撞的最简单方法(也许是标准?)是使用 Area:

Shape1 shape1 = new Arc2D.Double(...);
Shape2 shape2 = new Ellipse2D.Double(...);

Area area1 = new Area(shape1);
Area area2 = new Area(shape2);

if (area1.intersect(area2)) {
    ...
}

关于java - 椭圆形和圆弧之间的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449603/

相关文章:

java - awt无相交方法的圆与矩形碰撞检测

android - 是否有更快的碰撞检测算法?

德尔福/GDI+ : When is a Device Context created/destroyed?

java - 从鼠标监听器方法调用时 repaint() 不起作用

java - 以下 xml 的 jaxb 注释

java - 为什么我的堆栈溢出错误会在 518669 之后发生?

java - 听众与表演

java - 获取 XML 标签的 XPath

java - 如何检测组之间的冲突 - Java3D

Java - Paint 与 Image 的性能对比?