Геометрию вспоминать начал относительно недавно.
Реализовал отрисовку фигуры на скрине через параметрическое уравнение сферы.
С отображением ее относительно других осей тоже проблем не возникло,
но столкнулся с ее поворотом по оси Z в зависимости от angle - угла поворота кастующего юнита. Собственно сабж - как это можно сделать, а то уже в который раз пытаюсь, а сфера либо остается в том же положении, либо ее форма искажается.
float x = GetUnitX(GetTriggerUnit())
float y = GetUnitY(GetTriggerUnit())
float angle = GetUnitFacing(GetTriggerUnit())
float j = 0
float i = 0
loop
exitwhen j>=180
j+=15
loop
exitwhen i>=360
i+=10
ES_Sphere sphere = ES_Sphere.create(0,0,0)
sphere.x = x+ 150*Sin(j*bj_DEGTORAD)*Cos((i+angle)*bj_DEGTORAD)
sphere.y = y+ 150*Cos(j*bj_DEGTORAD)
sphere.z = 150+ 150*Sin(j*bj_DEGTORAD)*Sin((i+angle)*bj_DEGTORAD)
endloop
i=0
endloop
Принятый ответ
Doc:
Спасибо. Сделал через двухмерную матрицу поворота (тк поворачиваем только Х и У), и в итоге получили обычный поворот вектора и решение таково:
Спасибо. Сделал через двухмерную матрицу поворота (тк поворачиваем только Х и У), и в итоге получили обычный поворот вектора и решение таково:
float newx = 150*Sin(j*bj_DEGTORAD)*Cos(i*bj_DEGTORAD)
float newy = 150*Cos(j*bj_DEGTORAD)
sphere.z = 150+ 150*Sin(j*bj_DEGTORAD)*Sin(i*bj_DEGTORAD)
sphere.x = newx*Cos(angle*bj_DEGTORAD) - newy*Sin(angle*bj_DEGTORAD) + x
sphere.y = newx*Sin(angle*bj_DEGTORAD) + newy*Cos(angle*bj_DEGTORAD) + y
Если у кого-то получится упростить, то буду очень признателен.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
http://compgraph.tpu.ru/3d.htm
Отредактирован Msey
Спасибо. Сделал через двухмерную матрицу поворота (тк поворачиваем только Х и У), и в итоге получили обычный поворот вектора и решение таково:
Отредактирован N7 Molot
Вот сделал на луа и эффектах, но чёт итог не ясен