Průsečík čára – čára - Line–line intersection

Průsečík čar.

v Euklidovská geometrie, průsečík a čára a linka může být prázdná sada, a směřovat nebo řádek. Rozlišování těchto případů a nalezení průsečíku mají využití například v počítačová grafika, plánování pohybu, a Detekce kolize.

v trojrozměrný Euklidovská geometrie, pokud dvě čáry nejsou stejné letadlo se nazývají šikmé čáry a nemají žádný průsečík. Pokud jsou ve stejné rovině, existují tři možnosti: pokud se shodují (nejsou to odlišné čáry), mají nekonečnost společných bodů (jmenovitě všech bodů na jednom z nich); pokud jsou odlišné, ale mají stejný sklon, říká se o nich paralelní a nemají žádné společné body; jinak mají jediný průsečík.

Rozlišovací znaky neeuklidovská geometrie jsou počet a umístění možných průsečíků mezi dvěma liniemi a počet možných linií bez průniků (paralelních linií) s danou linkou.

Vzorce

A nutná podmínka pro protnutí dvou čar je to, že jsou ve stejné rovině - to znamená, že nejsou šikmé čáry. Spokojenost s tímto stavem odpovídá čtyřstěn s vrcholy ve dvou bodech na jedné linii a dvou bodech na druhé linii degenerovat ve smyslu nuly objem. Algebraickou formu této podmínky viz Šikmé čáry § Testování šikmosti.

Dány dva body na každém řádku

Nejprve uvažujeme průnik dvou přímek a ve 2-dimenzionálním prostoru, s přímkou je definován dvěma odlišnými body a a řádek je definován dvěma odlišnými body a .[1]

Křižovatka řádku a lze definovat pomocí determinanty.

Determinanty lze zapsat jako:

Všimněte si, že průsečík je určen pro nekonečně dlouhé čáry definované body, nikoli pro úsečky mezi body a může vytvořit průsečík přesahující délky úseček. Abychom našli polohu průsečíku vzhledem k úsečkám, můžeme definovat úsečky a pokud jde o první stupeň Bézier parametry:

(kde t a u jsou reálná čísla). Průsečík čar je nalezen s jednou z následujících hodnot t nebo u, kde

a

s:

Průsečík spadá do prvního úsečky, pokud je 0,0 ≤t ≤ 1,0 a spadá do druhého segmentu, je-li 0,0 ≤u ≤ 1,0. Tyto nerovnosti lze testovat bez nutnosti dělení, což umožňuje rychlé určení existence jakéhokoli průsečíku úsečky před výpočtem jeho přesného bodu.[2]

Jsou-li obě čáry rovnoběžné nebo shodné, jmenovatel je nula:

Pokud jsou řádky téměř rovnoběžné, pak může počítačové řešení narazit na numerické problémy s implementací výše popsaného řešení: rozpoznání této podmínky může vyžadovat přibližný test v praktické aplikaci. Alternativním přístupem může být otočení úseček tak, aby jeden z nich byl vodorovný, odkud lze snadno získat řešení otočené parametrické formy druhé úsečky. Je třeba pečlivě diskutovat o zvláštních případech (paralelní linie / shodné linie, překrývající se / nepřekrývající se intervaly).

Vzhledem ke dvěma přímkovým rovnicím

The a souřadnice průsečíku dvou nevislých linií lze snadno zjistit pomocí následujících substitucí a přeskupení.

Předpokládejme, že dvě přímky mají rovnice a kde a jsou svahy (přechody) čar a kde a jsou y-koncepty řádků. V místě, kde se tyto dvě čáry protínají (pokud ano), obě souřadnice budou stejné, proto následující rovnost:

.

Tento výraz můžeme přeuspořádat, abychom získali hodnotu ,

,

a tak,

.

Chcete-li najít y koordinovat, vše, co musíme udělat, je nahradit hodnotu X do jedné ze dvou přímkových rovnic, například do první:

.

Proto je průsečík

.

Všimněte si, jestli A = b pak jsou dva řádky paralelní. Li Cd řádky jsou také různé a neexistuje žádný průnik, jinak jsou tyto dvě čáry totožné.

Použití homogenních souřadnic

Používáním homogenní souřadnice, průsečík dvou implicitně definovaných linií lze určit docela snadno. Ve 2D lze každý bod definovat jako projekci 3D bodu, který je dán jako uspořádaný trojnásobek . Mapování z 3D do 2D souřadnic je . Můžeme převést 2D body na homogenní souřadnice tak, že je definujeme jako .

Předpokládejme, že chceme najít průnik dvou nekonečných čar ve 2-dimenzionálním prostoru, definovaném jako a . Můžeme tyto dva řádky reprezentovat souřadnice čáry tak jako a ,

Křižovatka dvou řádků je pak jednoduše dané,[3]

Li čáry se neprotínají.

Více než dva řádky

Průnik dvou řádků lze zobecnit tak, aby zahrnoval další řádky. Existence a výraz pro n- problém průsečíku řádků je následující.

Ve dvou rozměrech

Ve dvou rozměrech, více než dvou řádcích téměř jistě neprotínají se v jednom bodě. Chcete-li zjistit, zda ano, a pokud ano, najít průsečík, napište i-tá rovnice (i = 1, ...,n) tak jako a tyto rovnice skládejte do maticového tvaru jako

Kde i-tá řada n × 2 matice A je , w je vektor 2 × 1 (x, y)Ta i-tý prvek vektoru sloupce b je bi. Li A má nezávislé sloupce, jeho hodnost je 2. Pak právě tehdy, pokud je hodnost rozšířená matice [A | b ] je také 2, existuje řešení maticové rovnice a tedy průsečík n řádky. Průsečík, pokud existuje, je dán vztahem

kde je Moore-Penrose zobecnil inverzní z (který má formu zobrazenou, protože A má celé pořadí sloupců). Alternativně lze řešení najít společným řešením jakýchkoli dvou nezávislých rovnic. Ale pokud hodnost A je pouze 1, pak je-li hodnost rozšířené matice 2, neexistuje řešení, ale pokud je její hodnost 1, pak se všechny řádky shodují.

Ve třech rozměrech

Výše uvedený přístup lze snadno rozšířit do tří dimenzí. Ve třech nebo více dimenzích se téměř jistě neprotínají ani dvě čáry; jsou volány páry neparalelních linií, které se neprotínají šikmé čáry. Pokud ale křižovatka existuje, lze ji najít následovně.

Ve třech rozměrech je čára reprezentována průsečíkem dvou rovin, z nichž každá má rovnici tvaru Tedy soubor n řádky mohou být reprezentovány 2n rovnice v trojrozměrném souřadnicovém vektoru w = (X, y, z)T:

kam teď A je 2n × 3 a b je 2n × 1. Stejně jako dříve existuje jedinečný průsečík právě tehdy A má celé pořadí sloupců a rozšířenou matici [A | b ] ne, a jedinečný průnik, pokud existuje, je dán vztahem

Nejbližší body ke zkoseným čarám

Ve dvou nebo více dimenzích můžeme obvykle najít bod, který je vzájemně nejblíže ke dvěma nebo více přímkám v a nejmenší čtverce smysl.

Ve dvou rozměrech

V dvourozměrném případě první představuje čáru i jako bod, , na lince a a jednotka normální vektor, , kolmo k této přímce. To je, pokud a jsou body na řádku 1, pak nechte a nechte

což je jednotkový vektor podél čáry otočený o 90 stupňů.

Všimněte si, že vzdálenost od bodu, X na řádek darováno

A tak na druhou vzdálenost od bodu, X, na řádek je

Součet čtverců vzdáleností k mnoha řádkům je nákladová funkce:

To lze přeskupit:

Abychom našli minimum, rozlišujeme s ohledem na X a nastavte výsledek rovný nulovému vektoru:

tak

a tak

Ve více než dvou dimenzích

Zatímco není dobře definován ve více než dvou dimenzích, lze to zobecnit na libovolný počet dimenzí je jednoduše (symetrická) matice s jednotou všech vlastních čísel kromě nulové vlastní hodnoty ve směru podél linie poskytující seminář na vzdálenost mezi a další bod udávající vzdálenost k přímce. V libovolném počtu rozměrů, pokud je jednotkový vektor podél the i-tý řádek, tedy

se stává

kde je matice identity atd[4]

Obecná derivace

Abychom našli průsečík sady přímek, vypočítáme bod s minimální vzdáleností od nich. Každý řádek je definován počátkem a jednotkový směrový vektor, . Čtverec vzdálenosti od bodu jeden z řádků je dán Pythagorasem:

Kde: je projekce: na lince . Součet vzdáleností od čtverce ke všem řádkům je:

Abychom tento výraz minimalizovali, rozlišujeme jej s ohledem na .

Výsledkem je:

Kde je matice identity. Toto je matice , s řešením , kde , je pseudo-inverzní .

Viz také

Reference

  1. ^ „Weisstein, Eric W.“ Line-Line Intersection. „From MathWorld“. Webový zdroj Wolfram. Citováno 2008-01-10.
  2. ^ Antonio, Franklin (1992). „Kapitola IV.6: Rychlejší průsečík segmentů linky“. V Kirk, David (ed.). Grafické drahokamy III. Academic Press, Inc. str. 199–202. ISBN  0-12-059756-X.
  3. ^ "Homogenní souřadnice". robotics.stanford.edu. Citováno 2015-08-18.
  4. ^ Traa, Johannes. „Křižovatka nejmenších čtverců“ (PDF). Citováno 30. srpna 2018.

externí odkazy