Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobrý den,
mohl by mi někdo prosím poradit (nebo třeba i jen naťuknout) jak spočítat Z hodnotu bodu průniku mezi úsečkou a válcem, když znám X a Y hodnotu?
Pro lepší představu jsem nakreslil obrázek. Počítání ve 3D je složitější a tak jsem si vytvořil řez válcem - díky čemž jsem dostal 2D kružnici. Průnik až dvou bodů si jsem díky tomu jednoduše a rychle spočítal avšak chybí mi hodnota osy Z, tj. "hloubka".
Válec je definován poloměrem a délkou (osa Z). Úsečka je definována dvěma 3D Body Z a K. Díky převedení do 2D a vypuštění Z hodnoty jsem získal dva 2D body A a B (červené x a y jsou získané hodnoty bodu A). Jak nejjednodušeji nyní dopočítat hodnotu Z?
Děkuji!
SpaM
Obrázek:
Offline
Zdravím,
pokud je přímka zadána 2 body v prostoru, potom lze sestavit její parametrický zápis (3 rovnice s parametrem t). Válcový povrch (se středem 0, 0 a poloměrem r se zapíše v prostoru rovnici
. Dosazením souřadnic x, y (z rovnice přímky) do předpisu válcového povrchu se určí parametr t, který potom lze dosadit do z (z rovnice přímky, také do x, y) a získat tak požadované kompletní souřadnice. Je to to, co potřebuješ? Děkuji.
Offline
Děkuji Jeleno za odpověď.
Parametrické rovnici válce jsem se chtěl vyhnout, jelikož pak mohu válec nahradit čímkoliv jiným. Promítnutím válce (nebo jakéhokoliv objektu) do 2D roviny a vypočítání 2D průniků je jednoduché. To není třeba řešit, důležité je, že vypadnou body průniků s hodnotami X a Y. Vypočítání hodnoty Z jsem pak chtěl řešit přes trojúhelníky. Nakreslil jsem proto další obrázek (viz. níže).
Na obrázku je z bočního pohledu válec. Jeho začátek v ose Z = 0. Když znám u bodů Z a K vše, tak dopočítání bodu A a B by mělo jít řešit přes pravoúhlý trojúhelník. Nevím ale, zda-li je takové řešení správné?
Ještě jen dodám. Tím válcem jsem to asi vše zkomplikoval. Když si představíme, že není a známe jen popsané body? Lze ze dvou 3D bodu a dvou 2D bodů (ale ležících na té úsečce) dopočítat i hodnotu "z"?
Offline
↑ unknow005:
také děkuji. Pokud bych to měla řešit obecně, tak plochu v prostoru lze popsat funkci dvou proměnných
. Pokud mám přímku v parametrickém tvaru (
,
,
), při hledání průsečíku přímky a plochy hledáme řešení rovnice s jednou neznámou:
, což je prakticky proveditelné (i pomocí strojových výpočtů v případě některých "divočejších" funkcí zadávajících povrch).
To není třeba řešit, důležité je, že vypadnou body průniků s hodnotami X a Y.
to znamená, že "vypadnou" body=projekce bodů průsečíků do roviny
. Opět lze pracovat s parametrickým tvarem přímky v prostoru (kterou jednoznačně zadávají body K, Z), aby se zpětně našla pozice bodů A, B na přímce KZ (tedy i včetně z-souřadnice). Stalo by za to upřesnit, zda sestavení parametrické rovnice přímky KZ je jasné.
tak dopočítání bodu A a B by mělo jít řešit přes pravoúhlý trojúhelník.
to by také šlo, výhodou využití analytického vyjádření je to, že vůbec nemusíš pracovat s obrázkem, jen s výpočtem. Zůstala bych spíš u ujasnění parametrického tvaru přímky, který se mi zda pro práci v prostoru jako dost podstatný pojem.
Rozumíme se? Děkuji.
Offline
Vše mi přijde složité. Zkoušel jsem spočítat Z hodnoty bodů průniku přes trojúhelníky a pořád to nebylo ono. Nakonec jsem to vyřešil jednoduchým poměrem:
1) zjistím si vzdálenost "xy" mezi body Z a K
2) zjistím si vzdálenost "z" mezi body Z a K
3) zjistím si vzdálenost "xy" mezi body Z a A
4) spočítám si procentuálně v jaké vzdálenosti leží bod A od bodu Z
5) hodnota "z" bodu A je pak procentuální rozdíl spočítaný v bodě 4
otestováno a funguje za všech okolností správně.
Vesměs vše výše je snaha nahradit složité 3D počítání průniků v prostoru. Válec byl jen příklad. Můžu jej nahradit rovinou, částí válce a jinými tvary.
Děkuji za rady.
Offline
↑ unknow005:
také děkuji. Pokud jsem správně porozuměla popisu výpočtu, je to varianta využití podobnosti trojúhelníků (což lze očekávat, pokud se pracuje s úsečkou v prostoru s její projekci do jedné ze souřadnicových rovin).
otestováno a funguje za všech okolností správně.
potom je všechno v pořádku - pokud splňuje Tvé praktické záměry, co více lze přát :-)
Vesměs vše výše je snaha nahradit složité 3D počítání průniků v prostoru.
To nedokáží posoudit, představím si, že např. hledám průsečík plochy dané předpisem s přímkou, kterou jsem si vymyslela (prochází počátkem a bodem (5, 3, 2), jelikož plocha se nějakým způsobem opakuje (v zápisu má periodickou funkci sin(x)), dostanu hodně různých průsečíků daných předpisem - řešením soustavy. Situaci mám usnadněnou použitím počítačového výpočtu. Ručně bych si musela nejspíš poradit nalezením vhodných řezů. Toto jen na doplnění důvodů použití parametrického zápisu přímky v prostoru.
Popř. doplní kolegové, kdo s tím má větší praktické zkušenosti. Kolegům děkuji.
Offline
ahoj ↑ unknow005:,
ano je to složité - a nejsložitější na tom je pochopit, co vlastně chceš. Musíš se vyjadřovat tak, aby tomu bylo aspoň trochu rozumět. Zatím je to jeden velký guláš. Některé body na tvé přímce mají dvě souřadnice, některé tři - to nejde. Říkáš, žes vytvořil řez a namaloval jsi kružnici. Řezem válcové plochy je kružnice pouze v případě, když válec řežeš kolmo na osu - a tomu zase neodpovídají souřadnice bodů na přímce. Jednou říkáš, že tam ten válec je, pak zjistíš, že je to komplikované, a tak řekneš, že tam není.
Jaké body tedy vlastně počítáš?
PS: Body K, B, A, Z (druhý obrázek) neleží na jedné přímce...
Offline
Počítání 3D průniku je problematické u objektů, které se nadají tak snadno popsat jako třeba válec. Řez na osu (v našem případě je to osa Z) vytvoří jednoduchý 2D obrazec u kterého lze velmi snadno spočítat průniky libovolné přímky. Proč? Protože ve 3D (při použití reálných čísel) nelze například určit přesný průnik dvou 3D přímek (pokud nejsou osově rovnoběžné). Řeší se to určením dvou nejbližších bodů a pokud je jejich vzdálenost od sebe menší něž nějaké "Epsilon" číslo, tak to prohlásíme za průnik. To je důvod proč to počítám přes 2D u kterého něco podobného nenastává. :)
Offline
↑ unknow005:
Ale ty informuješ niekde od stredu.
Nikde nepíšeš o čo vlastne ide.
Aké prieniky, prečo prieniky, čo to je vlastne za situácia... ani tomu Eratosthenovi si podľa mňa vôbec neodpovedal.
Čo to vlastne vyrábaš?
Offline
↑ unknow005:
Vůbec ti nerozumím. Na popisu válce není nic složitého. Co to je "řez na osu"? Těleso můžeš řezat rovinou, ale nikoliv přímkou, natož osou. Průniky přímky s plochou neurčíš tak, že místo plochy vezmeš nějaký "jednoduchý obrazec". "Přesný průnik 3D přímek" určit samozřejmě lze (i přesný průnik přímky s válcem) a je to velmi jednoduché. Pokud jsou přímky rovnoběžné, pak buď nemají žádný společný bod, anebo mají společné všechny body. Znám pojem přímky rovnoběžné různé. Pojem "přímky osově rovnoběžné" neznám. S nějakými epsilony (tolerancemi) můžeš počítat vždy a je úplně jedno, jestli ve 2D, anebo 3D. To červené, co maluješ, není podle napsaných souřadnic) přímka a nějaké tolerance to nespraví - to by musely být tolerance v řádu jednotek a to pak nemá cenu nic počítat.
PS: Je to něco takového?
Offline
Áno, to je krásný obrázek. A přesně tak jsem to myslel.
Když si válec promítnete z pohledu osy "Z" tak máte kružnici. Z 3D úsečky vznikne 2D úsečka. Díky tomu se snadněji vypočítají body "A" a "B", ale jen v 2D prostoru. A má původní otázka byla ohledně dopočítání třetího rozměru.
Nyní to počítám poměrem rozdílu bodu "Z" a "K" v ose "Z". Funguje to tak a nemusím přemýšlet o žádné trigonometrii a tak podobně.
Offline
↑ unknow005:
no, nevím, jak to funguje, souřadnice bodů A, B máš určitě špatně. Moc na tom k přemýšlení ani k převodům do 2D není, zvlášť jestli to programuješ. Dá se to udělat jednoduše přímo a je to tak na čtyři (možná trochu delší) programové řádky.
Takže: Bod Z označím jako M (ať se neplete s osou z):
rovnice válcové plochy rovnice přímky



Porovnáním pravých stran prvních dvou rovnic

rovnice umocním a sečtu:
Dostávám kvadratickou rovnici pro t, kterou vyřeším a dostanu nula až dvě hodnoty pro t. Dosadím do rovnbice přímky a dostanu všechny souřadnice nula až dvou průsečíků, které hledám.
Jak říkám, v programu tak čtyři řádky kódu...
Offline
Opravdu to funguje, respektive vytvoření 2D obrazce, spočítání "xy" a pak (přes procentuální poměr) zjistit "z".
Má to své výhody: lze to aplikovat na libovolný tvar, který je složený například z úseček a oblouků. A odpadají Epsilon problémy spojené s 3D.
Offline