【问题标题】:How to implement optical items in Java如何在 Java 中实现光学项目
【发布时间】:2012-04-03 13:34:33
【问题描述】:

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

你有什么推荐的?

【问题讨论】:

    标签: swing collision-detection


    【解决方案1】:

    Calculate the angle between the two lines 的镜子和光束。然后你只需要在镜子的另一半上以相同的角度绘制反射光束。

    【讨论】:

    • 主要问题是曲面镜片和镜子。很难检测到斜坡。
    • 斜率不是那个点的导数吗?有可能,只是需要一些数学魔法。
    【解决方案2】:

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

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

    您的视图绘制逻辑必须做的不仅仅是渲染数据模型。您将不得不遍历对象的所有实例以检测撞击,然后将物理规则应用于光束以查看下一步要去哪里。

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

    【讨论】:

    • 是的,这正是我正在做的,但问题仍然没有得到解决。
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2019-10-31
    • 2021-07-20
    相关资源
    最近更新 更多