Здравствуйте, в параметрах объекта который поставлен в редакторе есть колонки под позицией, которые называются "Вращение", они же 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]
};











