Angenommen, ich habe ein Rechteck mit einem Punkt (die obere linke Ecke) definiert ist, und eine Breite und Höhe wie diese (in C++):Rectangle Kollision bestimmt Seite
class Rectangle
{
public:
Rectangle(float _x, float _y, float _width, float _height);
~Rectangle();
float X, Y, Width, Height;
bool intersects(Rectangle& _rect)
{
return (
(X < _rect.X + _rect.Width)&&
(X + Width > _rect.X)&&
(Y < _rect.Y + _rect.Height)&&
(Y + Height > _rect.Y)
);
}
}
Die obige intersects
Funktion gibt wahr zurück, wenn die Rechtecke überlappen - wenn sie kollidieren. Aber was, wenn ich herausfinden möchte, welche Seite des Rechtecks das andere Rechteck kollidiert mit? Wie würde ich das machen (effizient, aber keine Priorität)?
Ihre Funktion gibt 'true' zurück, wenn Rechteck A vollständig innerhalb des Rechtecks B ist. Auf welcher Seite" kollidieren "sie? Was ist mit Rechtecken mit zwei überlappenden Seiten? – dasblinkenlight
... oder wenn eine Ecke eines Rechtecks vollständig innerhalb der anderen liegt, wobei die anderen drei Ecken vollständig außerhalb liegen. Was jetzt? –
Nun, das ist nur allgemein zu testen, ob sie sich "berühren". Was für mich ausreichend ist. Wenn ein Rechteck innerhalb eines anderen Reckrangels ist und dies wahr zurückgibt, ist das für mich akzeptabel. Aber ich möchte mit dieser Art von Rechteck wissen, wie ich auf eine richtige Kollision prüfen kann, das heißt, herauszufinden, welche Seite mit einem anderen Rechteck kollidiert. – calcyss