Názor k článku Prohlížení vektorových výkresů ve formátu HPGL/PLT od Pavel Píša - Zdravím, opět musím zopakovat své poděkování za velmi...

  • Článek je starý, nové názory již nelze přidávat.
  • 15. 3. 2007 19:48

    Pavel Píša (neregistrovaný)
    Zdravím, opět musím zopakovat své poděkování za velmi hezky
    psané série článků.

    Co se týče software, tak zde přidám svojí již spíše odloženou
    hračku/trošku do mlýna, XY HPGL viewer a interpreter pro systém
    s krokovými motory, který běhal pod DOSem.

    http://cmp.felk.cvut.cz/~pisa/misc/xy-hpgl.tar.gz

    Je to projekt velmi starý, již dlouho neinovovaný, ale implementuje
    množství zajímavých vlastností, které by se Vám mohly hodit.
    Umí většinu běžně používaných příkazů HPGL, umí libovolné
    skládání transformačních matic, přitom výsledek zároveň vždy
    přepočítá pro zrychlení vykreslování do jedné matice.
    Protože kód běžel na velmi pomalém stroji, byl kód psán tak,
    aby nepotřeboval plovoucí aritmetiku.
    HPGL také definuje/původně definovalo rozlišení čísel jako 1/1000.
    Čísla jsou pak udržována ve formátu s pevnou desetinnou čárkou
    (0.001). Práci s tímto typem je nadefinována C++ třída a operátory,
    takže se s formátem pracuje bez nutnosti nad jeho vlastnostmi přemýšlet.
    Kód lze při použití současných výkonech desktopových procesorů
    převést na double. Na druhou stranu 1/1000 není soudělitelná
    s dvojkovým vyjádřením necelých čísel a při dlouhých sekvencích
    relativních pohybů může dojít ke kumulaci absolutních chyb.
    Pro malá embedded zařízení je použitá aritmetika výhodná i dnes.

    Kód je bohužel místy závislý na BC a 386 assembleru. Především

    muldiv(a,y,z) ... (int32_t)(((int64_t)x*(int64_t)y)/z)

    V GCC přepis není problém, pokud chybí int64_t (alá dřevní BC
    a Microsoft VC6.0), lze použít optimalizovaný náhradní C kód
    pro embedded aplikace.

    http://ocera.cvs.sourceforge.net/ocera/ocera/components/comm/can/utils/suiut/sui_dtrans.c?view=markup

    Kód umí výstup vykreslovat přes BGI drivery na obrazovku pod DOSem
    nebo může být výstup interpretovaný krokovým motorem připojeným
    na paralelní port. Je implementován i výstup textů přes BGI fonty.
    Například šlo vypsat HPGL vytisknuté z Wordu v Gotice.

    Při skládání úseků je použita třícestná optimalizace, která dovolí projíždění
    hran se zpomalením omezeným pouze požadavkem na maximální krok
    rychlosti v jedné ose a výpočtem zpomalení přes všechny zbývající úseky
    tak, aby se v posledním bodě trajektorie, nebo v místě PEN UP/DOWN
    dokázaly motory zastavit.

    Rozšířená n-rozměrná verze této optimalizace s možností pohybu
    po křivkách zadaných polynomy je použita i ve firmware
    jednotek MARS8. Ty ovšem nepracují s krokovými motory,
    ale s výkonnými regulátory a servy

    http://www.pikron.com/pages/products/motion_control/mars_8.html

    Kód XY HPGL jsem již před časem uvolnil pod GPL a alternativně
    i velmi volnou licencí, která za podmínky, že budou vylepšení do projektu
    vrácena, umožňuje i jeho použití v uzavřeném firmware různých zařízení.
    Udělal jsem to kvůli jednomu našemu studentovi, který chtěl psát
    placený SW pro řízení plotterů. Nikdy se mi potom již neozval.
    Na Web kód dávám jako reakci na Vaše články, protože přece jenom
    obsahuje o něco více funkcionality, než ten základní výukový příklad
    a zbytečné vynalézání kola se mi často zdá jako mrhání lidskou energií.
    Na druhou stranu je někdy z hlediska výuky nutné pro evoluci nových
    programátorů.

    Co se týče již předchozích příspěvcích zmíněné slušnosti některých lidí
    a firem a jejich vztahu k opensource, tak je situace velmi mrzutá. Mám s takovými
    lidmi, jejich úzkoprsostí a podrazy osobní velmi špatné zkušenosti, a to často
    přímo v místních luzích a hájích. Přitom na druhou stranu mezi rozumně uvažujícími
    lidmi opensource funguje a je velmi výhodným způsobem spolupráce,
    který nevyžaduje ztrácet většinu času nesmyslnými právními kličkami
    a znovuvymýšlením kol. Je ovšem potřeba, aby si komunita pamatovala
    ty, co nerespektují pravidla ( http://gpl-violations.org/ ) a ignorovala je
    v případech, kdy žádají o další pomoc a čas, za který od nich nelze očekávat
    žádný příspěvek ani slušnost, že uvedou, že dostupný kód použili. Měl jsem
    chuť zde uvést pár takových jmen, která zaslouží ban, ale kolega, jehož
    si vážím se jich zastal. Ti jedinci si to nezaslouží, ale zatím jejich zveřejnění
    odložím.

    Pokud by měl někdo ze studentů na ČVUT zájem dělat diplomovou
    nebo bakalářskou práci v této oblasti, tak tak ho rád povedu.
    Pokud kód použije kdokoliv jiný a bude respektovat nabídnuté podmínky
    a třeba něčím přispěje tak mě to jen potěší. Rád bych přislíbil i svojí pomoc,
    ale vzhledem k nedostatku času mohu nabídnout jen to, že když mi zbude
    čas, tak se pokusím odpovědět na případné dotazy.

    S pozdravem

    Pavel Píša
    pisa@cmp.felk.cvut.cz