OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 20:43

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
PříspěvekNapsal: 12.08.2019, 13:24 
Offline
Kecka

Registrován: 12.06.2018, 11:44
Příspěvky: 45
Has thanked: 33 times
Been thanked: 4 times
Nemáte niekto v archíve z hlbokej minulosti algoritmus na vyplnenie plochy v TP 3.0 pod Sharp MZ 800?
Chcem oživiť retroprojekt graf. editora z detstva a trochu som sa zasekol... :sharp:


Nahoru
 Profil  
 
PříspěvekNapsal: 12.08.2019, 15:58 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 08.07.2013, 00:28
Příspěvky: 1554
Has thanked: 485 times
Been thanked: 634 times
Sice nemám, ale doporučil bych tuto knížku, kde je algoritmus popsán na str.90 pascalovským pseudokódem.
Kód:
procedure SEED FILL ( x , y, { s tartovací bod }
                      bc, { barva hranice }
                      fc : integer { barva plnění } );
var i: integer;
begin
     i : = Get Pixel Color ( x , y ); { vrací barvu p ixelu ( x, y) }
     if (i <> bc ) and (i <> fc ) then
     begin
          Set Pixel Color ( x , y , fc ); { nastaví barvu pixelu (x, y) }
          SEED FILL ( x+ l , y , bc , fc );
          SEED FILL ( x- I , Y , bc , fc );
          SEED FILL ( x , y+ l , bc , fc );
          SEED FILL ( x , y- l , bc , fc );
     end
end { SEED FILL }

Kromě toho jsou tam i další algoritmy, které by se mohli do tvého editoru šiknout ;-)

_________________
より良い競争相手からソフトウェアを購入する (。◕‿‿◕。)
Ďábel se skrývá v detailu (staré technické rčení)


Nahoru
 Profil  
 
PříspěvekNapsal: 12.08.2019, 16:34 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Měl by tam být ještě čítač hloubky vnoření rekurze, aby u složitého obrázku nepřetekl zásobník.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
PříspěvekNapsal: 14.08.2019, 12:21 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
Nejméně náročné řešení na velikost paměti (kromě jiného pomalejšího algoritmu) je pomocí fronty a ne zásobníku/rekurze.

Fronta by měla být maximálně tak velká jako je největší obvod při kreslení výplně.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
PříspěvekNapsal: 14.08.2019, 14:57 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Tak ono je v principe jedno ci sa pouzije zasobnik alebo fronta, zmeni sa iba poradie ktorym sa plocha vyfarbuje.
Samozrejme myslim pripad ked sa ten zasobnik vyuziva rovnako efektivne ako fronta.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz