KorDen
Atra esterní ono thelduin!
- Сообщения
- 2,142
- Реакции
- 1,424
SourceSDK
// why does this work? - это коммент от валв.. И правда, ПОЧЕМУ???
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? - это коммент от валв.. И правда, ПОЧЕМУ???