Vivid raytracer
Egyebek
Fotózás

A VIVID nyelvezete és fájltípusai

Fájltípusok

A vivid sima szövegfájlokat használ (plain text), szerkesztésükhöz bármelyik egyszerű szövegszerkesztő használható, például a Windows beépített „jegyzettömbje” (notepad). Én személy szerint a nyílt forráskódú és teljesen ingyenes notepad++ nevű szövegszerkesztőt használom a színes szövegkiemelése miatt, de bármelyik HTML szerkesztő megteszi. Valódi szövegszerkesztőt (pl. MS Word) ne használj hozzá!


Kiterjesztések

Funkciója szerint többféle fájlkiterjesztést is használ a vivid. Ezek legtöbbje pusztán opcionális lehetőség, tehát nem kötelező használni, csak ha szükség van rájuk Nézzük:

Matematikai műveletek

Az egyes elemek koordinátinak leírásához nem csak konkrét számokat használhatunk, hanem több matematikai műveletet is, amik megkönnyítik a munkát. Ezek az alábbi szintakszissal használhatók:

Vektorműveletek:

a b c cross x y z ......Két vektor vektoriális szorzata. Bővebben a wikipédián.
a b c dot x y z .........Pont művelet, vagy skaláris szorzat. Bővebben a wikipédián.
a b c + x y z ...........Vektor összeadás
a b c - x y z ............Vektor kivonás
a b c * n .................A vektor "n" méretűre növelése
a b c / n .................A vektor "1/n" méretűre növelése
-(a b c) ..................Vektor negálás

Számolási műveletek:

sin(x), cos(x), tan(x), asin(x), acos(x), atan(x) ......Trigonometriai műveletek.
sqrt(x) ........................................................................Gyökvonás, "x" gyökét adja vissza
pow(x y) .....................................................................Négyzetre emelés, "x" az "y"-adikon.
*, /, +, - ........................................................................Szorzás, osztás, összeadás, kivonás

A műveletekhez természetesen lehet zárójelet használni, például: (a * (b * c))


Színek leírása

A vivid-ben a színeket RGB értékkel adjuk meg. Az értékek 0 és 1 között lehetnek. A fehér szín a 1 1 1, a fekete a 0 0 0. Természetesen a színek megadásánál is használhatók a matematikai műveletek. Például ez is érvényes szín megadás: (129/255) (78/255) (211/255)


Kommentelés

Aki már programozott valaha, az tudja, hogy a forráskódot érdemes "kommentezni", vagyis bizonyos részekhez magyarázószöveget tenni, hogy később könyebben lehessen értelmezni. A vivid is biztosít erre lehetőséget. A több soros megjegyzéseket /* */ közé kell tenni, az egysoros megjegyzéseket két darab per jellel // kell indítani, lezárni nem kell.


Utasítások nyelvtana

Egysoros definíció:

#define blue (0 0 1)
#define white (1 1 1)


A példában két színt definiáltunk. A .vc kiterjesztésű vivid color fájlokban is így írjuk le a színeket, de használhatjuk magában a .v fő vivid fájlokban is. Természetesen nem csak színt, hanem bármilyen számértéket definiálhatunk, például egy gömb átmérőjét is:

#define SPHERE_RADIUS (1)

A példánkban SPHERE_RADIUS -nak neveztük el a változót, amelyben a gömb átmérőjének értékét tároljuk.

Többsoros definíció:

#define BLUE_PLASTIC\
     surface {\
     diffuse blue \
     shine 20 white\
     }


Az egysoroshoz képest annyi a különbség, hogy egy fordított per jellel \ zárunk minden sort. A példában egyébként egy kék színű műanyag felületet definiáltunk BLUE_PLASTIC néven. A későbbiekben ha ezt a felületet akarjuk felhasználni egy testhez, akkor elég a felület leírása helyett csak BLUE_PLASTIC -ot beírni...

Más fájl belinkelése:

#include color.vc

Ez egy vivid color fájl belinkelése. Fontos tudni, hogy a vivid főfájlnak (.v) és a belinkelendő fájlnak egy mappában kell lennie! Ugyanígy kell belinkelni a .vo és .vs fájlokat is.

Utasítás megadása:

sphere {
     center 0 0 0
     radius 0.5 }


Ez például egy gömb. Az utasítást mindíg egy kapcsos zárójel nyitja, ezt követik a paraméterek, majd egy kapcsos zárójellel zárjuk. Így kell megadni a felületeket, testeket és minden egyebet.

Definíció megszüntetése:

#undef blue

Ha már nincs szükség egy előzőleg definiált dologra (például szín), akkor megszüntethetjük ezzel az utasítással.



Röviden ennyit kell tudni a vivid nyelvtanáról, a többi részletet majd az adott témánál leírom.



Tovább a testek bemutatásához...»
foot