Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的物理模拟帮助_C#_Wpf_Physics_Game Physics - Fatal编程技术网

C# WPF中的物理模拟帮助

C# WPF中的物理模拟帮助,c#,wpf,physics,game-physics,C#,Wpf,Physics,Game Physics,我正在学习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" Widt

我正在学习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>

而且我不知道如何让左边的横杆触地,而左边的横杆将在球上方

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

我知道如何根据时间来计算杆的Y,所以我一直在检查它,直到它与球发生碰撞,但之后呢


谢谢

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


这些内容非常深入地描述了刚体动力学是如何实现的。

为了实现类似的功能,您必须编写自己的2D物理引擎。矩形将有一个2D长方体碰撞器连接到它,而圆将有一个圆/球体碰撞器。您需要检查碰撞的每个“勾号”,并根据需要施加力。如果你不需要自己写这篇文章,我强烈建议你找一个可以使用的物理引擎。@SpikeX你应该回答+1我没有回答这个问题,因为它没有回答他的问题,它更多的是一个建议“不要重新发明轮子”(就像人们经常做的那样)。谢谢,但这不是重新发明轮子,了解车轮的工作原理:)