Swing 如何在Java中实现光学项目

Swing 如何在Java中实现光学项目,swing,collision-detection,Swing,Collision Detection,我正在开发一款基于光学设备的游戏,比如镜子和镜头。我有一根横梁。如果光束击中光学元件,它将根据物理规则反射。我知道光束的方向。所以我需要检测与光学元件的碰撞,所以我无法计算反射。在java中实现光学项目以检测与光束和光学项目的碰撞的最佳方法是什么。 边界盒模型不适合我的情况。我正在考虑使用多边形。检测碰撞点(x,y)很容易,但光学项目可以旋转,因此计算角度和反射似乎很难 你推荐什么?的镜子和光束。然后,您只需在镜子的另一半上以相同的角度绘制反射光束。通常在开发UI时,您有一个数据模型和一个呈现数

我正在开发一款基于光学设备的游戏,比如镜子和镜头。我有一根横梁。如果光束击中光学元件,它将根据物理规则反射。我知道光束的方向。所以我需要检测与光学元件的碰撞,所以我无法计算反射。在java中实现光学项目以检测与光束和光学项目的碰撞的最佳方法是什么。 边界盒模型不适合我的情况。我正在考虑使用多边形。检测碰撞点(x,y)很容易,但光学项目可以旋转,因此计算角度和反射似乎很难


你推荐什么?

的镜子和光束。然后,您只需在镜子的另一半上以相同的角度绘制反射光束。

通常在开发UI时,您有一个数据模型和一个呈现数据模型的视图

你的问题有点不同。您将拥有一个表示镜像的类和另一个表示镜头的类。类的实例将保存状态信息,如对象的位置和对象面对的方向。类方法将负责实现反射镜和透镜的物理规则

视图绘制逻辑需要做的不仅仅是渲染数据模型。你必须在你的物体的所有实例中循环以检测碰撞,然后将物理规则应用于光束,看看下一步要去哪里


虽然光束源、透镜和反射镜都是数据模型中的对象,但每次在视图中绘制光束时都必须计算光束本身。

是的,这正是我正在做的,但问题仍然没有解决。主要问题是曲面透镜和反射镜。检测斜率真的很难。斜率不是那个点的导数吗?这是可能的,只是需要一些数学技巧。