Matematické Fórum

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

#1 06. 03. 2025 20:13

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Vážená skupino,

již pár týdnů se snažím dokončit funkci, psanou v Delphi, pro ofsetování trajektorie stroje. Trajektorie může být složená z úseček a oblouků, otevřená nebo uzavřená, libovolně se protínající. Tuto trajektorii bych rád ofsetoval a to tangenciálně vlevo nebo vpravo o zadaný poloměr nástroje (válcového tvaru).

Zpracování trajektorie, průniky úsečka / oblouk, základní ofsetování trajektorie mám hotové. Dostávám se ale do bodu, kdy musím vyloučit neplatné smyčky vznikající ve vnitřních částech trajektorie. Zde jsem zkoušel různé řešení jako BFS, DFS, hledání smyček a uzavřených polygonů, ale nikdy jsem to nedotáhl do úspěšného konce. Nakonec jsem skončil u číslování vinutí, na němž funguje teselace u OpenGL. Nedaří se mi to ale dokončit, správné řešení prostě nějak "nevidím".

Rád bych zde našel někoho, kdo tomu rozumí, a byl by ochotný mi poradit. Nejlépe nějaký matematický génius. Rozhodně se nejedná o nic jednoduchého, co by šlo řešit v jednom kroku. Můžeme se domluvit i na nějaké odměně. Více soukromě.

Budu moc rád za jakoukoliv pomoc.

Alex.

Offline

 

#2 06. 03. 2025 20:30

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

"číslování vinutí, na němž funguje teselace u OpenGL"

To je co?

Offline

 

#3 06. 03. 2025 20:37 — Editoval unknow005 (06. 03. 2025 20:38)

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Bližší popis je zde: Odkaz

Jinak pokoušel jsem se aplikovat toto řešení, ale není to tak jednoduché: Odkaz

Offline

 

#4 06. 03. 2025 20:52

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Aha, chápu. Ono to vypadá jako přímočaře řešitelný problém, ale není, rozpadá se to do spousty dílčích řešení. Naštěstí je o tom dost literatury, zrovna na ploše počítače mám připnuté tohle: https://seant23.wordpress.com/wp-conten … orithm.pdf. Asi bych si netroufnul to vymýšlet znova, nejlepší bude to odněkud opsat :-) Jinak tam hrozí chyby nebo nepokryté kombinace, na to občas trpí i různé profi CAMy.

Offline

 

#5 06. 03. 2025 21:05

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Ano. Je to spoustu dílčích řešení. Začátek je jednoduchý, ale poté se to zesložiťuje. Domnívám se, že číslování vinutí je řešení. Ale tápu i například s tím, jak z komplexního polygonu (který se může libovolně protínat) udělat jednoduché.

Offline

 

#6 07. 03. 2025 15:15 — Editoval unknow005 (07. 03. 2025 15:19)

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Ok. Nyní mám PolyLine z úseček a oblouků. PolyLine je uzavřený. Prošel jsem všechny průniky a rozsekal PolyLine na ještě více úseček a oblouků. Nyní všechny části navazují na sebe. Teď bych potřeboval z této rozsekané PolyLine vyseparovat všechny uzavřené reagiony, tj. všechny jednoduché polygony. Zkoušel jsem pár postupů, ale bez úspěšného dokončení. Napadá někoho nějaký vhodný postup jak toho dosáhnout?

Děkuji.

Offline

 

#7 07. 03. 2025 16:16

MichalAld
Moderátor
Příspěvky: 5178
Reputace:   127 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

A proč je vlastně potřeba řešit nějaké průsečíky?

Offline

 

#8 07. 03. 2025 22:08 — Editoval unknow005 (07. 03. 2025 22:09)

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

PolyLine se různě protíná. A abych určil směry vinutí regionů, musím je najít. Protínající části PolyLine rozsekám z důvodu hledání regionů. Pak už jen stačí hledat koncové body úseček nebo oblouků. Zde ale nevím jak najít všechny vzniklé regiony.

Offline

 

#9 07. 03. 2025 23:57

MichalAld
Moderátor
Příspěvky: 5178
Reputace:   127 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Ale proč to všechno? Na to abys odsadil tranektorii přece nic z toho nepotřebuješ ?

Offline

 

#10 08. 03. 2025 07:05

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

To je pravda. Jenže odsazení trajektorie je jen část celku. Ty PolyLine je již odsazená trajektorie. Jenže ve vnitřních rozích dochází ke křížení. Vznikají smyčky, které se musí zrušit. V principu tak fungují CAM aplikace, kdy nástroj nesmí narušit druhou stranu trajektorie než na kterou je odsazen. Níže jsou dva obrázky z mé testovací aplikace. Žlutě je vyznačena trajektorie stroje. A zeleně je vyznačená PolyLine, resp. ofsetovaná trajektorie. V rozích a dalších případech dochází ke křížení PoliLine. Nyní potřebuji z této PolyLine určit uzavřené regiony a vyloučit je v případě že by nástroj narušil původní trajektorii.

https://ibb.co/KpSHcRhw

Offline

 

#11 08. 03. 2025 08:20 — Editoval MichalAld (08. 03. 2025 08:32)

MichalAld
Moderátor
Příspěvky: 5178
Reputace:   127 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

A odsazená je ta zelená ?
A jak ti tam vlastně v rozích ty smyčky vznikly? Protože když si trajektorii (po přímce) odsadím já, ručně, tak mi tam žádné takové smyčky nevznikají. Akorát že si musím spočítat nový průsečík těch dvou přímek

Což bych doporučoval i tobě. Dokud budeš vědět, které čáry jsou ty původní a které jsi tak doplnil, přijde mi to jednodušší.

Jako problém vidím spíš když ti po odsazení něco úplně zanikne - jako že máš tvar, do kterého se nástroj vůbec nevejde.

Offline

 

#12 08. 03. 2025 09:22 — Editoval Aleš13 (08. 03. 2025 09:23)

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

↑ unknow005:
Chápu to dobře, že když odsadíš černou čáru zleva, vznikne červená, a tebe z ní zajímají jen části které ohraničuji zelený a fialový region? (kresleno myší od ruky)
https://imgur.com/a/tTRNJKI

Offline

 

#13 08. 03. 2025 18:48

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

↑ MichalAld:
V jednoduchém případě máte pravdu, ale PolyLine může být jakýkoliv tvar. Ty smyčky jsou propojení dvou odsazených částí trajektorie pokud svírají úhel menší než 180°. Další případy jsou zúžené části atd., kam se nástroj nemusí vejít. To je samozřejmě nutné nějak zjistit.

↑ Aleš13:
Ano, přesně tak.

...

Hodně jsem o tom přemýšlel a možná bych na to měl jít "nematematicky". Vzal bych nástroj - kružnici a táhl ji po trajektorii. A ve velmi jemném kroku zjišťoval, zda-li nedojde k narušení nějaké části trajektorie. Dnešní počítače jsou již tak výkonné, že by to nemuselo trvat dlouho.

Offline

 

#14 08. 03. 2025 19:49

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

↑ unknow005:Jak to myslíš s těmi zúženými částmi? Dokud odsazená trajektorie sama sebe neprotne, tak se nástroj vejde. Trochu horší je ale analýza situace, kdy se původní křivka může sama protínat - to na začátku píšeš, že může. Tady budeš muset dodefinovat, jak se ta operace má chovat. Když od černé čáry která sama sebe kříží uděláš jednostranné odsazení, tak se rozpadne na dvě části - červená část je jasná, ale co modrá? Bude černou křížit, bude se jí dotýkat nebo bude ukončená ve vzdálenosti odsazení ale z druhé strany? Nebo ještě jinak?
https://imgur.com/a/VKm1GKp

Offline

 

#15 08. 03. 2025 19:58

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Odsazení se vždy musí určit, tj. levé nebo pravé tangenciálně od trajektorie. Poté se musí určit, zda se jedná o vnější nebo vnitřní konturu. Vnější je obvod, vnitřní je díra. Může ale vzniknout i situace, kdy trajektorie není uzavřená.

Nakreslená případ není správný, resp. červená trajektorie je ta správná a modrá je vyloučená. Kdyby bylo odsazení opačné, tak poté se smyčka vykonat musí, protože je na vnější kontuře.

Offline

 

#16 08. 03. 2025 22:45

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Umíš nějak formálně popsat situaci, kdy má ta modrá trajektorie vypadnout?
Případně by nebylo lepší říct, že původní trajektorie se nesmí protínat? Pak by se to myslím zjednodušilo.

Offline

 

#17 09. 03. 2025 10:10

MichalAld
Moderátor
Příspěvky: 5178
Reputace:   127 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Ano, základ pro to aby se problém dal vyřešit je ho správně formulovat.

Offline

 

#18 09. 03. 2025 17:35

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

↑ Aleš13:

Původní trajektorie by se neměla protínat, ale mohou existovat výjimky, např. na vnější kontuře se mohou objevit smyčky pro dosažení ostrých rohů. Vnější smyčky jsou navíc vhodnější pro méně dynamické stroje.

Offline

 

#19 09. 03. 2025 19:49

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Jasně, chápu. Důležité je, abys to přesně popsal. Každou výjimku povýšit na pravidlo a formálně popsat, pak teprve se dá hledat nějaký algoritmus. A dost možná, že se při správném popisu najednou vylíhne sám :-)

Píšeš v prvním příspěvku, že polyline je libovolně se protínající. To musíš nějak ošetřit, buď to změnit nebo přesně říct, co se stane.

BTW, o smyčkách v rozích jsem ještě neslyšel. Normálně se to řeší přesným zastavením G09 a nemusíš to takhle obcházet.

Offline

 

#20 09. 03. 2025 19:57

unknow005
Příspěvky: 115
Škola: "Výběrová" Střední
Pozice: Programátor
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

G09 neznám. Zastavení a rozjetí stroje může být problém, pokud je nástroj např. laser nebo plazma. Poté může dojít k upálení rohu.

Všechno se určitě popsat nedá. Ale princip tvorby ofsetované trajektorie lze rozdělit na více částí a ty zdokonalovat. Když nad tím ale přemýšlím, tak nějaké číslování vinutí, hledání regionů a tak, možná žádné matematické řešení "na všechny možné případy" neexistuje. Začíná se mi jevit vytvoření kružnice jako nástroje a tu posouvat po trajektorii jako nejlepší a nejuniverzálnější řešení. Bude to velmi mnoho detekcí, časově náročné, ale v dnešní době to již asi není problém.

Offline

 

#21 09. 03. 2025 20:02

check_drummer
Příspěvky: 5171
Reputace:   106 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

unknow005 napsal(a):

Všechno se určitě popsat nedá.

Pak nelze ani sestrojit alogoritmus, který to řeší.


"Máte úhel beta." "No to nemám."

Offline

 

#22 09. 03. 2025 21:14

Aleš13
Příspěvky: 378
Reputace:   
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

Ta kružnice je jen numerické řešení toho co jsi začal dělat analyticky (což nemusí být chyba), ale od problému rozhodnout co dělat s těmi osiřelými trajektoriemi tě neuchrání. Podívej se na ten odkaz co jsem ti poslal, tam je k tomu diskuse. A další odkazy.

Offline

 

#23 10. 03. 2025 12:41

MichalAld
Moderátor
Příspěvky: 5178
Reputace:   127 
 

Re: Hledám pomoc s dokončením funkce pro ofsetování trajektorie stroje

unknow005 napsal(a):

Bude to velmi mnoho detekcí, časově náročné, ale v dnešní době to již asi není problém.

Problém to právě celkem snadno být může. Protože musíš tu aktuální polohu nástroje kontrolovat proti všem ostatním bodům trajektorie.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson