-Я был на форуме мне сказали: "юзай полярки!". Что это? Да да, сейчас я всё для вас разжую. Плярка "PolarProjectionsBJ" in jass. Поглядим , что внутри этой функции. Code functions 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 globals location Nloc = Location(0,0) endglobals
functions 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 Функция изначально предназначена для нахождения точки на окружности, а точнее , это элементарное тождество косинуса и синуса. Нарисуем круг, точка loc есть центр круга , число a есть радиус , а deegres угол.
Да, выглядит это так. Формула: Code x + r * CosA у + r * SinA в эту формулу ведено всего две плоскости х и у и один угла пусть для нас он будет "поворот" . Я придумал формулу на три плоскости включая два поворота "поворот" и "угл атаки", то есть точка уже будет на шаре, а не круге. Code x + (r*CosB) * CosA y + (r*SinB) * CosA z + r * SinA
Да, точка включает теперь "угл атаки" (если не знаете , что это, то
создайте камеру и посмотрите там), то есть вводить предётся два угла.
Уже этой формулой можно найти любую точку на шаре. Выглядит рисунок по подобной формуле так: То есть шар создать из юнитов или молний теперь рас плюнуть. А если вы будете вращать по этой формуле ?
Плоскость Z будет не красиво ходить разнообразно;), чтоб наше вращение
выглядело как орбита юпитера, нужно вводить третий угл "крен". Но увы я
такую формулу только разрабатываю , ждите обновлений =) автор статьи H_А_PK
|