Хлопушка(геометрия)
http://forum.boolean.name/showthread.php?t=17727
Продублирую данную тему в этом разделе, так как, видимо, в разделе Blitz3D я уже ничего не добьюсь. Повторюсь: у меня есть хлопушка, наклонённая под некоторым углом по осям X и Z, необходимо, чтобы она стреляла туда, куда направлена. Кто разбирается, подскажите, правильно ли я расчитывал, чтобы уже точно определить местонахождение проблемы: в моих расчётах или в Blitz-е. Исходник приклеивать, думаю, нет смысла, так как спрашиваю исключительно геометрию. OD - вектор скорости и, соответственно, направление хлопушки AC = OB - проекции вектора OD на ось Z OA = BC - проекции вектора OD на ось X DC - проекция вектора OD на ось Y ∠DBC соответствует повороту хлопушки вокруг оси Z ∠DAC соответствует повороту хлопушки вокруг оси X Как я решал(подскажите, что не так, потому что я, вероятно, где-то ошибся): AC ⊥ OA, AC - проекция AD ⇒ AD ⊥ OA(по теореме о 3-х перпендикулярах) BC ⊥ OB, BC - проекция BD ⇒ BD ⊥ OB(по теореме о 3-х перпендикулярах) AD² = AC² + CD² OD² = AD² + OA² 1) OD² = AC² + CD² + OA² Получилось что-то вроде всем известного уравнения длины вектора в пространстве, заданной проекциями: v² = x² + y² + z² Далее: AD² = AC² + CD² AC = AD * Cos∠DAC 2) AC² = (AC² + CD²) * Cos²∠DAC Аналогично: BD² = BC² + CD² BC = BD * Cos∠DBC 3) BC² = (BC² + CD²) * Cos²∠DBC Вот мы получили систему уравнений, выделенных красным цветом. Далее следует очень нудная подстановка, в которой явно никто не захочет разбираться. Вопрос, повторяюсь, состоит в том, правильно ли я выводил формулы, и эти ли формулы необходимы для описания выстрела хлопушки? Просто пока ничего нормально не работает... Если нужно, я всё-таки могу написать, как вычислять отсюда проекции... |
Ответ: Хлопушка(геометрия)
point = CreatePivot()
ball = CreateSphere(32,point) RotateEntity(point,0,34,21) U#=50 g#=10 a = 30 t#=0 repiat t=t+.01 Y# = U*sin(a) - g*t*t/2; Z# = U*cos(a); PositionEntity(ball,0,Y#,Z#) ;**** |
Ответ: Хлопушка(геометрия)
Здесь, как я понял, шар будет двигаться по локальным координатам пивота. Я пытаюсь сделать движение исключительно в глобальных.
Поэтому я и решил написать именно в этот раздел, чтобы не было привязки к конкретному языку программирования. |
Часовой пояс GMT +4, время: 06:38. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot