поворот
|
|
allods | Дата: Суббота, 17 Февраля 2018, 18:29 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Код x'=x y'=y*math.cos(math.rad(L))+ z*math.sin(math.rad(L)) z'=-y*math.sin(math.rad(L))+ z*math.cos(math.rad(L))
x'=x*math.cos(math.rad(L)) + z*math.sin(math.rad(L)) y'=y z'=-x*math.sin(math.rad(L)) + z*math.cos(math.rad(L))
x'=x*math.cos(math.rad(L)) - y*math.sin(math.rad(L)) y'=x*math.sin(math.rad(L)) + y*math.cos(math.rad(L)) z'=z
Ребят есть такой код для поворота. По оси X Y и Z. Но я не могу понять что такое L ? Радиана чего ?
Сообщение отредактировал allods - Суббота, 17 Февраля 2018, 18:30 |
|
| |
drcrack | Дата: Суббота, 17 Февраля 2018, 20:29 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Полагаю что это угол на который тебе надо повернуться, в градусах
|
|
| |
allods | Дата: Суббота, 17 Февраля 2018, 23:39 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| получается ерунда
|
|
| |
drcrack | Дата: Воскресенье, 18 Февраля 2018, 07:38 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Тем не менее это именно он
|
|
| |
allods | Дата: Воскресенье, 18 Февраля 2018, 21:30 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| но как ? если мне надо повернуть сначала по Х а потом по Y как это сделать ? Какой из углов мне туда засунуть
допустим повернуть по Х на 15 градусов
x'=x y'=y*math.cos(math.rad(15))+ z*math.sin(math.rad(15)) z'=-y*math.sin(math.rad(15))+ z*math.cos(math.rad(15))
а Х получается останется без изменения ? Чушь какая то
Сообщение отредактировал allods - Воскресенье, 18 Февраля 2018, 21:42 |
|
| |
drcrack | Дата: Воскресенье, 18 Февраля 2018, 22:01 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Цитата а Х получается останется без изменения ? Чушь какая то Почему чушь-то? При повороте вокруг оси X координата X не изменится.
Цитата если мне надо повернуть сначала по Х а потом по Y как это сделать ? Какой из углов мне туда засунуть Сначала один, потом другой, в чем проблема-то? У тебя 3 куска кода для поворотов вокруг разных осей.
PS Я бы на твоем месте не изобретал с нуля линейную алгебру, а взял бы готовые библиотеки.
Сообщение отредактировал drcrack - Воскресенье, 18 Февраля 2018, 22:04 |
|
| |
allods | Дата: Воскресенье, 18 Февраля 2018, 22:09 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Код function Xrot(angle) local cos = math.cos(angle) local sin = math.sin(angle) local yy=y*cos - z*sin local zz=z*cos + y*sin y=yy z=zz end
сделал такую функцию
вызываю так Xrot(0.05)
ничего не происходт
PS Я бы на твоем месте не изобретал с нуля линейную алгебру, а взял бы готовые библиотеки.
я просто хочу понять как
|
|
| |
drcrack | Дата: Воскресенье, 18 Февраля 2018, 22:33 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| angle в радианах передаешь? и кстати какого результата ты ждешь? этот метод не повернет обьект, а переместит его в новую позицию, получится как бы поворот вокруг глобальной оси, но без поворота. Если Y и Z равны нулю (т.е. точка лежит на оси X), то вообще ничего не произойдет
-- вижу что угол в радианах скажи какие у тебя координаты X Y Z
и убедись что в твоем движке (ты его не назвал) cos и sin принимают угол именно в радианах, потому что иногда в градусах
Сообщение отредактировал drcrack - Воскресенье, 18 Февраля 2018, 22:40 |
|
| |
allods | Дата: Понедельник, 19 Февраля 2018, 00:25 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| короче это не движок, просто lua . Все это для PS VITA
http://rinnegatamante.github.io/lpp-vita/ это документация в Render там есть Render.drawModel(mdl, 1.0, 1.0, -5.0, 1.0, 1.0, 0.0) angleX - X rotation value of the model. angleY - Y rotation value of the model. angleZ - Z rotation value of the model.
это все в углах не в радианах. То есть тот код это поворот вокруг точки, то есть сдвиг, меняет координату объекта?
А как тогда сделать именно вращение по своим осям а не мировым.Добавлено (19 Февраля 2018, 00:15) --------------------------------------------- то есть x y z это не угол а позиция ? Добавлено (19 Февраля 2018, 00:25) --------------------------------------------- Вот пример вращения http://grafika.me/node/82 делал по нему что не так
Сообщение отредактировал allods - Понедельник, 19 Февраля 2018, 00:03 |
|
| |
drcrack | Дата: Понедельник, 19 Февраля 2018, 08:44 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| Цитата Вот пример вращения http://grafika.me/node/82 делал по нему что не так
Все норм, тока это формула для вращения точки вокруг глобальных осей (Хотя и нарисован кубик. Видимо предполагается что формула применяется к каждой точке этого кубика)
Цитата А как тогда сделать именно вращение по своим осям а не мировым. Я уже написал — не изобретай алгебру, все уже сделано до тебя То что ты пытаешься сделать на самом деле делается с помощью матриц/кватернионов Просто возьми готовую библиотеку, а лучше движок
Сообщение отредактировал drcrack - Понедельник, 19 Февраля 2018, 18:21 |
|
| |
allods | Дата: Понедельник, 19 Февраля 2018, 15:22 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| ну так я смотрел эти ваши матрицы.... все 3 части
Но если по делу, то я уже начал писать себе свою библиотеку с матрицей. Но я не понял как потом полученные значения выводить в Углы. Поэтому подумал что через Углы ЭйлераДобавлено (19 Февраля 2018, 15:21) ---------------------------------------------
Код function matrix4x4:SetRotation(flAngle,v) -- Normalize beforehand v = v:normalize()
-- c = math.cos(angle), s = math.sin(angle), t = (1-c) -- [ xxt+c xyt-zs xzt+ys ] -- [ yxt+zs yyt+c yzt-xs ] -- [ zxt-ys zyt+xs zzt+c ]
local x = v.x local y = v.y local z = v.z local rot = math.rad(flAngle) local c = math.cos(rot) local s = math.sin(rot) local t = 1-c
m[1].x = x*x*t + c m[2].x = x*y*t - z*s m[3].x = x*z*t + y*s
m[1].y = y*x*t + z*s m[2].y = y*y*t + c m[3].y = y*z*t - x*s
m[1].z = z*x*t - y*s m[2].z = z*y*t + x*s m[3].z = z*z*t + c end Добавлено (19 Февраля 2018, 15:22) --------------------------------------------- как видно я получаю всего по 3. Какие X Y Z из 3 мне нужно возвращать для поворота
|
|
| |
drcrack | Дата: Понедельник, 19 Февраля 2018, 18:22 | Сообщение # 12 |
старожил
Сейчас нет на сайте
| Цитата Но если по делу, то я уже начал писать себе свою библиотеку с матрицей. Видимо тебя больше интересует математика, чем игры В общем, через полгода расскажешь, как успехи
|
|
| |