Prosim vas, mam jeden picturebox , v nom vykreslenu napr priamku a obdlznik a chcel by som vediet ako dokazem zistit ich priesecniky.
Dakujem
Nájdenie priesečníkov v Microsoft Visual Basic 6.0
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
tak v tom pripade je to jednoduche. takze nech je priamka dana bodmi A, B so suradnicami A[xa,ya] B[xb,yb] a obdlznik dany bodmi C, D, E, D ktore maju suradnice velmi podobne oznacene ako body A, B
Priamku vies vyjadrit ako sustavu 2 parametrickych rovnic a to
kde t je parameter (lubovolne realne cislo) a Xp a Yp su suradnice bodov ktore lezia na priamke pre konkretnu hodnotu parametra t. Takze ak je parameter t=1 tak mame jeden bod priamky, ak je rovny 2 tak mame dalsi bod, atd.
s obdlznikom to bude velmi podobne, akurat ze budes musiet kazdu stranu obdlznika vypisat samostatne a ze parameter nebude lubovolne realne cislo ale iba lubovolne realne cislo z intervalu <0,1>
takze napr strana CD
kde t2 je realne cislo z intervalu <0,1>
takze hladajme teraz priesecnik priamky so stranou CD. to znamena ze aj priamka aj usecka musia obsahovat bod s rovnakymi suradnicami. teda mozme dat rovnice do rovnosti
tu si musis uvedomit ze poznas vsetko okrem parametrov t a t2. mas teda sustavu 2 rovnic o 2 neznamych. to vies bez problemov vyriesit. ak najdes take riesenie, ze t je realne cislo a t2 je z intervau <0,1> potom existuje prave jeden priesecnik, ktoreho suradnice ziskas tak, ze vypocitane t (resp t2) dosadis do prvej (resp. druhej) sustavy rovnic.
aj by som ti napsial kod, ale vo visual basicu sa mi to velmi nechce, pretoze nemam cas hrat sa so syntaxou ktoru som uz davno nevidel
ak vies nejaky iny jazyk (PHP, C#, Java...) tak napis a mozem ti to napisat v tom, a ty si to uz len prepises
Priamku vies vyjadrit ako sustavu 2 parametrickych rovnic a to
Kód: Vybrať všetko
Xp = xa + (xb - xa)*t
Yp = ya + (yb - ya)*t
s obdlznikom to bude velmi podobne, akurat ze budes musiet kazdu stranu obdlznika vypisat samostatne a ze parameter nebude lubovolne realne cislo ale iba lubovolne realne cislo z intervalu <0,1>
takze napr strana CD
Kód: Vybrať všetko
Xcd = xc + (xd - xc)*t2
Ycd = yc + (yd - yc)*t2takze hladajme teraz priesecnik priamky so stranou CD. to znamena ze aj priamka aj usecka musia obsahovat bod s rovnakymi suradnicami. teda mozme dat rovnice do rovnosti
Kód: Vybrať všetko
xa + (xb - xa)*t = xc + (xd - xc)*t2
ya + (yb - ya)*t = yc + (yd - yc)*t2aj by som ti napsial kod, ale vo visual basicu sa mi to velmi nechce, pretoze nemam cas hrat sa so syntaxou ktoru som uz davno nevidel
ak vies nejaky iny jazyk (PHP, C#, Java...) tak napis a mozem ti to napisat v tom, a ty si to uz len prepises