Полярки и кое-что от меня.
-Я был на форуме мне сказали: "юзай полярки!". Что это? Да да, сейчас я всё для вас разжую.
Плярка "PolarProjectionsBJ" in jass. Поглядим , что внутри этой функции.
[code=jass]function PolarProjectionsBJ takes location loc, real a, real deegres returns location
local real x = GetLocationX(loc) + a * CosBJ(deegres)
local real y = GetLocationX(loc) + a * SinBJ(deegres)
local location loc = Location(x,y)
return loc
endfunction[/code]
А вообще по хорошему всё должно быть так:
[code=jass]
globals
location Nloc = Location(0,0)
endglobals
function PolarProjections takes location loc, real a, real deegres returns location
local real xl = GetLocationX(loc)
local real yl = GetLocationY(loc)
local real x = xl + a * Cos(.0174532*deegres)
local real y = yl + a * Sin(.0174532*deegres)
call MoveLocation(Nloc,x,y)
return Nloc
endfunction[/code]
Функция изначально предназначена для нахождения точки на окружности, а точнее , это элементарное тождество косинуса и синуса.
Нарисуем круг, точка loc есть центр круга , число a есть радиус , а deegres угол.
Да, выглядит это так. Формула:
[code=jass]x + r * CosA
у + r * SinA[/code]
в эту формулу ведено всего две плоскости х и у и один угла пусть для нас он будет "поворот" .
Я придумал формулу на три плоскости включая два поворота "поворот" и "угл атаки", то есть точка уже будет на шаре, а не круге.
[code=jass]
x + (r*CosB) * CosA
y + (r*SinB) * CosA
z + r * SinA[/code]
Да, точка включает теперь "угл атаки" (если не знаете , что это, то создайте камеру и посмотрите там), то есть вводить предётся два угла. Уже этой формулой можно найти любую точку на шаре.
Выглядит рисунок по подобной формуле так:
То есть шар создать из юнитов или молний теперь рас плюнуть. А если вы будете вращать по этой формуле ?
Плоскость Z будет не красиво ходить разнообразно;), чтоб наше вращение выглядело как орбита юпитера, нужно вводить третий угл "крен". Но увы я такую формулу только разрабатываю , ждите обновлений =)
автор статьи H_А_PK