znowu canvas :)

0

mam narysowane dwie linie
moveto(0, 0);
lineto(clientwidth, clientheight);
oraz
moveto(clientwidth, 0);
lineto(0, clientheight);

one przecinaja sie - w jaki sposob wyswietlic w labelu(ach) punkt przeciecia sie linii [???]

0

Wystarczy rozwiązać ukł. równań :)
y = ClientHeight/ClientWidthx
y = ClientHeight-ClientHeight/ClientWidth
x
Z czego mamy:
y := ClientHeight/2;
x := ClientWidth/2;
Co można było oczywiście zauważyć na samym początku :)

0

a gdy mam cos takiego [???]

canvas.MoveTo(54,65);
canvas.lineto(156, 165);
canvas.MoveTo(156, 65);
canvas.LineTo(54, 165);

0

Wzór ogólny prostej przechodzącej przez dwa punkty A i B:
y = (B.x - A.x)/(B.y - A.y)*(x - A.x) + A.y
Oczywiście o ile A.y B.y Wówczas po prostu y = A.y

Więc jeżeli mamy dwie proste AB i CD to mamy układ do rozwiązania:
y = (B.x - A.x)/(B.y - A.y)(x - A.x) + A.y
y = (D.x - C.x)/(D.y - C.y)
(x - C.x) + C.y
Nie chce mi się tego dalej rozpisywać i upraszczać, więc tylko ogólne rozwiązanie podam.
Dla ułatwienia przyjmijmy:
tg1 = (B.x - A.x)/(B.y - A.y)
tg2 = (D.x - C.x)/(D.y - C.y)
W = tg2 - tg1
Wx = tg2C.x - tg1A.x + A.y - C.y
Wy = tg1*(tg2C.x - C.y) - tg2(tg1*A.x - A.y)
x = Wx/W
y = Wy/W

I radzę trochę poczytać o geometrii analitycznej oraz rozwiązywaniu ukł. równań liniowych :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1