Hi,
ich scheitere mal wieder an Mahte :rant:
Kann mir irgendwer sagen, wie ich den Schnittpunkt von 2 Linien berechne? Ich grabe mich durch sämtliche Tutorials, aber ich komme nicht drauf.
Von beiden Linien habe ich Start und Endpunkt... :S
LG
W.
So, ich habe eine Lösung...
Sie ist nicht schön, aber sie funktioniert:
DRAWLINE 150, 50, 400, 300, RGB(255, 0, 0)
DRAWLINE 100, 250, 500, 50, RGB(0, 255, 0)
SETPIXEL 266, 166, RGB(255, 255, 255)
calculate_intercept(150, 50, 400, 300, 100, 250, 500, 50)
SHOWSCREEN
KEYWAIT
END
FUNCTION calculate_intercept: x_1_start, y_1_start, x_1_end, y_1_end, x_2_start, y_2_start, x_2_end, y_2_end
LOCAL numerator, denominator, u
LOCAL hit, intercept_x, intercept_y
numerator = ((x_2_end - x_2_start) * (y_1_start - y_2_start)) - ((y_2_end - y_2_start) * (x_1_start - x_2_start))
denominator = ((y_2_end - y_2_start) * (x_1_end - x_1_start)) - ((x_2_end - x_2_start) * (y_1_end - y_1_start))
u = numerator / denominator
IF numerator = 0 AND denominator = 0
hit = FALSE
ENDIF
IF denominator = 0
hit = FALSE
ENDIF
IF u > 0
hit = TRUE
intercept_x = x_1_start + u * (x_1_end - x_1_start)
intercept_y = y_1_start + u * (y_1_end - y_1_start)
ENDIF
DEBUG intercept_x + " " + intercept_y
ENDFUNCTION
Ich habe in der Funktion keinen Rückgabewert eingebaut, da ich das Ganze sowieso an Types übergebe. Aber die Werte werden korrekt berechnet! :good:
@Schranz0r: du kannst im Fall der Fälle nach Math verschieben, wenn du willst