Két vonal keresztezi egymást?
Egy olyan algritmuson agyalok amivel ki lehet számolni ha két vonal egymásba ér.
A1,A2: TPointF;
B1,B2: TPointF;
Function Vonalakösszeernek( A1,A2,B1,B2: TPointF ): Boolean;
Valaki tud ilyen algoritmust?
Te találtad ki?
Ha lehet fokozni hogy hol ér össze... akkor az mégjobb.
Mármint a pontok által meghatározott két egyenes vagy két szakasz?
Egyenesek esetén egy kis segítség:
Két szakasz érintkezésének pontja.
Köszi a választ.
A két szakaszod leírhatóak a következő képletekkel:
S1=A1+(A2-A1)*t1 és S2=B1+(B2-B1)*t2, ahol 0<=t1<=1 és 0<=t2<=1
Ott metszik egymás ahol a S1=S2, azaz
A1+(A2-A1)*t1=B1+(B2-B1)*t2
Két egyenlet (x-re és y-ra külön fel lehet őket írni) és két ismeretlen (t1, t2). Meg kell oldani, hajrá.
Ha megvan a t1 és t2, megnézed hogy teljesíti e a feltételt: 0<=t1<=1 és 0<=t2<=1 (azaz a metszéspont a szakaszon belül van e). Visszahelyettesítesz és megvan a metszéspont.
Vigyázz, ha nem megoldható az egyenletrendszer pl. 0-val osztás miatt, akkor a két szakasz párhuzamos, azt külön kell kezelni (ezt rád bízom).
Csak párszáz évvel késtél el.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!