Also, Um zu prüfen, ob eine Strecke eine Diagonale ist, musst du ja nur die Anfangspunkte der Strecke auf Übereinstimmung mit den Eckpunkten des Polygons testen. So nach dem Motto:
Delphi-Quellcode:
// S(Xs;Ys) ist Startpunkt der Strecke
// P(Xp;Yp) ist Eckpunkt des Polygons
if (Xs=Xp) and (Ys=Yp)
then ;// Strecke startet auf Eckpunkt
// für Endpunkt und andere Ecken analog verfahren!
um das mit den doppelten Schnittpunkten zu prüfen, erstellst du einen Record, der die beiden Schnittpunkte aufnehmen kann, ist der neu gefunden schon drin, entfällt er.
Ich hoffe ich hab dich richtig verstanden