Archive for the Category » ЗР-объекты «

Thursday, September 25th, 2008 | Author: admin

Все уравнения, которые мы только что рассмотрели, легко можно применить и для многомерных моделей. Взгляните на наше первое кинематическое уравнение:
dx
Если х - расстояние, пройденное вдоль оси х в двумерной декартовой системе координат, то это уравнение описывает скорость движения материальной точки вдоль оси х, как показано на рисунке 7.8. Движение вдоль оси у можно рассматривать независимо от движения вдоль оси х:
Если нам нужно работать в трех измерениях, точно так же можно записать и скорость движения вдоль оси z:
dz more…

Tags: centrifugal, Gamelnitialization, кинематика

Related posts

Thursday, September 25th, 2008 | Author: admin

Все это можно моделировать - но это сложно. Физики и программисты, занимающиеся физическим моделированием, обычно начинают с упрощения ситуации. Первый шаг - немного отодвинуться. На рисунке 7.2 мы видим то же движение, но в более мелком масштабе. Машина выглядит почти точкой. Все маленькие элементы уже незаметны. Соответственно, положение машины, описанное вектором в некоторой системе координат, - это достаточно хорошее представление ситуации.
Рис. 7.2. Та же машина, рассматриваемая издалека, может быть описана единственным вектором, определяющим ее положение в заданный момент времени
Когда я говорю о материальных точках, именно такую ситуацию я и имею в виду: мы игнорируем форму объекта, его повороты вокруг осей, его размеры, вообще все, что происходит внутри этого объекта, и концентрируемся только на его свойствах, влияющих на его местоположение.Одномерная кинематика more…

Tags: centrifugal, кинематика, Скорость

Related posts

Friday, September 05th, 2008 | Author: admin

Полицейский поправляет солнечные очки и подходит к остановившейся машине. Водитель машины вздыхает и опускает окно, начиная ритуал. Полицейский заявляет: «Сэр, знаете ли вы, с какой скоростью вы ехали?» Водитель качает головой, и полицейский продолжает: «Больше 100 миль в час». Водитель возражает: «Но я ехал всего 20 минут! Как я мог проехать 100 миль в час, если я ехал меньше часа?»
Что может ответить на это полицейский? Ну, в общем-то, полицейский не обязан это делать, но знающий физику полицейский мог бы ответить: «Это значит, что если бы вы ехали с этой скоростью целый час, вы бы проехали 100 миль». Водитель отпирается: «Но я тормозил и снижал скорость, и если бы я продолжал ехать, я бы проехал меньше 100 миль!»
Замечание more…

Tags: ОБНОВЛЕНИЕ, производная, Скорость

Related posts

Saturday, August 30th, 2008 | Author: admin

Этаглава посвящена одной из основных тем классической физики: движению материальных точек. Это обширная тема, и ее знание позволяет реализовать некоторые весьма впечатляющие эффекты, но это знание даст нам еще и возможность перейти к работе с твердыми и деформируемыми телами. Кроме того, в этой тлавФ вы познакомитесь с несколькими силами, моделирование которых нам понадобится и даст возможность сильно увеличить реалистичность игр. Кроме того, в этой главе изложены начала математического анализа. Вперед!
Материальные точки more…

Tags: Динамика, ОБНОВЛЕНИЕ, производная

Related posts

Friday, August 15th, 2008 | Author: admin

Большая часть древних мыслителей Запада считала, что движущиеся объекты постепенно останавливаются. Это утверждение, на первый взгляд, подтверждается практикой. Если вы хоть раз передвигали мебель, вы готовы будете поклясться, что движение в данный момент времени не гарантирует движения в последующие моменты. Однако у древних мыслителей были сомнения в правильности этой теории. Они видели несоответствие теории и практики и пытались выяснить причины этих несоответствий.
Галилей предложил хорошую альтернативу этой теории, назвав ее принципом инерции. Его теория утверждает, что объект, движущийся по прямой линии с постоянной скоростью, будет продолжать двигаться вечно, если на него не действуют другие объекты. Создание такой теории потребовало хорошего воображения - почти все предметы вокруг нас постепенно останавливаются, если их постоянно не подталкивать. Однако Галилей понял, что это постепенное замедление движения вызвано трением между объектами, а не свойственно самим объектам. more…

Tags: D3d, Динамика, Силы

Related posts

Sunday, August 10th, 2008 | Author: admin

Обратите внимание, что, когда машина начинает тормозить, расстояние, которое она преодолевает за единицу времени, начинает уменьшаться. Когда машина остановилась, не важно, сколько еще пройдет времени — пройденное расстояние увеличиваться не будет.
Попробуем определить скорость машины в какой-то момент времени. Первое приближение такой скорости можно получить, выбрав At, располагающееся в районе точки, для которой мы хотим узнать скорость. Взгляните на рисунок 7.5. С помощью графика мы можем найти расстояние, пройденное в начале и в конце интервала At. Разница между этими расстояниями и есть Ах. Средняя скорость в интервале времени At как раз и будет равна Дх / At.
Как видите, между средней скоростью и скоростью, измеренной в какой-то момент, есть весьма существенное различие - сравните наклон исходной линии и наклон линии, которую мы использовали, чтобы получить приближенную оценку. Наклон линии равен изменению вертикальной координаты, деленному на изменение горизонтальной координаты. У more…

Tags: At, D3DXLoadMeshFromX, Силы

Related posts

Wednesday, June 25th, 2008 | Author: admin

Затем метод Update () использует ускорение, чтобы найти новую линейную скорость объекта в конце интервала времени, заданного параметром changelnTime. В строке 17 метод Update () использует скорость (и интервал времени), чтобы найти новое местоположение центра масс объекта.
Вычисления в строках 11, 14 и 17 весьма просты, поскольку мы используем для их выполнения инструменты, созданные в главе 3 «Математические инструменты». Использование векторов делает формулы расчетов простыми. Следующий шаг - преобразование в матричную форму. Оно необходимо, чтобы программа могла использовать преобразования, рассмотренные в главах 4 и 5. Преобразование в матричную форму начинается в строке 24 листинга 7.3.
В строках 24-28 метод Update () вызывает функцию Direct3D D3DXMat-rixTranslation (), чтобы создать матрицу more…

Tags: Вычисления, КОНФИГУРИРОВАНИЕ, тела

Related posts

Sunday, May 25th, 2008 | Author: admin

Вычтя вектор рг из вектора р2 с рисунка 8.5, мы получим вектор расстояния между двумя центрами масс. Теперь программе осталось только найти длину вектора расстояния и сравнить ее с суммой радиусов ограничивающих сфер. Если эта длина меньше суммы радиусов, значит, произошло столкновение. Если нет, столкновения нет.
Рис. 8.5. Нахождение вектора расстояния между двумя объектами
Если описанные выше действия не совсем понятны, посмотрите на следующий фрагмент кода. Он использует два объекта класса d3d_po-int_mass — balll и ball2 - и вычисляет расстояние между ними как длину вектора расстояния. После этого он сравнивает найденное расстояние и сумму радиусов.
// Вычисляем разницу векторов местоположения сфер.
vector_3d distance = balll.Location() - ball2.location(); more…

Tags: 5x3, действия, Умножение

Related posts

Friday, April 25th, 2008 | Author: admin

В созданной нами в предыдущей главе модели материальные точки могут двигаться под воздействием приложенных к ним сил. Мы можем добавлять в модель все новые силы, делая ее все более реалистичной (и сложной), но нам по-прежнему будет не хватать одной важной вещи: материальные точки не взаимодействуют между собой. В этой главе мы займемся устранением данного недостатка.
Но прежде чем мы займемся моделированием столкновений, нужно уяснить: это моделирование на самом деле состоит из двух отдельных проблем. Первая - обнаружение столкновений. Чтобы игра могла отреагировать на столкновение, она должна знать, что столкновение произошло. Эта проблема может показаться простой, но на самом деле это совсем не так. Обнаружение столкновений - сложная задача. more…

Tags: Инициализация, Столкновения, цилиндры

Related posts

Friday, April 25th, 2008 | Author: admin

Этот метод загружает сетчатую модель объекта, определяющую его внешний вид, с помощью метода d3d_mesh: :Load().
Подсказка
В строке 4 листинга 7.2 метод LoadMesh() использует макрос assert (), чтобы гарантировать, что имя файла имеет ненулевую длину. Если программа вызовет этот метод, передав ему пустое имя файла, то выполнение программы аварийно завершится. Ошибка такого рода - это скорее ошибка программиста, чем ошибка времени выполнения. Макрос assert() гарантирует, что все ошибки такого рода будут устранены, прежде чем программа будет выпущена. Вообще говоря, он очень удобен для защиты от ошибок программистов в параметрах вызова функций.
Методу Update () приходится работать больше. Его код приведен в листинге 7.3.
Метод Update () класса d3d_point_mass просчитывает линейную динамику материальной точки. Пока он игнорирует существенные моменты реального мира - вращение, трение и силу тяжести. Однако эта его версия позволит в будущем учесть все эти моменты. more…

Tags: LoadMesh, листинге, точки

Related posts