Esempio n. 1
0
inline CouNumber exprLBDiv::operator () () {

  register CouNumber n = (*(arglist_ [0])) ();
  register CouNumber N = (*(arglist_ [1])) ();
  register CouNumber d = (*(arglist_ [2])) ();
  register CouNumber D = (*(arglist_ [3])) ();
                                               // (n,N,d,D)     lb 
  if (d > 0)                                   // (?,?,+,+)
    if   (n > 0)    return safeDiv (n,D,-1);      // (+,+,+,+) --> n/D
    else            return safeDiv (n,d,-1);      // (-,?,+,+) --> n/d
  else { // d <= 0
    if      (D > 0) return - COUENNE_INFINITY; // (?,?,-,+) --> unbounded
    else if (N > 0) return safeDiv (N,D,-1);      // (?,+,-,-) --> N/D
    else            return safeDiv (N,d,-1);      // (-,-,-,-) --> N/d
  }
}
Esempio n. 2
0
Vector &Vector::normalize()
{
	float t = this->mod();
	return *this = safeDiv(*this, t, NULL_VECTOR);
}
Esempio n. 3
0
float Vector::raySectPlane(Vector &p, Vector &v, Vector &n)
{
	float t = n | *this;
	return safeDiv(n | (v - p), t, BIG_NUMBER);
}