XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
WeendVidente

offline
Опыт: 2,092
Активность:
Проецирование GetPlayableMapRect() на меньшую территорию.
На карте выделена маленькая область (в верхнем правом углу(gg_rct_Matrix)), которая должна быть как бы проекцией всей остальной карты, то есть каждая точка на "большой карте", должна иметь свой аналог на карте "малой".
Вот моя функция, по идее она берет расположение юнита, по формуле превращает его в координаты "малой" карты и возвращает их, но скорее всего в формуле что-то неправильно, помогите, пожалуйста.
» code
function MatrixSync takes unit whichUnit returns location
    return Location(((GetUnitX(whichUnit)*(SquareRoot(GetRectMaxX(gg_rct_Matrix)-GetRectMinX(gg_rct_Matrix))))/​(SquareRoot(GetRectMaxX(GetPlayableMapRect())-GetRectMinX(GetPlayableMapRect())))), (GetUnitY(whichUnit)*(SquareRoot(GetRectMaxY(gg_rct_Matrix)-GetRectMinY(gg_rct_Matrix))))/(SquareRoo​t(GetRectMaxY(GetPlayableMapRect())-GetRectMinY(GetPlayableMapRect()))))
endfunction

Отредактировано Nerevar, 04.06.2013 в 12:39.
Старый 03.06.2013, 20:28
DioD

offline
Опыт: 45,134
Активность:
отладочные сообщения? не не слышал.
это конечно хорошо что вы написали всё в одну строку, может быть именно из за этого вы не понимаете чтоже не так?
Старый 03.06.2013, 21:20
WeendVidente

offline
Опыт: 2,092
Активность:
[b]DioD[/b], Только третий день пишу на Jass, плюс математику прогуливал в школе. Здесь я все сделал исходя из уравнения
GetUnitPos(unit) * |MinX (gg_rct_Matrix) - MaxX (gg_rct_Matrix)| / |MinX (GetPLayableMapRect)- MaxX (GetPLayableMapRect)| = Z
Где Z - это именно та точка, что должна вернутся. Правильная вообще формула?
Сейчас пробую иначе, с помощью полярных координат, но никак скомпилить немогу - где-то скобку потерял, минут 10 уже глаза ломаю
» code
function MatrixSync takes unit whichUnit returns location
//    local location loc=Location(((GetUnitX(whichUnit)*(SquareRoot(GetRectMaxX(gg_rct_Matrix)-GetRectMinX(gg_rct_Matrix)​)))/(SquareRoot(GetRectMaxX(GetPlayableMapRect())-GetRectMinX(GetPlayableMapRect())))), (GetUnitY(whichUnit)*(SquareRoot(GetRectMaxY(gg_rct_Matrix)-GetRectMinY(gg_rct_Matrix))))/(SquareRoo​t(GetRectMaxY(GetPlayableMapRect())-GetRectMinY(GetPlayableMapRect()))))
    local unit u=whichUnit
    local location uloc=Location(GetUnitX(whichUnit),GetUnitY(whichUnit))
    local location cenloc=Location(GetLocationX(GetRectCenter(GetPlayableMapRect())), GetLocationY(GetRectCenter(GetPlayableMapRect())))
    local real angle=AngleBetweenPoints(uloc, cenloc)
    local real dist=DistanceBetweenPoints(uloc, cenloc)
    local real distmodx=(dist * (SquareRoot(GetRectMaxX(gg_rct_Matrix)-GetRectMinX(gg_rct_Matrix))/(SquareRoot(GetRectMaxX(GetPlayab​leMapRect()))-GetRectMinX(GetPlayableMapRect()))))
    local real distmody=(dist * (SquareRoot(GetRectMaxY(gg_rct_Matrix)-GetRectMinY(gg_rct_Matrix))/(SquareRoot(GetRectMaxY(GetPlayab​leMapRect()))-GetRectMinY(GetPlayableMapRect()))))
  local real x = GetLocationX(cenloc) + distmodx * Cos(angle * bj_DEGTORAD)
    local real y = GetLocationY(cenloc) + distmody * Sin(angle * bj_DEGTORAD)
    local location loc=Location(x, y)
    return loc
endfunction
Нихрена((

Отредактировано Nerevar, 04.06.2013 в 12:40.
Старый 03.06.2013, 22:06
Lipen

offline
Опыт: 1,550
Активность:
function MatrixSync takes unit whichUnit returns location
    local real MapMinX = GetRectMinX(bj_mapInitialPlayableArea)
    local real MapMaxX = GetRectMaxX(bj_mapInitialPlayableArea)
    local real MapMinY = GetRectMinY(bj_mapInitialPlayableArea)
    local real MapMaxY = GetRectMaxY(bj_mapInitialPlayableArea)
    local real MatrixMinX = GetRectMinX(gg_rct_Matrix)
    local real MatrixMaxX = GetRectMaxX(gg_rct_Matrix)
    local real MatrixMinY = GetRectMinY(gg_rct_Matrix)
    local real MatrixMaxY = GetRectMaxY(gg_rct_Matrix)
    local real x = GetUnitX(whichUnit)-MapMinX
    local real y = GetUnitY(whichUnit)-MapMinY
    local real X = x/(MapMaxX-MapMinX)*(MatrixMaxX-MatrixMinX)+MatrixMinX
    local real Y = y/(MapMaxY-MapMinY)*(MatrixMaxY-MatrixMinY)+MatrixMinY

    return Location(X, Y)
endfunction
Старый 04.06.2013, 07:47
WeendVidente

offline
Опыт: 2,092
Активность:
Lipen, спасибо! Фурычит!



Тему можно закрывать
Старый 04.06.2013, 09:57
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:28.