Пятница, 29.03.2024, 08:48
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Математические и механические задачи в GTA (Применение знаний математики и механики в моддинге)
Математические и механические задачи в GTA
izerliДата: Вторник, 10.01.2012, 16:21 | Сообщение # 46
Группа: Проверенные
Сообщений: 90
Статус: Offline
ILYALION, можно проще
Code
04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset -20.0 70.0 0.0


Сообщение отредактировал izerli - Вторник, 10.01.2012, 16:22
 
ILYALIONДата: Вторник, 10.01.2012, 17:10 | Сообщение # 47
Группа: Проверенные
Сообщений: 325
Статус: Offline
izerli, спасибо большое! А я сидел и вычислял...
 
ILYALIONДата: Четверг, 12.01.2012, 21:38 | Сообщение # 48
Группа: Проверенные
Сообщений: 325
Статус: Offline
Мне известны x и y координаты всех трёх точек. y координаты точек A и B совпадают. Также известны длины отрезков AB и BC. Нужно найти угол ABC.

Добавлено (12.01.2012, 21:38)
---------------------------------------------
Можно ли из косинуса угла вычислить градусную меру этого угла?

Прикрепления: 0829832.jpg (6.0 Kb)


Сообщение отредактировал ILYALION - Четверг, 12.01.2012, 21:36
 
Den_spbДата: Пятница, 13.01.2012, 07:56 | Сообщение # 49
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Можно назвать несколько способов вычисления значений углов, но проще всего это сделать с помощью стандартных опкодов:

1) 0604: get_angle_between_vectors_{a,b} $a $b and_{0,1}_store_to $Angle
Данный опкод вычисляет угол между вектором {a,b} (где a,b - это x,y , y,z или z,x) и единичным вектором {0,1} (соответственно ось Y, Z или X).
Напоминаю, что для получения координат вектора нужно из координат точки конца вектора вычесть координаты точки начала вектора.
Этот опкод можно использовать и для вычисления угла между двумя произвольно направленными векторами. Для этого сначала вычисляются углы между векторами и осью (угол1 и угол2). Угол между векторами будет равен: угол3 = угол2 - угол1 (см. правый рисунок).


2) 05A4: get_angle_between_vectors_origin_to 9@ 10@ and_origin_to 11@ 12@ store_to 26@
Данный опкод вычисляет значение меньшего из двух углов, образованных пересечением двух произвольно направленных векторов.
 
BoPoHДата: Вторник, 24.01.2012, 22:49 | Сообщение # 50
Группа: Проверенные
Сообщений: 53
Статус: Offline
Den_spb, как повернуть матрицу на определённые углы? Именно, как-бы прибавить к текущим. Как, например, в опкоде крепления авто к объекту, там можно указать углы "смещения".
И, кстати, как сделать, чтобы корона не просвечивала сквозь игрока, авто и т.д., и можно ли как-то уменьшить радиус её действия, ибо когда камера близко к ней, то она не рендерится?

P.S. Извините за оффтоп)


First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!



Сообщение отредактировал BoPoH - Вторник, 24.01.2012, 22:56
 
Den_spbДата: Вторник, 24.01.2012, 23:46 | Сообщение # 51
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (BoPoH)
Den_spb, как повернуть матрицу на определённые углы? Именно, как-бы прибавить к текущим. Как, например, в опкоде крепления авто к объекту, там можно указать углы "смещения".
Это пересчёт координат из одной системы в другую (в опкоде указывается не "смещение", а позиция автомобиля в системе координат объекта).
http://modsforgta.ucoz.ru/forum/5-5-2891-16-1325445803
http://modsforgta.ucoz.ru/forum/12-62-2769-16-1324692231

Quote (BoPoH)
И, кстати, как сделать, чтобы корона не просвечивала сквозь игрока, авто и т.д.,
"Проникающая способность" определяется одним из параметров в функции создания короны: http://sannybuilder.com/forums/viewtopic.php?pid=19139#p19139
В данном случае этот параметр (penetration) следует уменьшить.

Quote (BoPoH)
P.S. Извините за оффтоп)
Сообщение перенёс в другую тему.
 
BoPoHДата: Среда, 25.01.2012, 00:03 | Сообщение # 52
Группа: Проверенные
Сообщений: 53
Статус: Offline
Den_spb, А как перемножить матрицы?) Неужто просто перемножить координаты векторов?

First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!

 
Den_spbДата: Среда, 25.01.2012, 00:18 | Сообщение # 53
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Надо умножить элементы одной матрицы на элементы другой в соответствующем порядке.
http://ru.wikipedia.org/wiki/Перемножение_матриц
В exe наверное для этого есть специальные функции, хотя и без их использования алгоритм будет несложным.

Добавлено:
Вот примерчик перемножения двух матриц:

Code
1 2       5 6        1*5+2*7 1*6+2*8         19 22
3 4   *  7 8   =   3*5+4*7 3*6+4*8   =   43 50
 
BoPoHДата: Среда, 25.01.2012, 19:18 | Сообщение # 54
Группа: Проверенные
Сообщений: 53
Статус: Offline
Quote (Den_spb)
Вот примерчик перемножения двух матриц:

Честно говоря не понял, зачем там сложение вообще... Можно на примере матрицы из GTA SA?


First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!

 
Den_spbДата: Среда, 25.01.2012, 19:25 | Сообщение # 55
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (BoPoH)
Честно говоря не понял, зачем там сложение вообще...

Такое правило. В википедии всё подробно написано, надо только внимательно прочитать. Если просто умножить элементы одной матрицы на соответствующие элементы другой, то результат будет неверным.

Quote (BoPoH)
Можно на примере матрицы из GTA SA?
Перемножение будет осуществляться по тому же принципу, только матрицы будут размером не 2х2, а 3х3:
Code
RightX RightY RightZ
TopX   TopY   TopZ
AtX     AtY     AtZ
 
BoPoHДата: Среда, 25.01.2012, 21:32 | Сообщение # 56
Группа: Проверенные
Сообщений: 53
Статус: Offline
Quote (Den_spb)
Если просто умножить элементы одной матрицы на соответствующие элементы другой, то результат будет неверным.

Я об этом догадывался.
Quote (Den_spb)
Перемножение будет осуществляться по тому же принципу

Вот я этот самый принцип и не могу понять, что поделать, я учусь на реальных примерах, просто теорию мне тяжело понять. Попробую всё же разобрать статью из википедии...


First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!

 
Den_spbДата: Среда, 25.01.2012, 22:46 | Сообщение # 57
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Ничего сложного нет - простая арифметика. Элемент N-строки M-столбца матрицы-произведения равен сумме произведений элементов N-строки первой матрицы и элементов M-столбца второй матрицы. Отсюда следует вывод, что матрицы можно перемножать только в том случае, если количество столбцов первой матрицы равно количеству строк второй матрицы.
 
BoPoHДата: Среда, 25.01.2012, 23:00 | Сообщение # 58
Группа: Проверенные
Сообщений: 53
Статус: Offline
Den_spb, т.е. RightX_Mul = RightX_1 * RightX_2 + RightY_1 * TopX_2 + RightZ_1 * AtX_2?

First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!



Сообщение отредактировал BoPoH - Среда, 25.01.2012, 23:01
 
Den_spbДата: Среда, 25.01.2012, 23:03 | Сообщение # 59
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Да, верно.
 
BoPoHДата: Среда, 25.01.2012, 23:05 | Сообщение # 60
Группа: Проверенные
Сообщений: 53
Статус: Offline
Den_spb, спасибо большое, проверю и отпишусь, всё ли работает)
Кстати, адресок матрицы авто не подскажешь? А то вот это не совсем то:
Quote
Для каждой машины в пуле:
+20 = [byte] Содержит указатель на матрицу вращения/позиционирования (84 байта):
+0 = [float] X-axis Rotation (Grad)
+4 = [float] Y-axis Rotation (Grad)
+8 = [float] Z-axis Rotation (Grad)
+16 = [float] X-axis Rotation (Looking)
+20 = [float] Y-axis Rotation (Looking)
+24 = [float] Z-axis Rotation (Looking)
+48 = [float] X-axis Position
+52 = [float] Y-axis Position
+56 = [float] Z-axis Position

В базе что-то тоже не смог отыскать...


First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!



Сообщение отредактировал BoPoH - Четверг, 26.01.2012, 00:47
 
Форум » Игры серии ГТА » Скриптинг » Математические и механические задачи в GTA (Применение знаний математики и механики в моддинге)
Поиск: