S
ich habe mir ne eigene template-klasse Rect gebastelt. hier mal zwei funktionen zum testen auf einen punkt innerhalb eines rechtecks und auf ueberschneidung (liefert nur true/false, keinen schnittpunkt).
Left, Right, Top, Bottom sind natuerlich auch vom Typ T.
//---------------------------------------------------------------------------
// Funktion prüft ob der übergebenen Punkt innerhalb des Rechtecks liegt
// -> ein Punkt liegt innerhalb des Rechtecks, wenn er sich auf der
// oberen bzw. linken Seite oder innerhalb aller 4 Seiten befindet
// -> ein Punkt auf der rechten oder unteren Seite liegt ausserhalb!
//---------------------------------------------------------------------------
template <typename T>
inline bool Rect<T>::Contains(const T &x, const T &y) const
{
return ((x >= Left) && (x < Right) && (y >= Top) && (y < Bottom));
}
//---------------------------------------------------------------------------
// Funktion prüft ob sich die beiden Rechtecke überschneiden.
//---------------------------------------------------------------------------
template <typename T>
inline bool Rect<T>::Intersect(const Rect<T> &rhs) const
{
return (Contains(rhs.Top, rhs.Left) || Contains(rhs.Bottom, rhs.Right));
}
wie du siehst, sinds effektiv nur 2 zeilen code (nur das was in den funktionen steht zählt)