gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:23:42 24 4
gpt4 key购买 nike

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

enter image description here

然后我创建了一个绘制椭圆的新类。这个类有一些简单的数学来移动屏幕上的椭圆。椭圆的运动不是很重要。现在这已经完成了,我想检测椭圆是否在任何时候与圆弧(半个圆,Only the arc line)发生碰撞。

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com