Есть следующее вычисления, не могу разобраться, по какой формуле производиться расчет конечного вектора, по какой теореме, есть ли здесь знатоки математики?
C++:
// относительно vAngle объекта можем сместить конечную точку под конкретным углом
/*
static Float:vAngle[3];
get_entvar( entity, var_angles, vAngle ) // получаем угол объекта
vAngle[ 0 ] += 10.0 // сдвиг вверх-вниз относительно объекта
vAngle[ 1 ] += 10.0 // сдвиг влево-вправо относительно объекта
*/
static Float:vForward[3], Float:vEnd[3], Float:vecEnd2[3];
angle_vector( vAngle, ANGLEVECTOR_FORWARD, vForward ) // вектор угла в вектор направляем вперед
// с этим так и не разобрался какой расчет он реализует, но понял, что 9999 это растояние в юнитах до конечной точки
// но это связано с работой перевода вектора направления в конечную точку
vEnd[0] = vOrigin[0] + vForward[0] * 9999
vEnd[1] = vOrigin[1] + vForward[1] * 9999
vEnd[2] = vOrigin[2] - vForward[2] * 9999
// с текущей позиции vOrigin направляем луч до конечной точки vEnd
engfunc( EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, entity, 0 ) // учитываем любые преграды на пути DONT_IGNORE_MONSTERS
get_tr2( 0, TR_vecEndPos, vecEnd2 ) // получаем точку, на которой луч остановился vecEnd2