Diskuze: Grafický algoritmus

C a C++ C a C++ Grafický algoritmus

Aktivity (1)
Avatar
martinelekt
Člen
Avatar
martinelekt:5. června 15:18

Dobrý den,
už dlouho mě trápí vymyslet efektivní algoritmus, pro určení pozic grafických objektů. Těžko se mi to vysvětluje co mám na mysli, tak uvádím příklady:

V kalkulačkách s naturálním zápisem, lze zapisovat různé znaky a operátory (odmocniny, velké operátory, limity, derivace, zlomky atd.) . V některých kalkulátorech může být zápis může být prováděn v řádku (wolfram alpha) a později se ten řádkový zápis zázračně převede v naturální. Jde o to jak se dá dopředu spočítat jednotlivé pozice úseček, obdélníků, pozice znaků atd., když vzdálenosti a velikosti jednotlivých grafických částí jsou dopředu těžko spočítatelné. Navíc dost často se pak stává, že jedna část ovlivňuje druhou.

Další příklad je třeba tvorba vývojových diagramů, kde zápisem může být třeba
IF <Jsi v práci?> THEN
IF <Máš makat?> THEN [Programuj] END IF
ELSE
[Odpočívej]
END IF
a ve výsledku nějaký algoritmus to převede na krásný vývojový diagram.

Zkusil jsem: Celé jsem to pojal jako strom, nejprve jsem spočítal "kořen" a dopočítal k "listům". Ve druhém průchodu jsem jen dopočítával skutečné výsledné pozice. Problém je, že v komplexnějších systémech to strom nepřipomíná a občas i "větev" zarůstá zpět do "kmenu", kde tak vzniká nekonečná smyčka.

Napadl mě například algoritmus desetinných čísel, kde jsem využíval toho, že mezi dvě libovolná desetinná čísla lze vložit další desetinné číslo, na konci jsem to pak setřídil a dopočítal výsledné pozice. Řešení však není vše spásné, má omezené množství vnoření, u zmíněných komplexnějších zadání buguje a celé mi to přijde jako prasárna.

Chci docílit: Efektivního funkčního algoritmu, výsledná aplikace má právě sloužit k automatické tvorbě vývojových diagramů z textového zápisu (pseudokód či XML).

Určitě na to budou někde knihovny (já je nenašel), spíše mi nejde ani tak o konkrétní kus kódu jako spíš o to, jestli na to není znám nějaký již existující trik.

 
Odpovědět 5. června 15:18
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:5. června 16:04

Popis je fajn, ale mozna by pomohlo, kdybys uvedl priklad xml a jak by mel vypadat obrazek a treba proc.

Vzorce se v html prevadi z latex zapisu do svg obrazku.

U vyvojoveho diagramu zas nevidim takovy problem. To mas jen par objektu. Vytvoris je vektorove a pak jen nazoomujes, aby se pekne vykreslili od kraje papiru. Nejaky min-max zoom.

google = vyvojove diagramy xml html
google = vyvojove diagramy xml javascript
google = vyvojove diagramy xml cpp
https://clanky.rvp.cz/…ch-map.html/
https://gojs.net/…teChart.html

 
Nahoru Odpovědět 5. června 16:04
Avatar
David Dostal
Redaktor
Avatar
Odpovídá na martinelekt
David Dostal:5. června 16:44

Ahoj, našel jsem pár odkazů, které možná budou užitečné (snad Ti nevadí angličtina). Pokud, jak jsi psal, některé větve "zarůstají do kmenu", už se nejedná o strom, ale o obecný graf.

https://mindfusion.eu/…-layout.html
https://en.wikipedia.org/…raph_drawing
http://www.graphviz.org/theory/

 
Nahoru Odpovědět 5. června 16:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.