Zobrazit plnou verzi příspěvku: Kruznica v 3D

pajo5
31.08.2007, 13:08
Viete poradit ako nakreslit pomocou AutoLispu kruznicu cez tri 3Dbody v 3D priestore AutoCADu?
Dik za kazdu radu.

Vladimír Michl
31.08.2007, 13:48
Můžete body použít pro nadefinování USS - např.:
 
[CODE](defun c:3Darc (/ p1 p2 p3)  (command "_ucs" "_w")  (setq p1 (getpoint "1.bod oblouku: "))  (setq p2 (getpoint "2.bod oblouku: "))  (setq p3 (getpoint "3.bod oblouku: "))  (command "_ucs" "_3P" p1 p2 p3)  (command "_arc" (trans p1 0 1)(trans p2 0 1)(trans p3 0 1)))[/CODE]

Seiner
31.08.2007, 14:07
dovolím si malinko upravit:
 (setq p1 (getpoint "1.bod kruznice: "))  (setq p2 (getpoint "2.bod kruznice: "))  (setq p3 (getpoint "3.bod kruznice: "))
(command "_UCS" "_3P" P3 P1 P2)(command "_circle" "_3P" (trans P1 0 1) (trans P2 0 1) (trans P3 0 1))(command "_UCS" "P")

pajo5
31.08.2007, 14:13
Super.
Este by som sa spytal, ci niekto neriesil ulohu umiestnenia kruznice v 3d priestore , ked pozname viac ako 3 zamerane 3Dbody kruznice.
t.j. metodou najmensich stvorcov urcit rovinu v 3D, v ktorej bude mat kruznica najmensie odchylky od zameranych bodov, popripade optimalizovat este aj jej priemer.pajo52007-08-31 14:15:52

Vladimír Michl
31.08.2007, 14:21
To asi bude podstatně složitější - ale takovéto funkce umí Civil 3D.

pajo5
31.08.2007, 14:30
Ano, vo svojej podstate je to vyhodnotenie geodetickeho merania.
Skusim sa pozriet do Civilu3D.
Mala by to byt asi nejaka fitovacia funkcia.

chlebovsky
31.08.2007, 15:26
já bych to rozdělil na dvě ulohy
1) vyřešit metodu nejmenších čtverců, to bude hlavní problém a tím získat potřebné 3 body
 
2) pak jen nakreslit tu zadanou kružnici
 
teď je otázka jak na tu metodu ? Pokud máte vzoreček, popř. postup tak jej pošlete, a nějak se to dá do kupy.

chlebovsky
31.08.2007, 15:41
a vůbec je metoda nejmenších čtverců aplikovatelná na prostor ???
a na rovnici kružnice která není funkce ???   x2 + y2 = r2
Není to řešeno nějakou jinou metodou ?
 
její definice je :
součet kvadrátů odchylek y -ových souřadnic bodů xi  (tj. čísel yi ) od funkční hodnoty f(xi)  byl co nejmenší
a výsledkem je přece přímka, popř. polynom ale vždy funkce kde pro jedno x existuje nanejvíš jedno y - což kružnice není
 
nešlo by to spíš nějakou přibližovací metodou. Prostě nějak stanovit střed, poloměr, a sklon, a postupně zpřesňovat ???
 

pajo5
31.08.2007, 17:29
Uloha sa da zhrnut:
ziskam urcity pocet 3D bodov v priestore.
mali by vytvarat entitu - kruznica
Vysledkom by mala byt nakreslena kruznica s polomerom R, Stredom S/x.y.z/  a os kolma na kruznicu.
 
Stred tej kruznice je priblizne tazisko bodov./ ak su rovnomerne po obvode merane. /
 
problem je ako ziskat rovinu, do ktorej nakreslim kruznicu.
Ako prelozit mnozinou bodov rovinu, aby odchylky nameranych bodov od tejto roviny boli min. - asi MNS?
 
A zaroven potom MNS zistit skutocnu velkost kruznice a jej umiestnenie v tej rovine - teda zistit polomer, suradnice stredu X,Y,Z
 
Mozno tym priblizovanim by sa dala numerickym riesenim dosiahnut pozadovana presnosti riesenia.

chlebovsky
03.09.2007, 16:31
No zhrnutí je naprosto jasný a to bylo i předtím, ale toto se dá rozložit na dva problémy.
a) matematický úkol
b) vykreslení kružnice
 
vyřešit tu kružnici bod b) jsme již řešili, a je to nejjednodužší způsob.
 
Co se týče toho matematického řešení, tak to nemá s programováním nic společnýho. Doporučuju se obrátit na nějakého matykáře na VUT fakultě matiky.... určitě existují vzorečky...
 
Každopádně řešení existují... metodou MNS to určitě jde.... ale jak ??? Já si už nevzpomínám na školní dny...
 
Ale vím že rovnice roviny je ax+by+cz+d=0... to se musí doplnit do vzorce na výpočet MNS pak se to derivuje, v tomdle případě dle X, pak dle Y a nakonec dle Z a z toho výjdou nějaké rovnice, a to se pak vyřeší, a výsledkem je a b c d.... to se pak doloží do toho vzorečku roviny a máme rovinu.
 
Pak se musí všechny body do této roviny promítnout, což je proložení každým bodem kolmici na tu rovinu, a určení průsečíku.
Pak máme všechny body na rovině.
A pak už jen opět MNS na výpočet té kružnice... a to bude daleko složitější...
 
Jak jsem radil, zkuste se obrátit na nějakého matykáře... pro něj to bude hračka, a jak budete mít algoritmus jak to spočítat tak to už pak nějak naprogramujeme....