GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2014-Jan-17

Title: Schnittpunkt berechnen
Post by: WPShadow on 2014-Jan-17
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.
Title: Re: Schnittpunkt berechnen
Post by: Schranz0r on 2014-Jan-17
Title: Re: Schnittpunkt berechnen
Post by: WPShadow on 2014-Jan-17
So, ich habe eine Lösung...

Sie ist nicht schön, aber sie funktioniert:

Code (glbasic) Select

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