Hei !

alla on lyhyt selostus kirjastossa olevista 
aliohjelmista. Ensimm{inen muutos joka sinun tulisi
tehd{ on muuttaa zbuffer.c tiedostossa oleva zbf_show()
funktio haluamaksesi.

tiedosto test.c sis{lt{{ ohjelman joka tulostaa alihakemistossa
models olevista polygonim{{rittelyist{ kuvan putkelle.

test skaalaus-kerroin viivat(0/1) valaistusmalli(0-5) cflag(0/1)<models/tiedosto

valaistumalli:

0 = LMD_LMODEL_CMAP
1 = LMD_LMODEL_NOLIGHTS
2 = LMD_LMODEL_CONSTANT
3 = LMD_LMODEL_GOURAUD
4 = LMD_LMODEL_PHONG
5 = LMD_LMODEL_USER

t. Juha

ps. soittele ja kysy jos on ongelmia.

---------------------------------------------------------
Tiedosto zbuffer.c: zbuffer algoritmin toteutus.

- zbf_open( XSize, YSize );

  avataan kirjasto, rasterin koko parametrina

- zbf_close()

  suljetaan kirjasto

- zbf_show()

  tulostetaan rasteri. T{m{n voit muuttaa itsellesi sopivaksi.

- zbf_clear()

  alustetaan rasteri ja z-puskuri.

- void zbf_set_user_functions( void (*vertex)(), void (*pixel)() )

  asetetaan funktiot, joita kutsutaan ennen jokaisen verteksin tai pixelin
  p{ivityst{, ja jotka voivat tehd{ haluamansa muutokset verteksin tai
  pixelin v{riin tms. 

------------------------------------------------------

Tiedosto lmodel.c: valaistusmallin evaluointi 


- lmd_set_lmodel( int lmodel )

  asetetaan valaistusmalli:

 LMD_LMODEL_CMAP
 LMD_LMODEL_NOLIGHTS
 LMD_LMODEL_CONSTANT
 LMD_LMODEL_GOURAUD
 LMD_LMODEL_PHONG
 LMD_LMODEL_USER

- lmd_set_lmodel_interpolants( int n, int *C )

  asetetaan interpoloitavat parametrit zbuffer- algoritmille.
  C[n] on taulukko kokonaislukuja, joiden arvo voi olla
  joku seuraavista. Valaistusmallista riippuen jotkut n{ist{
  on asetettu valmiiksi (mm. VERTEX_COORD_X,Y,Z ovat aina
  interpolointilistassa).

 VERTEX_COORD_X
 VERTEX_COORD_Y
 VERTEX_COORD_Z

 VERTEX_TEXTURE_U
 VERTEX_TEXTURE_V

 VERTEX_COLOR_I

 VERTEX_COLOR_R
 VERTEX_COLOR_G
 VERTEX_COLOR_B
 VERTEX_COLOR_A

 VERTEX_NORMAL_X
 VERTEX_NORMAL_Y
 VERTEX_NORMAL_Z

 VERTEX_ORIG_COORD_X
 VERTEX_ORIG_COORD_Y
 VERTEX_ORIG_COORD_Z

- lmd_add_lmodel_interpolant( int C )

  lis{t{{n interpoloitavien parametrien listaan C

-------------------------------------------------------------

Tiedosto user.c: 

- void usr_map_color( int n, FLOAT r, FLOAT g, FLOAT b )

  asetetaan v{rikartan indeksille n rgb-arvo (0<=r,g,b<=1)   

- FLOAT *usr_pack3f( FLOAT x, FLOAT y, FLOAT z )

  palauttaa parametrit x,y,z vektoriin sijoitettuna

- void usr_bgnline( )

  viivan piirron aloitus.

- void usr_bgnpolygon()

  polygonin piirron aloitus.

- void usr_bgnpoint( )

  pisteen piirron aloitus.

- void usr_vertex( FLOAT *v )

  annetaan verteksikoordinaatit x,y,z.

- void usr_normal( FLOAT *n )

  annetaan verteksille normaali (pit{{ olla normalisoitu).

- void usr_texture( FLOAT *t )

  annetaan verteksille tekstuurikoordinaatit (u,v). 

- void usr_color( FLOAT *c )

  annetaan verteksille v{ri (0<=r,g,b<=1) taulukko.

- void usr_color_index( FLOAT i )

  annetaan verteksille v{rikartan indeksi.

- void usr_endpolygon( )

  lopetetaan polygonin m{{rittely.

- void usr_endline( )

  lopetetaan viivan m{{rittely.

- void usr_endpoint( )

  lopetetaan pisteen m{{rittely.

- void usr_material_alpha( FLOAT a )

  asetetaan materiaalin l{pin{kyvyys. 

- void usr_material_ambient( FLOAT *ambient )

  asetetaan materiaalin ambientti v{ri. 

- void usr_material_diffuse( FLOAT *diffuse )

  asetetaan materiaalin diffuusi v{ri. 

- void usr_material_specular( FLOAT *specular, FLOAT exp )

  asetetaan materiaalin spekulaari v{ri. 

-------------------------------------------------

tiedosto transforms.c: transformaatiot.

- void trs_matrix_mode( int type )

  asetetaan matriisimoodi:

 TRS_MATRIX_PROJECTION  tai 
 TRS_MATRIX_VIEWING

- void trs_get_matrix( TRS_MATRIX M )

  palauttaa voimassa olevan transformaatiomatriisin
  (katselu tai projektio, riippuen mode asetuksesta)

- void trs_load_matrix( TRS_MATRIX M )

  asettaa transformaatiomatriisin,
  (katselu tai projektio, riippuen mode asetuksesta)

- void trs_push_matrix()
- void trs_pop_matrix()

- void trs_translate( FLOAT x, FLOAT y, FLOAT z )

  translaatiot akseleiden suuntaan.

- void trs_scale( FLOAT x, FLOAT y, FLOAT z )

  skaalaukset akseleiden suhteen.

- void trs_rotate( FLOAT a, int axis )

  rotaatio annetun akselin ymp{ri. axis on 'x','y' tai 'z'

- void trs_lookat( FLOAT vx, FLOAT vy, FLOAT vz,
                  FLOAT px, FLOAT py, FLOAT pz, FLOAT twist )

   asetetaan kaselupiste vx,vy,vz, katseltava piste px,py,pz ja
   rotaatio pisteiden v{lisen suoran ymp{ri.

void trs_polarview( FLOAT dist, FLOAT azim, FLOAT inc, FLOAT twist )
void trs_perspective( FLOAT fov, FLOAT aspect, FLOAT near, FLOAT far )
void trs_ortho( FLOAT x0, FLOAT x1, FLOAT y0, FLOAT y1, FLOAT z0, FLOAT z1 )

-------------------------------------------------------

Tiedosto atmosphere.c

- void atm_linear_fog( FLOAT distance_b, FLOAT distance_e, FLOAT *c )

  lineaarisesti tihentyv{ sumu:

   distance_b, on sumun alkuet{isyys katselupisteest{
   distance_e, on et{isyys, jossa sumu peitt{{ n{kyvist{ kaiken muun
   c on sumun v{ri (r,g,b)

- void atm_set_function( void (*function)() )

  asetetaan oma funktio, jota kutsutaan joka piksellille,
  ja joka voi tehd{ muutoksia pikselin v{rin arvoon.  

--------------------------------------------------------

- void lgt_define_light( int light,
    FLOAT pos_x, FLOAT pos_y, FLOAT pos_z, FLOAT pos_w,
    FLOAT dir_x, FLOAT dir_y, FLOAT dir_z, FLOAT ang_f,
    FLOAT *col )

  asetetaan valon (indeksi light) paikka, suunta, valaisukulma ja v{ri
  (suunta ja valaisukulma eiv{t taida olla toiminnassa)

- void lgt_light_onoff( int light, int onoff )

  asetetaan valo light p{{lle (1)  tai pois (0).

--------------------------------------------------------

- void txr_load_texture( int Nu, int Nv, CVALUE *R, CVALUE *G, CVALUE *B )

  asetetaan tekstuuri. Nu ja Nx ovat taulukkojen
  R,G,ja B dimensiot.

- void txr_set_function( void (*function)() )

  asetetaan oma tekstuuri-lookup funktio.

---------------------------------------------------------

