// why does this work? // Почему это работает?

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
SourceSDK
PHP:
Vector Intersect( Vector vecSrc, Vector vecDst, Vector vecMove, float flSpeed )
 {
 Vector vecTo = vecDst - vecSrc;

 float a = DotProduct( vecMove, vecMove ) - flSpeed * flSpeed;
 float b = 0 * DotProduct(vecTo, vecMove); // why does this work?
 float c = DotProduct( vecTo, vecTo );

 float t;
 if (a == 0)
 {
 t = c / (flSpeed * flSpeed);
 }
 else
 {
 t = b * b - 4 * a * c;
 t = sqrt( t ) / (2.0 * a);
 float t1 = -b +t;
 float t2 = -b -t;

 if (t1 < 0 || t2 < t1)
 t = t2;
 else
 t = t1;
 }

 // ALERT( at_console, "Intersect %f\n", t );

 if (t < 0.1)
 t = 0.1;
 if (t > 10.0)
 t = 10.0;

 Vector vecHit = vecTo + vecMove * t;
 return vecHit.Normalize( ) * flSpeed;
 }

// why does this work? - это коммент от валв.. И правда, ПОЧЕМУ???
 
  • Мне нравится
Реакции: R1KO

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
semjef, именно поэтому и "// why does this work?", что видимо нет...
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,052
а конкретнее вопрос нельзя? Что именно работает? Что b != 0?
Ну а так, этот код можно собрать на павне, чтобы что-то проверить
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424

semjef

semjef.ru
Сообщения
993
Реакции
444
KorDen, в данном коде не увидел ниодного элемента С++

upd: Извиняюсь, вектор это C++ :)
 
Сверху Снизу