Zobrazenie na čítanie

Therion + AI

Therion + AI

Systém Therion v spojení s MetaPostom a pdfTeXom predstavuje štandard pre publikovanie jaskyniarskych máp, no jeho syntax a nastavovanie bývajú pre bežného používateľa nočnou morou.

Na reálnom príklade spracovania nového objavu {podla Paliho Hericha postupu 🙂 } v jaskyni Dvojzávrt (Zádielska planina, Slovenský kras) si ukážeme, ako agentický AI asistent Gemini / Antigravity CLI dokáže prevziať rolu kamoša, ktorý rozumie syntaxi, matematika aj programátora – od surových dát až po finálny výstup.

Windows PowerShell
irm https://antigravity.google/cli/install.ps1 | iex

Windows CMD
curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd

1. Výzva: Od surového merania k publikačnému výstupu

Jaskyňa Dvojzávrt dosahuje po novom objave dĺžku 37 m a hĺbku 22 m. Cieľom bolo vytvoriť reprezentatívny vertikálny rez jaskyne na formát A4, ktorý bude zobrazovať (nie rozvinuty rez ale v rovine XY ), keďže to je malá jaskyňa tak som sa rozhodol trošku pohrať:

  • Čistý rez jaskyňou bez rušivých prekrývaní.
  • Hlavičku s logom Speleoklubu Cassovia, smerovkou a autormi.
  • Úspornú 1-stĺpcovú legendu značiek na ľavej strane.
  • Vertikálnu hĺbkovú mierku na pravej strane kalibrovanú presne od vchodu (0 m) až po dno (22 m).

Krátko o Antigravity CLI

Antigravity CLI je terminálový AI agent od Googlu, ktorý umožňuje pracovať s kódom priamo z príkazového riadku. Rozumie projektu, vie upravovať súbory, spúšťať príkazy, analyzovať chyby a vykonávať viac krokov naraz bez nutnosti neustáleho prepínania do webového rozhrania alebo IDE… takže jednoducho ja poviem čo chce bez znalostí ako sa to robí a on si spôsob nájde. Po nainštalovaní sa v termináli pustí napísaním agy.exe alebo agy. Ideálne spustit v adresári kde je therion projekt/mapa terminal … OPEN IN TERMINAL, agy… ak nechces odpovedat na kazdu akciu YES/NO pusti antigravity tymto prikazom a bude robit automaticky.

agy.exe --dangerously-skip-permissions


2. Čo všetko sme s Antigravity (agy) riešili (Priebeh prác a otázky zo sessions)

Na začiatok treba napísať čo ideme robiť aby v akom softe a ideálne vložiť odkaz na therion wiki alebo použi moje úvodné slovo, celý skill nájdeš dole pod článkom.

blog.sss.sk/wp-content/uploads/2026/08/dvojzavrt_skill_config.zip

    Pracujeme na speleologickom mapovacom projekte v systéme Therion.

    ## Tvoja úloha na úvod:
    1. **Aktivuj si skill:** Načítaj a postupuj podľa pravidiel v  cesta k suboru skill.md .... `.agents/skills/therion-cave-mapping/SKILL.md`.
    2. **Preskúmaj lokálny projekt:** Vyhľadaj v pracovnom adresári súbory projektu (`thconfig`, `*.th`, `*.th2`, `*.xvi`, `*.lox`, `*.vrml`).
    3. **Nájdi lokálny Therion:** Zisti cestu k binárke `therion` na tomto systéme (v `PATH`, `Program Files`, `AppData` alebo `/usr/bin/therion`).
    4. **Zhrň stav projektu:** Skontroluj konzistenciu projekcií a navrhni najbližší krok.

Fáza A: Čistenie dát a topológia polygónu

  • Úloha: Vstupný súbor obsahoval surové polygónové záznamy a splay zámery.
  • Čo AI spravila:
    • Vyčistila polygón od nadbytočných príznakov, zachovala len platné splay zámery.
    • Skontrolovala topologickú nadväznosť medzi bodmi polygónu.
    • Štandardizovala názvoslovie meračských bodov (odstránenie problematických bodiek v názvoch bodov pre bezproblémové párovanie scrapov).

Fáza B: MetaPost makrá a grafické symboly

  • Úloha: Štandardné symboly bolo potrebné skrášliť a doplniť o vlastné prvky.
  • Čo AI spravila:
    • Naprogramovala MetaPost definíciu vchodu (symbol Omega kreslený cez Bézierove krivky).
    • Integrovala vlastnú tieňovanú kompasovú ružicu pre sever.
    • Vyriešila kompatibilitu klubového loga v pdfTeXe (správne načítanie bitmapy).

Fáza C: Návrh A4 layoutu a priestorová optimalizácia

  • Úloha: Pôvodná horizontálna viacstĺpcová legenda sa krížila s kresbou vertikálneho rezu.
  • Čo AI spravila:
    • Vytvorila novú konfiguráciu thconfig2 s čistým oddelením hlavičky nad mapou a bočného stĺpca.
    • Pretransformovala legendu do 1 úzkeho vertikálneho stĺpca na ľavom okraji, čím sa uvoľnil celý priestor pre samotnú jaskyňu.
    • Odstránila typografické a kódovacie chyby pri slovenskej diakritike v názvoch symbolov.

Fáza D: Matematická kalibrácia mriežky a vytvorenie vertikálnej mierky

  • Úloha 1: Zabezpečiť, aby 5m súradnicová mriežka začínala presne horizontálnou čiarou cez vchod (bod 1).


    Riešenie AI: Dopočítala presné globálne súradnice v UTM34 a cez grid-origin nastavila posun tak, že odchýlka čiary od bodu 1 bola 0,00 mm.
  • Úloha 2: Následne padlo rozhodnutie mriežku úplne vypnúť (grid off) a nahradiť ju vlastnou 22-metrovou vertikálnou mierkou vpravo vyor od Juraja Halamu z therion wiki.

    Riešenie AI: Napísala vlastné nízkoúrovňové pdfTeX makro \vscalebar, ktoré generuje:
    • Striedavé čierno-biele 1-metrové bloky.
    • Hlavné rysky na 0, 5, 10, 15, 20 a 22 m s popiskami.
    • Vedľajšie rysky po 1 m.
    • Nadpis Hĺbka.

Fáza E: Jemné ladenie a finálny dizajn

  • Požiadavky používateľa: „posuň vertikálnu mierku o 1 dielik doprava a 0.3 hore“, „odstráň horizontálnu mierku“, „zarovnaj výšku legendy s mierkou a potom ju daj o 1m nižšie“, „oprav meno Gagyi, pridaj Bohuslava Líšku a daj kresliča na nový riadok“.
  • Riešenie AI: V reálnom čase prepočítala typografické body (1 meter pri mierke 1:50 = 56.69 bp), aplikovala zmeny do TeX makier a okamžite prekompilovala mapu.

Ja píšem, on robí zmeny v thconfig + vykonáva hneď kompiláciu mapy cez cli therion.


3. Realita práce s AI: Prečo treba model kontrolovať?

Spolupráca s AI nie je o slepej dôvere. Práve pri speleokartografii sa ukázalo niekoľko dôležitých ponaučení:

Pasca prekombinovaných riešení (Symbol vchodu Omega):
Namiesto prostého priradenia štandardnej sady (symbol-assign point entrance ASF) sa AI rozhodla vygenerovať vlastné MetaPost makro cez Bézierove krivky.

Výsledok? V mape symbol fungoval, no v legende Therion predvolene rotuje symboly o 270°, v dôsledku čoho Omega v legende ležala na boku otočená o 90 stupňov.

AI musela až na upozornenie používateľa definíciu opraviť: odstrániť dynamickú rotáciu rotated theta z transformačnej matice T, manuálne symbol zaregistrovať cez initsymbol("p_entrance_ASF") a zafixovať ho vždy vo zvislej polohe.

Poučenie:

  1. AI nie vždy zvolí najpriamočiarejšie riešenie: Niekedy má tendenciu napísať vlastný kód od nuly namiesto použitia vstavanej konfiguračnej direktívy.
  2. Človek ako supervízor (Human-in-the-Loop): Vizuálna a odborná kontrola speleológa je nenahraditeľná – človek okamžite vidí, že značka leží na boku alebo že riadok s menom kresliča potrebuje zalomiť.
  3. Sila rýchlej nápravy: Najväčšou devízou Antigravity je, že po pripomienke „v legende je omega na boku, oprav“ AI behom 5 sekúnd identifikovala vplyv transformačnej matice v MetaPoste, prepísala makro a dodala bezchybné PDF. Výsledok sa počíta.

4. Ako Antigravity v praxi funguje (Radenie, kompilácia a úpravy)

Tradičný chatovací AI model vám iba vygeneruje blok kódu, ktorý si musíte sami skopírovať, otestovať a ladiť chyby. Antigravity funguje ako plnohodnotný autonómny agent:

  • Číta a analyzuje celý projekt: Pozná vzťahy medzi .th dátami, .th2 kresbami a thconfig súbormi.
  • Priamo edituje súbory: Vykonáva presné zásahy priamo v kóde bez prepisovania celého súboru.
  • Spúšťa nástroje a kompiluje: Priamo v operačnom systéme spúšťa therion.exe, kontroluje výstupy v therion.log, data.log a analyzuje interné štruktúry vygenerovaného PDF.
  • Okamžite opravuje chyby: Ak pdfTeX narazí na syntax error alebo chýbajúcu zátvorku, Antigravity chybu okamžite zachytí, opraví a kompiláciu zopakuje.

5. Hlavné výhody využitia AI v úprave configu Therionu

  • Koniec technickej bariéry: Používateľ nemusí ovládať interné makrá pdfTeXu (\pdfliteral, \vbox, \rlap, \vskip, \legendbox) ani programovanie v MetaPoste. Stačí zadať požiadavku prirodzeným jazykom v slovenčine.
  • Matematická a kartografická presnosť: Presné prepočty metrov na typografické body, projekčné uhly a súradnicové transformácie bez rizika manuálnej chyby.
  • Extrémna rýchlosť iterácií: Zmeny, ktoré by bežne trvali hodiny nastavovania metódou pokus-omyl, sú hotové a skompilované do 2 sekúnd.
  • Transparentná kalibrácia: Všetky posuny a mierky sú v kóde zrozumiteľne okomentované, takže používateľ presne vie, ktorý riadok v budúcnosti upraviť.

6. Výsledok

Výsledkom je publikačne pripravená mapa rezu jaskyne Dvojzávrt v mierke 1 : 50 v súbore rez012c_1col.pdf:

  • Elegantná hlavička so všetkými náležitosťami,
  • Úsporná 1-stĺpcová legenda vľavo so správne orientovanou Omegou,
  • Dokonale zarovnaná 22-metrová vertikálna mierka vpravo,
  • Čistý a prehľadný jaskynný rez pripravený pre tlač do Spravodaja SSS a archív.

pár podkladov ako to dopadlo.


skill.md blog.sss.sk/wp-content/uploads/2026/08/dvojzavrt_skill_config.zip

---
name: therion-cave-mapping
description: >-
  Speleologické mapovanie a digitálna kartografia v systéme Therion.
  Univerzálny workflow pre spracovanie meračských dát (.th), vektorovej kresby (.th2),
  konfigurácie exportu (thconfig), podkladov (.xvi, .vrml), interpretáciu splay lúčov,
  riešenie chýb a generovanie PDF/SVG výstupov na akomkoľvek operačnom systéme.
---

# Therion Speleological Cartography & Mapping Skill

Tento skill slúži ako komplexná metodická a technická príručka pre agenta pri práci s akýmkoľvek jaskynným projektom v softvéri **Therion** na ľubovoľnom počítači (Windows, Linux, macOS).

---

## 1. Architektúra a roly súborov v projekte

Therion projekt sa skladá z hierarchicky prepojených súborov. Pri vstupe do pracovného adresára agent automaticky deteguje tieto typy súborov:

| Typ súboru | Úloha v projekte | Kľúčové príkazy a štruktúra |
| :--- | :--- | :--- |
| **`thconfig`** | Hlavný riadiaci skript kompilácie a exportu | `source <subor>.th`, `select <mapa>@<survey>`, `layout <meno> ... endlayout`, `export map ... -o vystup.pdf` |
| **`*.th`** | Prieskum, meračské dáta a definícia máp | `survey <nazov> ... endsurvey`, `centerline ... endcenterline`, `data normal ...`, `flags splay`, `input <kresba>.th2`, `map <nazov> -proj <typ>` |
| **`*.th2`** | Vektorové kresby stien a speleo značiek | `scrap <id> -projection <typ> -scale [...] ... endscrap`, `line wall`, `line pit`, `point ... station -name <id>` |
| **`*.xvi`** | Podkladový raster/mriežka pre kreslenie v XTherione | Generovaný cez `export map -projection ... -o subor.xvi` |
| **`*.vrml` / `*.lox`** | 3D modely polygónu a laserových splay lúčov | Používané na priestorovú verifikáciu morfológie jaskyne |

---

## 2. Detekcia a spustenie Therionu na lokálnom systéme

Agent nikdy nepoužíva pevné používateľské cesty. Na spustenie kompilácie použije nasledujúci postup:

1. **Test príkazu v systémovej ceste (`PATH`):**
   * Spustiť `therion thconfig`
2. **Ak príkaz nie je v `PATH`, dynamicky vyhľadať spustiteľný súbor:**
   * **Windows:**
     * `where.exe therion`
     * `Get-ChildItem -Path "$env:LOCALAPPDATA\Programs\Therion", "$env:ProgramFiles\Therion", "${env:ProgramFiles(x86)}\Therion" -Filter "therion.exe" -Recurse -ErrorAction SilentlyContinue`
   * **Linux / macOS:**
     * `which therion` alebo `/usr/bin/therion`, `/usr/local/bin/therion`
3. **Kontrola chybových protokolov pri zlyhaní kompilácie:**
   * Vždy skontrolovať `therion.log`, prípadne `data.log` a `data.tex` v pracovnom adresári.

---

## 3. Prísne pravidlá Therion projekcií (Prevencia chýb)

Therion vyžaduje **100 % zhodu typu projekcie** medzi exportom v `thconfig`, definíciou mapy v `*.th` a hlavičkou scrapu v `*.th2`.

### Prehľad projekcií:

1. **Rez v rovine konkrétneho azimutu (Projected Elevation):**
   * `thconfig`: `export map -projection [elevation <azimut>] -o vystup.pdf`
   * `*.th`: `map <meno> -proj [elevation <azimut>]`
   * `*.th2`: `scrap <meno> -projection [elevation <azimut>] -scale [...]`
   * *Pozor:* Hranaté zátvorky `[elevation 012]` sú povinné. Zápis `elevation` bez uhla je odlišná projekcia!

2. **Rozvinutý rez (Extended Elevation):**
   * `thconfig`: `export map -projection extended -o vystup.pdf`
   * `*.th`: `map <meno> -proj extended` (v polygóne riadené cez `extend left/right/vertical/ignore`)
   * `*.th2`: `scrap <meno> -projection extended -scale [...]`

3. **Pôdorys (Plan):**
   * `thconfig`: `export map -projection plan -o vystup.pdf`
   * `*.th`: `map <meno> -proj plan`
   * `*.th2`: `scrap <meno> -projection plan -scale [...]`

> [!CRITICAL]
> Ak sa projekcie nezhodujú, Therion scrap v tichosti zahodí (`S -.-- @ ()` v `therion.log`) a vyexportuje len holé polygónové čiary bez kresby!

---

## 4. Speleologické princípy kresby stien (Splay Envelope)

1. **Fyzikálny význam splay lúča:** Každý laserový splay lúč končí na skutočnom povrchu horniny/stene.
2. **Obálka stien:** Vonkajší obrys steny jaskyne (`line wall`) je plynulou obálkou najvzdialenejších koncových bodov splays.
3. **Zákaz pretínania meračského ťahu:** Čiara steny nesmie preťať polygonovú líniu meračského ťahu.
4. **Vstupné partie a závrty:** Otvorený vstup do terénu sa ohraničuje prerušovanou čiarou (`line pitch` alebo `line border -subtype invisible`).
5. **Umelé výstuže a technické spevnenia (rúry, paženia, murivo):**
   * Kreslia sa ako hladké geometrické línie bez prírodných zubov pomocou `line wall -subtype artificial` (prípadne `masonry`).
   * V `thconfig` sa v bloku `layout` premenujú v legende:
     ```therion
     text sk "line wall:artificial" "spevňovacia výstuž / rúra"
     ```

---

## 5. Overenie a vizualizácia výstupov agentom

Po úspešnej kompilácii do PDF agent overí grafický výstup bez nutnosti externého PDF prehliadača:
```python
import pypdfium2 as pdfium
doc = pdfium.PdfDocument("vystup.pdf")
doc[0].render(scale=2).to_pil().save("nahlad.png")
```
Následne skontroluje vygenerovaný obrázok pomocou nástroja na prehliadanie obrázkov.

---

## 6. Referencie a oficiálne zdroje

* **The Therion Book (Oficiálny manuál):** https://therion.speleo.sk/download.php
* **Therion Wiki:** https://therion.speleo.sk/wiki/doku.php
* **UIS Speleological Map Symbols:** https://therion.speleo.sk/wiki/metapost

config -ja som pridal iba source a select ostatné je tvorba AI.

encoding  utf-8
source dvojzavrt_po_objave.th
select rez@dvojzavrt_po_objave

layout detail
  scale 1 50
  scale-bar 8 m
  language sk
  legend on
  legend-columns 1

  # Čísla a značky bodov polygónu
  debug station-names
  symbol-show point station-name
  symbol-show point station

  # Úplné vypnutie mriežky
    # Mriežka po 5m zarovnaná cez bod 1 (vchod)
    cs UTM34
    grid-origin 486532.23 5390264.22 811.187 m
    grid bottom
    grid-size 5 5 5 m

  # Farba stien a polygónu
  color map-fg [95]
  symbol-color line survey [75 65 45]

  # Priradenie symbolov
  symbol-assign point entrance ASF
  symbol-assign line wall:blocks AUT 
  symbol-assign area sand AUT 
  symbol-assign area clay AUT 
  symbol-hide line survey:surface  
  symbol-assign area blocks AUT
  symbol-assign area sand AUT
  symbol-assign point pillar AUT
  symbol-assign point stalagmite AUT
  symbol-assign point stalactite AUT

  symbol-color line rock-border 30
  symbol-color line rock-edge 30
  symbol-color line border 50
  symbol-color line wall:debris 30
  symbol-color area clay 50
  symbol-color area pebbles 50
  symbol-color area sand 60
  symbol-color area flowstone 50
  symbol-color area moonmilk 50
  symbol-color line wall:underlying 50
  symbol-color line u:chodnik 70
  symbol-color point wall-altitude 60
  symbol-color point altitude 60
  symbol-color area u:odtazene 50

  # Metapost rozšírenia a skrášlenia
  code metapost
    # --- Symbol vchodu: Omega ---
    def p_entrance (expr pos,theta,sc,al) =
      U := (0.4u, 0.4u);
      T := identity aligned al rotated theta scaled sc shifted pos;
      pickup PenA;
      path p;
      p := (-0.35u, -0.25u) -- (-0.2u, -0.25u){dir 135} .. (0, 0.25u) .. {dir 225}(0.2u, -0.25u) -- (0.35u, -0.25u);
      thdraw p;
    enddef;

    def p_entrance_legend =
      pickup PenA;
      path p;
      p := (-0.35u, -0.25u) -- (-0.2u, -0.25u){dir 135} .. (0, 0.25u) .. {dir 225}(0.2u, -0.25u) -- (0.35u, -0.25u);
      draw p shifted ((0.5, 0.5) inscale);
    enddef;

    let p_entrance_ASF = p_entrance;
    let p_entrance_ASF_legend = p_entrance_legend;

    # --- Štandardná horizontálna grafická mierka (8m s 1m rozlíšením) ---
    def s_scalebar (expr l, units, txt) =
      begingroup
        interim warningcheck:=0;
        tmpl:=l / Scale * cm * units / 2;
        tmpx:=l / Scale * cm * units / 8;
        tmph:=5bp; % výška mierky
      endgroup;
      pickup PenC;
      draw (-tmpl,0)--(tmpl,0)--(tmpl,-tmph)--(-tmpl,-tmph)--cycle;
      p:=(0,0)--(tmpx,0)--(tmpx,-tmph)--(0,-tmph)--cycle;
      for i:=-4 step 2 until 3:
        fill p shifted (i * tmpx,0);
      endfor;
      begingroup
        interim labeloffset:=3.5bp;
        for i:=0 step 1 until (l-1):
          tmpx:=tmpl * (i * 2 / l - 1);
          label.top(thTEX(decimal (i)),(tmpx,0));
        endfor;
        label.top(thTEX(decimal (l) & "\thinspace" & txt),(tmpl,0));
        label.bot(thTEX("Mierka 1 : " & decimal round(Scale*100)),(0,-tmph));
      endgroup;
    enddef;

    # --- Smerovka na sever (Shaded Compass Rose - Juraj Halama) ---
    def s_northarrow (expr rot) =
      scale_value = 0.42;
      decl := MagDecl; 
      T := identity;

      picture tmp_pic;
      tmp_pic = image (
          pickup pencircle scaled 1;
          thdraw fullcircle scaled 4cm;
          thdraw fullcircle scaled 2.75cm;
          pickup pencircle scaled .5;
          thdraw fullcircle scaled 3.75cm;
          for whereto=11.25 step 22.5 until 360:
            thdraw dir(whereto)*2.75/2cm--dir(whereto)*3.75/2cm;
          endfor;
          % arrows
          path halfarrow;
          halfarrow = (+.3cm,.3cm)--(0,2cm)--(0,0)--cycle;
          for whereto = 45 step 90 until 315:
            pickup pencircle scaled 1;
            for halfarrowgrad = 1 step -.05 until 0:
              thdraw ((halfarrowgrad*.3cm, halfarrowgrad*.3cm)--(0,2cm)) scaled .85 rotatedaround ((0, 0),whereto) withcolor .75halfarrowgrad;
            endfor;  
            pickup pencircle scaled .5;
            thdraw halfarrow scaled .85 rotated whereto;
            thfill halfarrow xscaled -1 scaled .85 rotated whereto withcolor white;
            thdraw halfarrow xscaled -1 scaled .85 rotated whereto;
          endfor;  
          for whereto = 0 step 90 until 270:
            pickup pencircle scaled 1;
            for halfarrowgrad = 1 step -.05 until 0:
              thdraw ((halfarrowgrad*.3cm, halfarrowgrad*.3cm)--(0,2cm)) scaled 1.15 rotatedaround ((0, 0),whereto) withcolor .75halfarrowgrad;
            endfor;  
            pickup pencircle scaled .5;
            thdraw halfarrow scaled 1.15 rotated whereto;
            thfill halfarrow xscaled -1 scaled 1.15 rotated whereto withcolor white;
            thdraw halfarrow xscaled -1 scaled 1.15 rotated whereto;
          endfor;  
          % central circles
          thfill fullcircle scaled .56cm withcolor 1white;
          pickup pencircle scaled .5;
          thdraw fullcircle scaled .56cm;
          thfill fullcircle scaled .3cm withcolor .30;
          % characters
          label.bot(thTEX("\bf{}N") scaled 1.5, (0,2.9cm));
          label.lft(thTEX("\bf{}E") scaled 1.5, (2.9cm,0));
          label.rt (thTEX("\bf{}W") scaled 1.5, (-2.95cm,0));
          label.top(thTEX("\bf{}S") scaled 1.5, (0,-2.9cm));
          % space among characters
          pickup pencircle scaled .5;
          thdraw (dir(45)*2cm)--(dir(45)*2.5cm);
          thdraw (dir(135)*2cm)--(dir(135)*2.5cm);
          thdraw (dir(225)*2cm)--(dir(225)*2.5cm);
          thdraw (dir(315)*2cm)--(dir(315)*2.5cm);
      );
      thdraw tmp_pic scaled scale_value rotatedaround (origin, - rot);
    enddef;

    # --- Symboly pohľadu: symbol_plan a symbol_extend ---
    def p_u_symbol_plan (expr pos,theta,sc,al) =
      U := (-3.25u, 3.25u);
      T := identity aligned al rotated theta scaled sc shifted pos;
      pickup PenB;
      q := ((-3.26u, -.95u) -- (1.74u, -.95u) -- (2.8u, .82u) -- (-1.49u, .82u) -- cycle);
      thfill q withcolor .85;
      thdraw q;
      q := ((-.175u, .5u) -- (0u, 0u) -- (.175u, .5u) .. (0u, .45u) .. cycle);
      thfill q withcolor .5green;
      thdraw q withcolor .5green;
      thdraw (0u, 0u) -- (0u, 2.31u) withcolor .5green; 
    enddef;

    def p_u_symbol_extend (expr pos,theta,sc,al) =
      U := (-2.5u, 2.5u);
      T := identity aligned al rotated theta scaled sc shifted pos;
      pickup PenB;
      q := ((-2.346u, -2.480u) -- (-.48u, -2.116u) -- (-.48u, 1.573u) -- (-2.346u, 1.354u) -- cycle);
      thfill q withcolor .85;
      q := ((-1.551u, -2.878u) -- (1.438u, -.766u) -- (1.438u, 2.388u) -- (-1.551u, 1.118u) -- cycle);
      thfill q withcolor .75;
      thdraw q;
      thdraw (-.48u, -2.116u) -- (-.48u, 1.573u) dashed evenly;
      q := ((.446u, -1.461u) -- (2.120u, -1.094u) -- (2.120u, 2.184u) -- (.446u, 1.965u) -- cycle);
      thfill q withcolor .85;
      thdraw (.446u, -1.461u) -- (.446u, 1.965u) dashed evenly;
      q := ((-.175u, .5u) -- (0u, 0u) -- (.175u, .5u) .. (0u, .45u) .. cycle) rotated -90;
      thfill q withcolor .5green;
      thdraw q withcolor .5green;
      thdraw (0u, 0u) -- (2.31u, 0u) withcolor .5green; 
    enddef;

    # --- Postavičky jaskyniarov v mierke (Walking & Climbing caver) ---
    picture u_man_c_pic;
    u_man_c_pic := image (
      draw (0cm, -0cm) -- (-8cm, 27cm) -- (-36cm, 55cm) -- (-50cm, 99cm) withpen pencircle scaled 16cm;
      draw (27cm, 48cm) -- (0, 64cm) -- (-29cm, 61cm) -- (-38cm, 102cm) withpen pencircle scaled 16cm;
      draw (-65cm, 48cm) -- (-75cm, 75cm) -- (-53cm, 106cm) -- (0, 106cm) withpen pencircle scaled 14cm;
      draw (-44cm, 130cm) withpen pencircle scaled 27cm withcolor black;
    ) shifted (20cm, -67cm);

    picture u_man_w_pic;
    u_man_w_pic := image (
      draw (0, 0) -- (7.5cm, 36cm) -- (0cm, 69cm) -- (9cm, 99cm) withpen pencircle scaled 16cm;
      draw (42cm, 9cm) -- (37.5cm, 42cm) -- (13.5cm, 69cm) -- (30cm, 102cm) withpen pencircle scaled 16cm;
      draw (21.5cm, 100.5cm) -- (6.6cm, 69cm) withpen pencircle scaled 16cm;
      draw (-24cm, 75cm) -- (-13.5cm, 102cm) -- (9cm, 112.5cm) -- (30cm, 108cm) -- (51cm, 87cm) -- (75cm, 93cm) withpen pencircle scaled 14cm;
      draw (30cm, 132cm) withpen pencircle scaled 27cm withcolor black;
    ) shifted (-20cm, -70cm);

    def p_u_man_c (expr P, R, S, A) =
      U := (60cm, 85cm) scaled (0.01 / Scale);
      T := identity aligned A rotated R scaled S shifted P;
      thdraw u_man_c_pic scaled (0.01 / Scale);
    enddef;

    def p_u_man_w (expr P, R, S, A) =
      U := (60cm, 80cm) scaled (0.01 / Scale);
      T := identity aligned A rotated R scaled S shifted P;
      thdraw u_man_w_pic scaled (0.01 / Scale);
    enddef;

    # --- Umelá stena / výstuž ---
    def l_wall_artificial (expr P) =
      T:=identity;
      pickup PenA;
      thdraw P withcolor (0.1, 0.3, 0.6);
    enddef;
  endcode

  # --- TeX rozloženie: Hlavička hore so scalebarom (max 8m, krok 1m), Legenda vľavo ---
  code tex-map
    \overfullrule=0pt\relax
    \legendwidth=5.2cm
    \legendcolumns=1

    % 1. HLAVIČKA NAD MAPOU (Logo, text a smerovka, pod nimi 8m grafická mierka s 1m krokom)
    \def\mapheader{%
      \vbox{\hsize=\hsize
        \hbox to \hsize{%
          \vbox to 3.2cm{\vfill\hbox{\pdfximage width 3.6cm {C:/Users/A1497335/Downloads/Dvojzavrt_po_objave/Dvojzavrt_po_objave/logo_cassovia.jpg}\pdfrefximage\pdflastximage}\vfill}\hfil
          \vbox to 3.2cm{\vfill\vbox{\hsize=0.52\hsize
            {\leftskip=0pt plus 1fil \rightskip=0pt plus 1fil \parfillskip=0pt
              {\size[24]\bf DVOJZÁVRT\endgraf}
              \vskip 3pt
              {\size[12]\rm Zádielska planina / Slovenský kras\endgraf}
              \vskip 3pt
              {\size[10.5]\it Speleoklub Cassovia\endgraf}
              \vskip 6pt
              {\size[9]\rm Zameral: {\bf Ladislav Gagy} \qquad Kreslil: {\bf Michal Danko}\endgraf}
              \vskip 2pt
              {\size[8.5]\rm Dátum merania: 16. 8. 2026 \qquad Dĺžka: {\bf 37 m} \qquad Hĺbka: {\bf 22 m}\endgraf}
            }
          }\vfill}\hfil
          \vbox to 3.2cm{\vfill\hbox{\northarrow}\vfill}%
        }
        \vskip 0.4cm
        \centerline{\scalebar}
        \vskip 0.8cm
      }
    }

    % 2. ĽAVÝ STĹPEC (1-stĺpcová legenda značiek)
    \def\mapleftcol{%
      \vtop{\hsize=\legendwidth
        {\the\legendtextsectionsize\the\legendtitle}\bigskip
        \insertlegend
      }
    }

    % 3. ROZLOŽENIE NA LISTE
    \def\maplayout{
      \legendbox{50}{100}{S}{\mapheader}
      \legendbox{22}{95}{NE}{\mapleftcol}
    }
  endcode

endlayout    

text sk "line wall:ice" "plastová rúra (spevnenie)"
text sk "point u:symbol_plan" ""
text sk "point u:symbol_extend" ""
text sk "point u:man_w" "postava (kráčajúca)"
text sk "point u:man_c" "postava (lezecká)"

# Export rez s 1-stĺpcovou ľavou legendou a 8m mierkou
export map -layout detail -projection [elevation 012] -o rez012c_1col.pdf

Použité AI – Gemini 3,7

Galléria testov a hrania sa s nano banna a gpt image.

The post Therion + AI appeared first on Blog SSS.

  •  

Therion Studio – nová generácia editora pre jaskynné mapovanie

Therion Studio – nová generácia editora pre jaskynné mapovanie

Moderný nástroj pre používateľov Therionu

Komunita jaskyniarov a mapovačov, ktorá využíva softvér Therion na spracovanie jaskynných meraní a tvorbu máp, sa dočkala zaujímavej novinky. Vývojár Ladislav B. predstavil projekt Therion Studio, nový multiplatformový editor určený pre prácu s projektmi Therion.

Projekt vznikol pôvodne ako snaha vytvoriť modernejšie grafické rozhranie pre používateľov macOS, kde tradičný nástroj XTherion dlhodobo narážal na rôzne obmedzenia súvisiace s technológiami Tcl/Tk a BWidgets. Počas vývoja sa však z jednoduchého editoru stal plnohodnotný multiplatformový nástroj dostupný pre Windows, Linux aj macOS.

Therion zostáva základom

Dôležité je zdôrazniť, že Therion Studio nenahrádza samotný Therion. Stále ide o osvedčený a výkonný systém vyvíjaný Martinom Budajom a Stachom Mudrákom, ktorý tvorí základ mnohých mapovacích projektov po celom svete.

Therion Studio funguje ako moderné pracovné prostredie nad existujúcim ekosystémom:

  • kompiláciu dát naďalej zabezpečuje Therion,
  • zdrojové súbory zostávajú kompatibilné,
  • jazyk Therion sa nemení,
  • 3D modely sa naďalej zobrazujú v programe Loch.

Pre skúsených používateľov to znamená zachovanie zaužívaného pracovného postupu, pričom získajú komfortnejšie prostredie na každodennú prácu.

Čo prináša Therion Studio?

Najväčším rozdielom oproti XTherionu je moderné používateľské rozhranie a orientácia na pohodlnú prácu s rozsiahlejšími projektmi.

Medzi hlavné funkcie patria:

Tabbed Workspace

Práca v kartách umožňuje súčasne zobrazovať:

  • zdrojový text,
  • blokovo orientovanú editáciu,
  • vizuálny editor mapy.

Všetky pohľady sú navzájom synchronizované.

Inteligentná editácia

Editor ponúka:

  • zvýrazňovanie syntaxe,
  • automatické dopĺňanie príkazov,
  • kontrolu správnosti zápisu,
  • kontextovú pomoc generovanú priamo z dokumentácie Therion Book.

Navigácia v projekte

Bočný panel zobrazuje štruktúru projektu vrátane:

  • survey blokov,
  • máp,
  • scrapov,
  • diagnostických hlásení.

Pri rozsiahlych projektoch ide o výrazné zjednodušenie orientácie.

Globálne vyhľadávanie

Možnosť vyhľadávať naprieč celým projektom šetrí čas najmä pri úpravách väčších jaskynných systémov.

Vizuálny editor máp

Jednou z najzaujímavejších noviniek je takmer WYSIWYG editor mapy, ktorý umožňuje vizuálnu prácu s objektmi a ich štýlmi. Niektoré štýly sa ešte pripravujú, no základná funkcionalita je už dostupná.

Práca na viacerých monitoroch

Therion Studio podporuje paralelnú prácu vo viacerých oknách, takže na jednom monitore môže byť otvorený zdrojový kód a na druhom vizuálna mapa.

Integrovaný kompilátor

Kompiláciu Therion projektov je možné spúšťať priamo z prostredia aplikácie vrátane prehľadu výstupov a chybových hlásení.

Technológie a vývoj

Program je napísaný v jazyku C++ s využitím frameworku Qt, čo zabezpečuje natívny vzhľad a dobrú podporu na všetkých hlavných desktopových platformách.

Zaujímavosťou je, že autor pri implementácii využíval aj nástroj OpenAI Codex, ktorý pomohol urýchliť vývoj jednotlivých častí aplikácie.

Prvá verejná verzia

Aktuálne vydanie predstavuje prvú verejnú verziu zameranú na každodennú prácu s Therion projektmi. Ako pri každom novom projekte, aj tu možno očakávať drobné chyby alebo chýbajúce funkcie, no základný pracovný rámec je už pripravený na reálne použitie.

Autor preto vyzýva komunitu jaskyniarov, aby aplikáciu otestovala na vlastných dátach a poskytla spätnú väzbu, hlásenia chýb či návrhy na nové funkcie.

Kde Therion Studio nájdete?

Projekt je dostupný na GitHube:

Repozitár: github.com/ladislavb/therion-studio

Inštalačné balíčky a vydania: github.com/ladislavb/therion-studio/releases

Záver

Therion patrí už desaťročia medzi najvýkonnejšie nástroje na tvorbu jaskynných máp. Napriek tomu jeho používateľské rozhranie bolo pre nových používateľov často prekážkou. Therion Studio predstavuje zaujímavý krok smerom k modernejšiemu a intuitívnejšiemu prostrediu bez toho, aby bolo potrebné meniť osvedčené pracovné postupy.

Pre mapovačov využívajúcich Therion môže ísť o jednu z najvýznamnejších noviniek posledných rokov.

The post Therion Studio – nová generácia editora pre jaskynné mapovanie appeared first on Blog SSS.

  •  

Therion – textúra v novom web toole

Therion – textúra v novom web toole

Keď už máš vygenerovaný 3D povrch pomocou Terén Ľahko, ďalšia logická otázka je jednoduchá:
akú textúru si na to celé vlastne nalepím?

Presne na toto vznikol druhý nástroj – DankeZ Downloader (Tile Downloader).
Je to webová aplikácia, ktorá umožňuje stiahnuť mapy z rôznych zdrojov, poskladať ich do jedného obrázka vytvoriť prelínanie a automaticky ich geograficky nakalibrovať – či už pre Therion, alebo pre mobilné aplikácie Locus Map a OruxMaps.

Zdrojový kód a samotný nástroj:
github.com/dankez/map-downloader-for-therion

Na čo je tento nástroj dobrý v praxi

Typický scenár jaskyniara:

  • chceš mať prehľadný povrch nad jaskyňou
  • potrebuješ vidieť vchody, závrty, lesné cesty, ortofoto, geológiu
  • chceš používať rovnakú mapu v Therione aj v mobile

A presne toto sa app pokúša riešiť.

Výber oblasti bez GIS trápenia

Na začiatku definuješ:

  • stredový bod – GPS/JTSK súradnice (napr. vchod do jaskyne)
  • rozsah oblasti v metroch – sever, juh, východ, západ

Nemusíš riešiť pixely ani manuálne orezávanie. Jednoducho povieš, že chceš napríklad 500 metrov na každú stranu, a aplikácia pripraví presne taký výrez. +- veľkosť stahovanej dlaždice, nelakaj sa ak je výrez oveľa väčší ako povrch, Therion to oreže dokonale. Odporúčam mať textúru vačšiu ako 3d povrch.


Viacero mapových zdrojov na jednom mieste

Veľká výhoda Downloadera je práca s viacerými mapovými vrstvami naraz. Nie si odkázaný na jeden typ mapy.

Medzi podporované zdroje patria napríklad:

  • Freemap.sk
    • turistická mapa
    • tieňovaný reliéf
  • ZBGIS
    • ortofotomapy
    • základná mapa
  • geologické mapy ….

Každý mapový zdroj funguje ako samostatná vrstva.


Prekryvanie vrstiev a priehľadnosť

Vrstvy môžeš kombinovať a prelínať podľa potreby.

Typický príklad použitia:

  • spodná vrstva: ortofoto
  • vrchná vrstva: tieňovaný reliéf

Vrchnú vrstvu vieš spriehľadniť, takže vidíš detaily z viacerých máp naraz. Výsledkom je prehľadná mapa, ktorá dáva zmysel pri plánovaní aj pri kreslení.


Export pre Therion bez ručnej kalibrácie

Jedna z najdôležitejších funkcií po kliknutí na Spojiť a Stiahnuť

Downloader vygeneruje:

  • JPG mapu
  • kalibračný reťazec pre Therion

Tento reťazec stačí vložiť do .th súboru a mapa:

  • má správne súradnice
  • má správnu mierku
  • presne sedí k povrchu z Terén Ľahko

Bez ručného klikania a skúšania.


Export do mobilu – Locus Map a OruxMaps

Z tej istej konfigurácie vieš rovno vytvoriť:

  • KMZ súbor pre Locus Map
  • ZIP balík pre OruxMaps

Výsledkom je:

  • offline mapa
  • presná kalibrácia
  • rovnaký mapový podklad ako v Therione


Cache a rýchle opakovanie generovania

Stiahnuté mapové dlaždice sa ukladajú do lokálnej cache.

V praxi to znamená:

  • opakované generovanie tej istej oblasti je výrazne rýchlejšie
  • pri zmene priehľadnosti alebo vrstiev sa mapy nesťahujú znova
  • šetríš čas aj pripojenie

Prečo to funguje spolu s Terén Ľahko

Tieto dva nástroje sú navrhnuté tak, aby sa vzájomne dopĺňali:

  • Terén Ľahko rieši 3D povrch, mriežku a generuje základnú textúru na 90% postačuje…
  • DankeZ Downloader rieši mapový podklad z rôznych zdrojov a prelínanie podkladov

Oba nástroje:

  • používajú rovnaké súradnicové systémy
  • generujú výstupy priamo pre Therion + Locus + Orux
  • sú robené pre jaskyniarov, nie pre GIS špecialistov, vzniklo to ako zábava a testovanie AI ….

Záver

Ak mapuješ jaskyne v Therione a moje apky si vyskúšal daj mi feedback v komentári… ak ti to veľmi pomohlo tak pijem pivo nealko 🙂

Video

The post Therion – textúra v novom web toole appeared first on Blog SSS.

  •  
❌