Portál AbcLinuxu, 1. května 2025 08:45

Generovani obrazku ve stupnich sedi

17.5.2007 19:42 | Přečteno: 1142× | Linux

Rad bych se poradil s dvema malymy problemy okolo grafiky. Nehodi se to do poradny ale blog to snese. Nejak mne dnes nenapada, jak to vyresit.

Tusim, ze resenim by mozna mohl byt postscript nebo TeX, ale zaroven myslim, ze by to melo jit i nejak jednoduseji.

Prvni vec je vygenerovani cernobileho(256 stupnu sede), stredove symetrickeho obrazku, kde bych nejak (bud funkci nebo sadou datovych bodu x,y) zadal vzdalenost od stredu(x) a stupen sedi(y). Pro priklad, kdyby zadana funkce byla vzestupne schodovita, byl by pozadovany obrazek sadou soustrednych kruznic s bilou uprostred a cernou na vnejsim okraji. Kdyby byla vstupni sada rada "pulsu" (|_|_|_|_||_) vypadal by obrazek jako terc s cernym bodem uprostred a dvojitou cernou carou na vnejsim okraji....

Druhy, mozna i jednodussi problem je vygenerovat testovaci obrazec pro mikrofotografii, takze bych chtel nejak rozhazet na A4 nejakych 255 ctvercu, z nich kazdy by mel opet jiny stupen sedi. Je nejaky rozumne jednoduchy zpusob jak to udelat?

O postscriptu vim jen ze existuje. Bude-li jine reseni, bude to fajn. Vysledek muze byt vektor, ale klidne i bitmapa, staci jen aby mela slusne rozlisteni pro tisk na A4, pak to fotograficky zmensim a bude to pouzite jako pokusna maska na mikrolitografii v amorfnich polovodicich.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

17.5.2007 20:04 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
Odpovědět | Sbalit | Link | Blokovat | Admin
Neměl by být velký problém vygenerovat si podle požadovaných dat SVG obrázek (je to XML soubor) a ten následně překonvertovat v požadovaném rozlišení do nějaké bitmapy. Asi nejsnazší by bylo vytvořit XSLT šablonu a tu pak pustit vždy jen na datový soubor.

Zřejmě nebude problém ani naskriptovat něco takového v Gimpu. záleží na tom, s čím děláte a co umíte. Ostatně i ten PostScript můžete generovat nějakým skriptem či programem (to bude ale asi nejtěžší metoda, PostScrip není zrovna pro člověka přívětivý formát).
JiK avatar 17.5.2007 20:28 JiK | skóre: 13 | blog: Jirkoviny | Virginia
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
Hmm, na to jsem asi moc blbej. na kazdy pad mne napadl jeste jeden pozadavek, ono to cele bude generovano tak 2-3x, takze ne nijak masove s milionem opakovani, klidne bych ocenil i nejaky napul rucni reseni.
18.5.2007 08:29 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
Soustředné kružnice např. takto:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="600px" height="600px" version="1.1" viewArea="0 0 200 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
	<title>Kruhy</title>
	<circle cx="100" cy="100" r="100" fill="rgb(100,100,100)" />
	<circle cx="100" cy="100" r="90" fill="rgb(255,255,255)" />
	<circle cx="100" cy="100" r="80" fill="rgb(130,130,130)" />
	<circle cx="100" cy="100" r="70" fill="rgb(158,158,158)" />
	<circle cx="100" cy="100" r="60" fill="rgb(200,200,200)" />
	<circle cx="100" cy="100" r="50" fill="rgb(250,250,250)" />
	<circle cx="100" cy="100" r="40" fill="rgb(010,010,010)" />
	<circle cx="100" cy="100" r="30" fill="rgb(078,078,078)" />
	<circle cx="100" cy="100" r="20" fill="rgb(123,123,123)" />
	<circle cx="100" cy="100" r="10" fill="rgb(111,111,111)" />
</svg>
Musí být malované z vnějšku dovnitř, protože se maluje celá kružnice, ne jen mezikruží. cx, cy je střed (pro všechny stejný), r je poloměr (postupně se zmenšující). Rozdíl sousedních poloměrů určuje tloušťku mezikruží. fill je barva, lze ji zadat i hexadecimálně (např. #CACACA). viewArea na začátku je plocha, do které se kreslí, pokud byste chtěl přidat např. dalších 10 kružnic s rozdílem poloměrů 10, zvětšete si jí na "0 0 400 400" a středy posuňte do "200, 200". width a height na začátku je přednastavená velikost obrázku, ale každý rozumný program vám umožní zoomovat.

Otevřít to půjde např. v Inkscape, nebo např. javovský Batik.
18.5.2007 08:42 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
V předchozím příkladě "přelepte" vievBox za viewArea. A čtverce např. takto (x a y rostou postupně po desítkách od 0 do 150):
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210mm" height="297mm" version="1.1" viewBox="0 0 160 226" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
	<title>Čtverce</title>
	<rect height="10" width="10" x="000" y="000" fill="rgb(100,100,100)" /> 
	<rect height="10" width="10" x="010" y="000" fill="rgb(020,020,020)" /> 
	<rect height="10" width="10" x="020" y="000" fill="rgb(200,200,200)" /> 
	<rect height="10" width="10" x="030" y="000" fill="rgb(158,158,158)" /> 
	<rect height="10" width="10" x="040" y="000" fill="rgb(030,030,030)" /> 
	<rect height="10" width="10" x="050" y="000" fill="rgb(111,111,111)" /> 
	<rect height="10" width="10" x="060" y="000" fill="rgb(255,255,255)" /> 
	<rect height="10" width="10" x="070" y="000" fill="rgb(200,200,200)" /> 
	<rect height="10" width="10" x="080" y="000" fill="rgb(100,100,100)" /> 
	<rect height="10" width="10" x="090" y="000" fill="rgb(020,020,020)" /> 
	<rect height="10" width="10" x="100" y="000" fill="rgb(200,200,200)" /> 
	<rect height="10" width="10" x="110" y="000" fill="rgb(158,158,158)" /> 
	<rect height="10" width="10" x="120" y="000" fill="rgb(030,030,030)" /> 
	<rect height="10" width="10" x="130" y="000" fill="rgb(111,111,111)" /> 
	<rect height="10" width="10" x="140" y="000" fill="rgb(255,255,255)" /> 
	<rect height="10" width="10" x="150" y="000" fill="rgb(200,200,200)" /> 

	<rect height="10" width="10" x="000" y="010" fill="rgb(133,133,133)" /> 
	<rect height="10" width="10" x="010" y="010" fill="rgb(097,097,097)" /> 
	<rect height="10" width="10" x="020" y="010" fill="rgb(014,014,014)" /> 
</svg>
17.5.2007 22:43 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Skládaní na papír
Odpovědět | Sbalit | Link | Blokovat | Admin
Spoustu malych PS lze vyskladat na vetsi papir pomoci psnup.
andree avatar 17.5.2007 23:38 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
Odpovědět | Sbalit | Link | Blokovat | Admin
ked to vies popisat matematicky pre bod (x,y), nie je nic jednoduchsie ako napisat si napr. v Ccku primitivny programik, co to nahadze do pola danych rozmerov a potom exportuje do PGM (portable greymap)... ten vie importovat vacsina unixovych grafickych programov, myslim
JiK avatar 18.5.2007 02:31 JiK | skóre: 13 | blog: Jirkoviny | Virginia
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
hmm, v cecku jsem se nikdy nedostal ani na konec prvni kapitoly Heroutovy ucebnice. takze tudy asi cesta nevede.
20.5.2007 17:38 balino
Rozbalit Rozbalit vše Re: Generovani obrazku ve stupnich sedi
OT: odporucam knihu od Kernighana a Ritchieho - The C programming Language. Ta bola (aspon pre mna) pisana zrozumitelnejsie.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.