Помогите с симуляцией физики в WPF

Я изучаю простую физику для 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 стержня по времени, поэтому я продолжаю проверять его, пока он не столкнется с мячом, но что потом?

Спасибо!


person Bruno    schedule 12.04.2011    source источник
comment
Чтобы сделать что-то подобное, вам придется написать свой собственный физический 2D-движок. К прямоугольнику будет прикреплен 2D Box Collider, а к кругу будет прикреплен коллайдер Circle/Sphere. Каждый тик нужно проверять на коллизии и при необходимости применять силы. Если вам не нужно писать все это самостоятельно, я настоятельно рекомендую вам найти физический движок, который вы сможете использовать.   -  person qJake    schedule 12.04.2011
comment
@SpikeX Вы должны сделать это ответом +1   -  person asawyer    schedule 12.04.2011
comment
Я не сделал это ответом, потому что это не отвечает на его вопрос, это было скорее предложение не изобретать велосипед. (как это часто делают люди).   -  person qJake    schedule 12.04.2011
comment
спасибо, но это не изобретение велосипеда, это понимание того, как оно работает :)   -  person Bruno    schedule 12.04.2011


Ответы (1)


Физическое моделирование твердого тела — непростая задача. Если вы не очень заинтересованы в теме, я бы порекомендовал использовать физическую библиотеку. Но если вы заинтересованы в этом, я бы порекомендовал посмотреть Физическое моделирование Заметки к курсу SIGGRAPH, тезис Брайана Миртича по импульсной динамике и, возможно, также тезис Кенни Эрлебена о многотельных динамика.

Они обеспечивают очень подробное описание того, как может быть реализована динамика твердого тела.

person David Brown    schedule 12.04.2011