Исходник программы, показывающей пример моделирования физического мира, представляющего собой простую тележку на которую действует гравитация. Тележка умеет ускоряться под действием силы тяжести и имеет трение качения, которое в конечном итоге заставит ее двигаться по инерции до остановки.
Идея исходника состоит в том, чтобы получить объект TCart, который ведет себя реалистично, катясь по дорожке под разными углами (вверх и вниз), с разными уровнями гравитации, массы и трения.
По соглашению мы будем использовать положительные значения для дорожки, спускающейся вправо, и отрицательные значения для восходящей влево. Затем сила гравитации, действующая прямо вниз, делится на две составляющие: одна толкает под прямым углом к рельсу, масса * сила тяжести * cos (тета), а другая действует параллельно рельсу и может перемещать тележку, масса * сила тяжести * sin (тета). Существует некоторое сопротивление, пытающееся удержать тележку от ускорения, в частности трение качения, вызванное трением в колесах и осях, и небольшая деформация гусеницы, когда колеса перекатываются по ней. Также есть сопротивление из-за того, что тележка выталкивает воздух в сторону при движении, мы пока проигнорируем это. Противодействующая сила из-за трения качения пропорциональна весу, прижимающемуся к гусенице, и коэффициенту трения качения (трения). Итак, противодействующая сила = трение * масса * сила тяжести * cos (тета). Тележка будет ускоряться, согласно Ньютону, на величину, прямо пропорциональную приложенной чистой силе и обратно пропорциональную массе, a = (сила противодействия вспомогательной силе) / масса. Обратите внимание, что до тех пор, пока масса не равна 0, она просто сокращается, то есть вещи с большей массой сильнее прижимаются к земле, но требуется больше силы, чтобы заставить тяжелые вещи двигаться.
Процедура DrawCart использует технику «спрайтов» для рисования тележки. Идея состоит в том, чтобы захватить часть фонового изображения, на котором будет нарисована тележка, перед тем, как нарисовать тележку. Когда придет время снова нарисовать тележку, мы восстановим фон (стираем старое изображение тележки), а затем сделаем новый фрагмент фонового изображения для нового местоположения тележки. Растровое изображение, Savebg, определено для хранения фонового изображения. Saverect - это запись TRect, содержащая координаты области, которую нужно сохранить и восстановить.