Vlastní jazyk pro tvorbu vektorových obrázků

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #15 kdy: 31. 01. 2022, 11:01:59 »
A začínať výberom jazyka pokračovať hľadaním knižnice na parsovanie... neviem či je to správna cesta.

Nebyla by, kdyby daný jazyk rozumné knihovny neměl. Jelikož to ale není zjevně případ Pythonu a lexerů/parserů, netrápil bych se tím. Dokonce si myslím, že by se to v tomto případě dalo udělat ručně s pomocí split() na dané řádce a pár podmínek. Obecný parser není nutný.

Tak, ja by som to videl na kolekciu, s regex ktore ma kazde priradeny callback na konkretny kod, kde sa tento callback bude volat s vysledkami toho konkretneho regexpu. Dava to potom moznost ze kazdy modul/plugin si do kolekcie prida svoje. Je tam ale riziko ze si neustrazi, to aby boli vysledky jednoznacne. Autor dotazu ale uz ma viziu vlastneho hranateho kolesa, len potrebuje nasmerovat ako ho ostruhat tak aby fungovalo aspom scasti tak dobre ako uz vymyslene koleso...


oss

  • ***
  • 236
    • Zobrazit profil
    • E-mail
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #16 kdy: 31. 01. 2022, 12:37:50 »
Je tu vela rad co pouzit prinicpialne. Ale tou cestou som si uz presiel.

Ci uz jednoduche parsovanie, rekurzivny zostup, regularne vyrazy, Shunting-yard uz som si tym presiel. Na zaciatku to vyzera jednoduchsie ale nebude a nstanu problemy. A ked budes chciet pridat novu vlastnost jazyka zacnes si trhat vlasy.

Zas pri polskej notacii si budu trhat vlasy tie deti a dospli nadavat, ze ktory kodil taku blbost.

Pouzi gramatiku a k tomu vhodny generator parseru. Usetris si plno kodu, nervov a ladenia.

Robim sice v inom jazyku a inom syntaktickom generatore, ale nieco take je s gramatikou na pol hodinu.

qelurg

  • ****
  • 373
    • Zobrazit profil
    • E-mail
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #17 kdy: 31. 01. 2022, 23:17:38 »
Tak prima, prototyp už funguje:

Tento kód:

Kód: [Vybrat]
SL obrys = 1 - #000 o o
SL arrow = 1 - #000 - >

P  b1 = 20 20
P  b2 = 50 20

U  arrow
Lp b1 b2
La b2 50 30° 50 330° 50 0°

U obrys
P  a = 100 100
P  b = 200 100
P  c = 100 200
P  d = 200 200
P  e = 150 250
Lp a b c d a
Lp a c e d b


U  arrow
P  x = 125 275
P  y = 140 260
Lp x y

Vytvoří tento kód:

Kód: [Vybrat]
<html>
    <body>
<svg width="400" height="300"
    viewPort="0 0 400 300" version="1.1"
    xmlns="http://www.w3.org/2000/svg">

    <style type="text/css" ><![CDATA[
        ._sl_ {stroke-width: 1.000000; stroke-linecap: square; stroke: #000000}
        .obrys {stroke-width: 1.000000; stroke-linecap: round; stroke: #000}
        .arrow {stroke-width: 1.000000; stroke-linecap: square; stroke: #000; marker-end: url(#triangle)}
    ]]></style>

  <defs>
    <marker id="circle" markerWidth="8" markerHeight="8" refX="4" refY="4">
        <circle cx="4" cy="4" r="4" stroke="none" fill="#000"/>
    </marker>
    <marker id="triangle" markerWidth="10" markerHeight="10" refX="1" refY="5" viewBox="0 0 10 10" orient="auto" markerUnits="strokeWidth">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="#000"/>
    </marker>
  </defs>

    <line x1="20.000000" y1="280.000000" x2="50.000000" y2="280.000000" class="arrow" />
    <line x1="50.000000" y1="280.000000" x2="93.301270" y2="255.000000" class="arrow" />
    <line x1="93.301270" y1="255.000000" x2="136.602540" y2="280.000000" class="arrow" />
    <line x1="136.602540" y1="280.000000" x2="186.602540" y2="280.000000" class="arrow" />
    <line x1="100.000000" y1="200.000000" x2="200.000000" y2="200.000000" class="obrys" />
    <line x1="200.000000" y1="200.000000" x2="100.000000" y2="100.000000" class="obrys" />
    <line x1="100.000000" y1="100.000000" x2="200.000000" y2="100.000000" class="obrys" />
    <line x1="200.000000" y1="100.000000" x2="100.000000" y2="200.000000" class="obrys" />
    <line x1="100.000000" y1="200.000000" x2="100.000000" y2="100.000000" class="obrys" />
    <line x1="100.000000" y1="100.000000" x2="150.000000" y2="50.000000" class="obrys" />
    <line x1="150.000000" y1="50.000000" x2="200.000000" y2="100.000000" class="obrys" />
    <line x1="200.000000" y1="100.000000" x2="200.000000" y2="200.000000" class="obrys" />
    <line x1="125.000000" y1="25.000000" x2="140.000000" y2="40.000000" class="arrow" />
</svg>
    </body>
</html>

A teď už si s tím mohu hrát. Přidám další objekty, doplním vícenásobné definování bodů na jednom řádku, doplním matematiku atd.

Ink

  • *****
  • 664
    • Zobrazit profil
    • E-mail
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #18 kdy: 01. 02. 2022, 07:30:13 »
Tak prima, prototyp už funguje:

No a co jsi teda použil?

anonacct

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #19 kdy: 01. 02. 2022, 14:00:48 »
No to je hnus teda ten prototyp :)


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #20 kdy: 01. 02. 2022, 16:42:45 »
No to je hnus teda ten prototyp :)

Konkrétní výhrady, nebo jen estetika?

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #21 kdy: 01. 02. 2022, 17:46:26 »
No to je hnus teda ten prototyp :)

Konkrétní výhrady, nebo jen estetika?

Já osobně bych použil normální prog. jazyk a do něj si napsal knihovnu. Pokud by to mělo být hodně vyzuální, tak by asi šel použít Scratch či podobné. Ale přijde mi, že děti nemají problém ani s tím zadávat počítači čistě textové příkazy.

Jinak ovšem nic proti hraní si s vlastním jazykem...

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #22 kdy: 01. 02. 2022, 19:19:50 »
Tak zadavatel nikde nepisal ze ten jazyk budu pouzivat deti, on pisal ze ho chce tak jednoduchy aby ho vedeli pouzit aj deti...

To bolo v reakcii na to ze som sa pytal preco nepouzit postscript.

Ja myslim ze aj deti by pochopili princip zasobniku a RPN. Ved sa ako prve ucia matiku v RPN: Marka ma 2 jablcka a Janko 3 jablcka, kolko jablcok maju spolu?

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #23 kdy: 01. 02. 2022, 23:15:46 »
No to je hnus teda ten prototyp :)

Konkrétní výhrady, nebo jen estetika?

Já osobně bych použil normální prog. jazyk a do něj si napsal knihovnu. Pokud by to mělo být hodně vyzuální, tak by asi šel použít Scratch či podobné. Ale přijde mi, že děti nemají problém ani s tím zadávat počítači čistě textové příkazy.

To nejsou konkrétní výhrady ;)

Třeba za mě, mě se to esteticky nelíbí. Ale konkrétní výhrady nemám, protože jsem ten zápis úplně nepochopil, protože mě to odradilo vizuálem, a tudíž jsem se tomu nevěnoval ani trochu.

anonacct

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #24 kdy: 02. 02. 2022, 12:59:29 »
Já tak nějak nevidím, v čem je ten šílenozápis lepší než to zatracované SVG - SVG rozumí každý a má spoustu dokumentace, ale ten šílenozápis, tomu rozumí snad jen jeho autor a každý kdo s tím bude ztrácet čas se bude učit něco co nikde nevyužije.

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #25 kdy: 02. 02. 2022, 13:46:41 »
A neni lepší teda nainstalovat nějaký 2D CAD  (Qcad, LibreCad) a kreslit ty 2D obrázky v něm? 
Tam se v podstatě taky programuje a dopisují příkazy, hodnoty do cmdlajny, plus má to rovnou vizuální reprezentaci a kromě toho to může být do budoucna i užitečné umět.
Takové to ruční parsování a vyrobený specifický jazyk je imho vymýšlení kola...

Anebo co třeba inkscape scripting?
https://inkscape.org/~pakin/%E2%98%85simple-inkscape-scripting

Anebo co tvorba grafiky v pythonu, je tu spousta skvělých článků od pana Tišnovského
Gréta je nejlepší.

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #26 kdy: 02. 02. 2022, 14:25:54 »
Takže např OpenSCAD  :)

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #27 kdy: 02. 02. 2022, 16:12:17 »

Re:Vlastní jazyk pro tvorbu vektorových obrázků
« Odpověď #28 kdy: 02. 02. 2022, 17:13:59 »