Здравствуйте, в параметрах объекта который поставлен в редакторе есть колонки под позицией, которые называются "Вращение", они же yaw,pitch и roll. Вопрос, как получить эти yaw,pitch и roll из объектов которые стоят в карте ?
Как получить их из объектов которые в редакторе я знаю(
Как получить yaw,pitch и roll
Автор:
nIkRon
, 13 Dec 2018 23:03
Лучший Ответ nIkRon , 14 December 2018 - 16:59
cursorObject call { private _direction = vectorDir _this; private _up = vectorUp _this; private _aside = _direction vectorCrossProduct _up; private ["_xRot", "_yRot", "_zRot"]; if (abs (_up select 0) < 0.999999) then { _yRot = -asin (_up select 0); private _signCosY = if (cos _yRot < 0) then { -1 } else { 1 }; _xRot = (_up select 1 * _signCosY) atan2 (_up select 2 * _signCosY); _zRot = (_direction select 0 * _signCosY) atan2 (_aside select 0 * _signCosY); } else { _zRot = 0; if (_up select 0 < 0) then { _yRot = 90; _xRot = (_aside select 1) atan2 (_aside select 2); } else { _yRot = -90; _xRot = (-(_aside select 1)) atan2 (-(_aside select 2)); }; }; [_xRot, _yRot, _zRot] };Перейти к сообщению
Сообщений в теме: 2
#1 OFFLINE
Отправлено 13 December 2018 - 23:03
#2 OFFLINE
Отправлено 13 December 2018 - 23:54
Нашел вот это:
, но оно не работает как нужно, если менять что то одно а остальное оставлять на 0, то все нормально, но если скомбинировать, то числа уже неверные.Сообщение отредактировал nIkRon: 14 December 2018 - 00:22
#3 OFFLINE
Отправлено 14 December 2018 - 16:59 Лучший Ответ
cursorObject call { private _direction = vectorDir _this; private _up = vectorUp _this; private _aside = _direction vectorCrossProduct _up; private ["_xRot", "_yRot", "_zRot"]; if (abs (_up select 0) < 0.999999) then { _yRot = -asin (_up select 0); private _signCosY = if (cos _yRot < 0) then { -1 } else { 1 }; _xRot = (_up select 1 * _signCosY) atan2 (_up select 2 * _signCosY); _zRot = (_direction select 0 * _signCosY) atan2 (_aside select 0 * _signCosY); } else { _zRot = 0; if (_up select 0 < 0) then { _yRot = 90; _xRot = (_aside select 1) atan2 (_aside select 2); } else { _yRot = -90; _xRot = (-(_aside select 1)) atan2 (-(_aside select 2)); }; }; [_xRot, _yRot, _zRot] };