Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Получение нормали к поверхности
Получение нормали к поверхности
tonline_kms65 Дата: Понедельник, 17.07.2017, 18:31:09 | Сообщение # 1
Сообщений: 179
Репутация: 2 [ +/- ]
Всем привет. Появился такой вопрос - в чем измеряется значение нормали полученное TR_GetPlaneNormal ?

Для понятности сделал видео, синий луч показывает какое место измеряется.
По центру экрана вывел значение нормали. Понятно что 1.000000 это перпендикуляр (т.е. 90 градусов)
Так вот вопрос - в чем измеряются эти значения? Это радианы? Или градусы? Или еще что то? Как понять эти значения?

ЮТУБ
https://youtu.be/6PrUtfTToQo

Вот так может быть будет понятнее:


Если судить по таблице Брадиса http://mozgan.ru/Table/TableBradis, то похоже что это значения - синус угла.

Добавлено (17.07.2017, 18:31:09)
---------------------------------------------
Всё, разобрался.
Все просто. На всякий случай нужно еще потестировать, но уже видно что все ОК. Выдает значение - синус угла.

Цитата
  GetVectorAngles(f_norm, f_angles);                //здесь конвертирую полученный вектор в угол
это не нужно.


Сообщение отредактировал tonline_kms65 - Понедельник, 17.07.2017, 22:58:43
 
Nail Дата: Среда, 19.07.2017, 20:43:42 | Сообщение # 2
Сообщений: 4
Репутация: 0 [ +/- ]
GetVectorAngles передает управление в SDK mathlib.cpp

Код
void VectorAngles( const float *forward, float *angles )
{
    Assert( s_bMathlibInitialized );
    float    tmp, yaw, pitch;
    
    if (forward[1] == 0 && forward[0] == 0)
    {
  yaw = 0;
  if (forward[2] > 0)
   pitch = 270;
  else
   pitch = 90;
    }
    else
    {
  yaw = (atan2(forward[1], forward[0]) * 180 / M_PI);
  if (yaw < 0)
   yaw += 360;

  tmp = sqrt (forward[0]*forward[0] + forward[1]*forward[1]);
  pitch = (atan2(-forward[2], tmp) * 180 / M_PI);
  if (pitch < 0)
   pitch += 360;
    }
    
    angles[0] = pitch;
    angles[1] = yaw;
    angles[2] = 0; //roll
}

получается 2 угла по осям x и y, вращение по z всегда 0.
https://ru.wikipedia.org/wiki/Полярная_система_координат

т.к. радианы = градусы * Пи/180, то выходит что результирующие углы заданы в градусах


Сообщение отредактировал Nail - Среда, 19.07.2017, 20:44:23
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Получение нормали к поверхности
Страница 1 из 11
Поиск: