Nájdenie priesečníkov v Microsoft Visual Basic 6.0

Programovacie jazyky, rady, poradňa...
Schyl2o
Star
Star
Používateľov profilový obrázok
Príspevky: 534
Registrovaný: 09 jún 2005, 15:28
Bydlisko: Trnava
Kontaktovať používateľa:

Nájdenie priesečníkov v Microsoft Visual Basic 6.0

Príspevok od používateľa Schyl2o »

Prosim vas, mam jeden picturebox , v nom vykreslenu napr priamku a obdlznik a chcel by som vediet ako dokazem zistit ich priesecniky.
Dakujem
Schyl2o
Star
Star
Používateľov profilový obrázok
Príspevky: 534
Registrovaný: 09 jún 2005, 15:28
Bydlisko: Trnava
Kontaktovať používateľa:

Príspevok od používateľa Schyl2o »

nikto nema ani potuchy?
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

neviem co presne o tych objektoch vies ale ak vies body, tak vies pouzit analyticku geometriu
Schyl2o
Star
Star
Používateľov profilový obrázok
Príspevky: 534
Registrovaný: 09 jún 2005, 15:28
Bydlisko: Trnava
Kontaktovať používateľa:

Príspevok od používateľa Schyl2o »

mastermind napísal:neviem co presne o tych objektoch vies ale ak vies body, tak vies pouzit analyticku geometriu
no zadavam ich pomocou suradnic x a y, tak viem ich suradnice
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

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

Kód: Vybrať všetko

Xp = xa  +  (xb - xa)*t 
Yp = ya  + (yb - ya)*t
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

Kód: Vybrať všetko

Xcd = xc  +  (xd - xc)*t2
Ycd = yc  + (yd - yc)*t2
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

Kód: Vybrať všetko

xa  +  (xb - xa)*t   = xc  +  (xd - xc)*t2
ya  + (yb - ya)*t  = yc  + (yd - yc)*t2
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
Napísať odpoveď