Das ist relativ einfach. Du musst für jede der Seiten überprüfen, auf welcher Seite davon der Punkt liegt. Liegt er bei allen auf der Innenseite, liegt er auch im Rechteck. Und das geht so, für jede Seite:
1. Seite in Gerade umwandeln, und zwar in Parameterform:
g1: x = s + p1 * r1
Dabei ist s für die erste Gerade A, für die zweite B etc.
r1 ist dann (B-A), (C-B) etc.
2. Senkrechten Vektor zu Vektor r1 finden (Punktprodukt):
cos(90°) = 0 = (r1 * r2) / (|r1| * |r2|)
Dabei gilt: Zähler muss 0 sein, damit das ganze 0 ist.
3. Gerade in Parameterform erstellen, die r2 als Richtungsvektor und P als Stützvektor hat:
g2: x = P + p2 * r2
4. Schnittpunkt g1 g2 berechnen:
s + p1 * r1 = P + p2 * r2
5. Wenn du immer im Uhrzeigersinn gehst, wird der Parameter p2 immer positiv oder negativ sein für den Schnittpunkt. Das musst du mal ausprobieren, davon ist dann abhängig, auf welcher Seite der Geraden der Punkt P liegt.
Im R³ wird's übrigens einfacher, weil man r2 entweder schon hat (wenn man die Ebenen als Normalenform hat) oder direkt aus dem Kreuzprodukt der beiden Richtungsvektoren bekommt.
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.