8.3 Programování v PovRAY (proměnné, cykly)

Podobné dokumenty
Synchronizace dvou pohybů - posuvného ve směru osy x a totačního kolem osy z. scena.pov. anim.ini #include colors.inc

Jsou definovёўny hustotou Ѓ0Ќ0Ёўstic v danё oblasti, plocha se vytvoѓ0 0ЁЄ, pokud hustota

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Algoritmizace a programování

Operační systémy. Cvičení 4: Programování v C pod Unixem

Funkce, podmíněný příkaz if-else, příkaz cyklu for

VISUAL BASIC. Přehled témat

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

2. lekce Algoritmus, cyklus Miroslav Jílek

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Lekce 04 Řídící struktury

Vstupní požadavky, doporučení a metodické pokyny

RGB Pastelky. Vojta Hanák. Obsah barev

Úvod do programování - Java. Cvičení č.4

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Poslední nenulová číslice faktoriálu

ABC Linux běží z CD české prostředí tištěná příručka obsah portálu Mutt Jak začít? Jan Fuchs

Algoritmizace prostorových úloh

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Programovací jazyk Pascal

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Barvy a barevné modely. Počítačová grafika

Konečný automat. Jan Kybic.

Rekurzivní sledování paprsku

Programování v jazyce JavaScript

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Algoritmizace prostorových úloh

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Tvorba webových stránek

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

1. Téma 03 - Rozhodování

Algoritmizace prostorových úloh

Programování v jazyce C pro chemiky (C2160) 6. Funkce, struktury

Algoritmizace. 1. Úvod. Algoritmus

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Denotační sémantika. Marek Běhálek

Parametrické modelování těles. Autodesk INVENTOR. Ing. Richard Strnka, 2012

Algoritmy a datové struktury

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Více o konstruktorech a destruktorech

Materiály. Otevřete model Three Plugs.3dm.

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Text úlohy. Vyberte jednu z nabízených možností:

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

6 Příkazy řízení toku

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 11

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Řídicí struktury. alg3 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Profilová část maturitní zkoušky 2017/2018

Kurz LSL skriptování. Shiny Iceberg 2009

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Úvod do programovacích jazyků (Java)

Animace a geoprostor. První etapa: Animace 2. přednáško-cvičení. Jaromír Landa. jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

6. Příkazy a řídící struktury v Javě

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

Programujeme v softwaru Statistica

Typografické konvence 11 Názvosloví 12. Co je Architectural Desktop 13 Objekty Architectural Desktopu 14

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Sada 1 - Základy programování

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

PODPROGRAMY PROCEDURY A FUNKCE

TNPW1 Cvičení

C# konzole Podíl dvou čísel, podmínka IF

VY_32_INOVACE_08_2_04_PR

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

2 Datové typy v jazyce C

PHP tutoriál (základy PHP snadno a rychle)

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Název: VY_32_INOVACE_PG3304 Vytváření základních geometrických objektů ve 3DS Max a jejich úpravy

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Konstruktory překladačů

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Konstruktory a destruktory

10 Algoritmizace Příklad 2 Word 2007/ VBA

Překladač a jeho struktura

Transkript:

8.3. PROGRAMOVÁNÍ V POVRAY 8.3 Programování v PovRAY (proměnné, cykly) Jak bylo už ukázáno v předchozí kapitole PovRAY k popisu scény využívá vlastní scriptovací jazyk. Nejedná se plnohodnotný programovací jazyk, ale přesto umožňuje s pomocí proměnných, cyklu while a podmínky if-else zjednodušit a zpřehlednit zápis scény nebo jednoduše vytvářet dynamicky generované scény. 8.3.1 Proměnné Definují se pomocí direktivy #declare název proměnné = přiřazená hodnota; PovRAY nerozlišuje typy proměnných, takže jedné proměnné můžete přiřadit číslo (přirozené, reálné), ale i textový řetězec nebo dokonce celý objekt. #declare a = 1; #declare vektor = < 2, 1, 5 >; #declare valec = cylinder{< 10, 0, 0 >, < 10, 0, 0 >, 2 pigment{color rgb< 0, 1, 0 >}} pro použití objektu valec musíme použít příkaz object{nazev}, kdekoliv po zápisu definice valce: object{valec} jeden takto definovaný útvar můžeme zavolat několikanásobně a dále jej modifikovat (translate, rotate, scale, color, texture... ) Př. použití proměnných a zkrácených forem zápisu 8.3.2 Cyklus while background{color White} #declare a=5; box{< 0, 0, 0 >, < 2 a, a/2, 1.5 a > pigment{color Red}} #declare vektor = < 2 a, a/2, 1.5 a >; box{0,vektor pigment{color Green} translate a*y} #declare kvadr = box{0,1} object{kvadr pigment{color Blue} scale vektor translate -a*y} #declare zluta = Yellow; object{kvadr pigment{color zluta} scale 2*a/vektor translate -(a/2)*x} camera{location< a, a/2, 3 a > look at< a, a/4, 0 >} light source{< a, a/2, 3 a > color rgb 1} light source{< 0, 5 a, 5 a > color rgb 0.7 shadowless} Nejdříve se vyhodnotí podmínka (pokud není splněna, cyklus se ani jednou neprovede), poté se provedou příkazy uvnitř cyklu, obecně jich může být neomezený počet, na závěr se navýší (sníží) hodnota řídící proměnné. Cykly je možné neomezeně vnořovat, výrazně ale přitom stoupá výpočetní náročnost scény a hrozí nebezpečí zacyklení výpočtů, také klesá přehlednost kódu. Dlouhá, Červenka 2013 69 VŠB-TU Ostrava

KAPITOLA 8. 3D GEOMETRIE V POVRAY #declare ridici promena; #declare pocet prubehu; #while (podminka) prikaz prikaz... #declare ridici promena ± hodnota zmeny; Př. Ukázka využití cyklu while pro vygenerování daného počtu objektů a pro vytvoření barevného přechodu. camera{ location < 5, 2, 8 > look at < 5, 2, 0 >} light source{ < 0, 0, 10 > color rgb 1} light source{ < 25, 25, 25 > color rgb 1 shadowless} background{ color White} #declare krok = 0; #declare pocet = 10; #while (krok < pocet) box{0,<.5, 5,.2 > translate krok*x pigment{color rgb<krok/pocet,1-krok/pocet,0>}} #declare krok = krok + 1; 8.3.3 Podmínka if-else Na základě vyhodnocení podmínky se rozhodne, zde se provede jedna nebo druhá varianta příkazů. Často se využívá pro řízení animací. #if (podminka) prikazy, ktere se provedou, jestli je podminka splnena #else prikazy, ktere se provedou, jestli je podminka nesplnena Dlouhá, Červenka 2013 70 VŠB-TU Ostrava

8.3. PROGRAMOVÁNÍ V POVRAY 8.3.4 Řešené příklady Koleno Vytvořte obecný objekt koleno pro pravoúhlé propojení potrubí o daném průměru a síle stěny. Vytvořte externí soubor koleno.inc, které budete moct načítat do dalších scén. Pomocí podmínky zajistěte, že vnitřní průměr bude vždy menší než vnější. #include textures.inc camera{ location < 16, 8, 18 > look at < 0, 0, 0 > } light source{ < 100, 10, 100 > color rgb 0.7 } light source{ < 16, 8, 18 > color rgb 0.2 shadowless } background{color White} /* deklarace promenych pouzitych pro definici kolena */ #declare polomer ridici = 8; #declare polomer tvorici = 4.8; #declare polomer vnitrni = 5; //kdyz bude zadan vnejsi prumer mensi nez vnitrni dojde k zamene hodnot (pokud je podminka splnena nestane se nic) #if (polomer tvorici > polomer vnitrni) #else #declare p = polomer vnitrni; #declare polomer vnitrni = polomer tvorici; #declare polomer tvorici = p; Dlouhá, Červenka 2013 71 VŠB-TU Ostrava

KAPITOLA 8. 3D GEOMETRIE V POVRAY /* koleno.inc - volani */ //soubor koleno.inc muze byt zavolan az po nastaveni promennych! //#include koleno.inc /* koleno.inc - obsah */ //koleno.inc - start #declare koleno = intersection{ difference{ torus{ polomer ridici,polomer tvorici } torus{ polomer ridici,polomer vnitrni } } box{ <-(polomer ridici + polomer tvorici +1),-(polomer tvorici + 1),0>,<0,(polomer tvorici + 1),-(polomer ridici + polomer tvorici +1)> } } //koleno.inc - konec object{ koleno texture{ Copper Metal } } object{ koleno texture{ Gold Metal } rotate < 180, 0, 0 > } object{ koleno texture{ Chrome Metal } rotate < 270, 180, 90 > translate <0,-polomer ridici,polomer ridici> } Nosníky Vytvořte obecný objekt nosník - I-profil s odvrtanými odlehčovacími otvory, jejichž počet se mění s délkou nosníku (na 1 délkovou jednotku připadá 1 otvor o poloměru 1/2 jednotky). Pomocí cyklů vytvořte z těchto nosníků konstrukce např. pravidelný šestiúhelník. Dlouhá, Červenka 2013 72 VŠB-TU Ostrava

8.3. PROGRAMOVÁNÍ V POVRAY background{color White} #declare delka nosniku = 12; #declare nosnik = difference{ box{-.5*y,<delka nosniku,.5,.5>} box{< 1,.4,.5 >,<delka nosniku+1,.4,.2>} box{< 1,.4, 1 >,<delka nosniku+1,.4,.3>} // odlehcovaci otvory #declare krok = 1; #while (krok < delka nosniku) cylinder{-1*z,1*z,.2 translate (krok)*x} #declare krok = krok + 1; pigment{color Red} } #declare krok = 0; #declare pocet = 6; #while (krok < pocet) object{nosnik rotate 60*krok*z} object{nosnik rotate -120*z translate (delka nosniku-.2)*x rotate 60*krok*z } sphere{delka nosniku*x,.5 rotate 60*krok*z pigment{color Red}} #declare krok = krok + 1; /* kamera, svetla */ // pozice kamery a svetel zavisi na delce nosniku a umisteni konstrukce ve scene camera{location<.5*delka nosniku,.5*delka nosniku,-2*delka nosniku> look at (1/10)*delka nosniku*y} light source{<.5*delka nosniku,.5*delka nosniku,-2*delka nosniku> color rgb.7} light source{-100*z color rgb.5 shadowless} Dlouhá, Červenka 2013 73 VŠB-TU Ostrava

Geometrie na poc ı tac i 8.3.5 KAPITOLA 8. 3D GEOMETRIE V POVRAY U lohy k procvic enı 2. Prostorova spira la 1. Spira la spira la z kulic ek 4. Auto 3. Parthenon r ecky chra m o s ı r ce 8 a de lce 18 sloupu, kaz dy sloup ma 16 dra z ek s kulovy m zakonc enı m 5. Toc ite schodis te Dlouha, C ervenka 2013 74 VS B-TU Ostrava