2

我正在研究 2d 游戏的简单物理学,我想要帮助我尝试做一个模拟。

我有一个酒吧会落在地上的一个固定球上,下面是 xaml:

<Canvas Background="CornflowerBlue">
    <Rectangle Name="bar" Width="200" Height="20" Fill="Cornsilk" Canvas.Left="250" Canvas.Top="50" />
    <Ellipse Name="ball" Height="50" Width="50" Fill="PaleGreen" Canvas.Left="380" Canvas.Top="250" />
</Canvas>

在酒吧开始下降之前

我已经完成了所有的计算来模拟杆因重力而下落,但我真正需要帮助的是,一旦杆击中球,它的一侧会在地面上,另一侧会在球上,这可能很漂亮很多用 xaml 表示:

<Canvas Background="CornflowerBlue">
    <Rectangle Name="bar" Width="200" Height="20" Fill="Cornsilk" Canvas.Left="250" Canvas.Top="246.675" RenderTransformOrigin="0.5,0.5" >
        <Rectangle.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="-18.897"/>
                <TranslateTransform/>
            </TransformGroup>
        </Rectangle.RenderTransform>
    </Rectangle>
    <Ellipse Name="ball" Height="50" Width="50" Fill="PaleGreen" Canvas.Left="380" Canvas.Top="250" />
</Canvas>

酒吧在地上

而且我不知道如何让杆的左侧触地,而左侧将在物理术语中超过球。

我知道有像 Farseen 这样很棒的物理引擎,但我只是想了解它在这种情况下是如何工作的。

我知道如何根据时间获得横杆的 Y,所以我一直检查它直到它与球相撞,但那之后呢?

谢谢!

4

1 回答 1

2

刚体物理模拟不是一项简单的任务,除非您对该主题非常感兴趣,否则我建议您使用物理库。但是,如果您对此感兴趣,我建议您查看基于物理的建模SIGGRAPH 课程笔记、Brian Mirtich关于脉冲动力学的论文,也许还有Kenny Erleben关于多体动力学的论文。

这些提供了如何实现刚体动力学的非常深入的描述。

于 2011-04-12T18:49:52.757 回答