Schnittpunkt berechnen

Previous topic - Next topic

WPShadow

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.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

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
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est