Revision as of 22:44, 6 August 2007 (edit) Sandman  (Talk | contribs) m  ← Previous diff | 
				Current revision (00:15, 9 August 2007) (edit) (undo) Sandman  (Talk | contribs)      | 
			
		| Line 1: | 
Line 1: | 
| - | [[Category:tutorials]] | + | #REDIRECT [[Tutorial:Cosine]] | 
| - |   | + |  | 
| - | Some sine and cosine program. Check it out. More of example code, but useful anyway. | + |  | 
| - |   | + |  | 
| - | Note that this is code for Fenix versions [[0.93]] and up. Should the code work for other versions as well, be so kind to note this here. | + |  | 
| - |   | + |  | 
| - | == Example code == | + |  | 
| - | <pre> | + |  | 
| - | Program cosine; | + |  | 
| - | Const | + |  | 
| - |     seconds       = 2.3; | + |  | 
| - |     ball_width    = 20; | + |  | 
| - |     ball_height   = 20; | + |  | 
| - |     screen_width  = 320; | + |  | 
| - |     screen_height = 200; | + |  | 
| - |     screen_depth  = 8; | + |  | 
| - |     screen_fps    = 60; | + |  | 
| - |     cos_factor    = 2000; | + |  | 
| - |     sin_factor    = 4000; | + |  | 
| - |     timer_spawn   = 0; | + |  | 
| - |     timer_ball    = 1; | + |  | 
| - | Begin | + |  | 
| - |   | + |  | 
| - |     // make the movement a bit more smooth | + |  | 
| - |     set_fps(screen_fps,0); | + |  | 
| - |   | + |  | 
| - |     // spawn a ball process every <seconds> seconds with random colors. | + |  | 
| - |     timer[timer_spawn]= seconds*100; | + |  | 
| - |     Repeat | + |  | 
| - |         if(timer[timer_spawn]>=seconds*100) | + |  | 
| - |             timer[timer_spawn]-=seconds*100; | + |  | 
| - |             x = new_map(ball_width,ball_height,screen_depth); | + |  | 
| - |             map_clear(0,x,rgb(rand(0,255),rand(0,255),rand(0,255))); | + |  | 
| - |             ball(x); | + |  | 
| - |         end | + |  | 
| - |         frame; | + |  | 
| - |     Until(key(_esc)) | + |  | 
| - |   | + |  | 
| - |     // kill all other remaining processes and exit | + |  | 
| - |     let_me_alone(); | + |  | 
| - |     exit(); | + |  | 
| - |   | + |  | 
| - | End | + |  | 
| - |   | + |  | 
| - | Process ball(graph) | + |  | 
| - | Private | + |  | 
| - |     int start_time; | + |  | 
| - | Begin | + |  | 
| - |   | + |  | 
| - |     // remember starting time | + |  | 
| - |     start_time = timer[timer_ball]; | + |  | 
| - |   | + |  | 
| - |     // position the ball according to the passed time (timer[timer_ball]) | + |  | 
| - |     Loop | + |  | 
| - |         x = screen_width /2 + cos((timer[timer_ball]-start_time)*cos_factor) | + |  | 
| - |                               * (screen_width /2-ball_width /2); | + |  | 
| - |         y = screen_height/2 + sin((timer[timer_ball]-start_time)*sin_factor) | + |  | 
| - |                               * (screen_height/2-ball_height/2); | + |  | 
| - |         frame; | + |  | 
| - |     End | + |  | 
| - |   | + |  | 
| - | End | + |  | 
| - | </pre> | + |  | 
| - | Used in example: [[set_fps]](), [[new_map]](), [[map_clear]](), [[rand]](), [[key]](), [[let_me_alone]](), [[cos]](), [[sin]](), [[timer]], [[x]], [[y]] | + |  | 
| - |   | + |  | 
| - | This will result in something like:<br> | + |  | 
| - | http://wwwhome.cs.utwente.nl/~bergfi/fenix/wiki/cosine.PNG | + |  | 
| - |   | + |  | 
| - | Or with seconds=0.25; cos_factor=6000;sin_factor=2000 something like this:<br> | + |  | 
| - | http://wwwhome.cs.utwente.nl/~bergfi/fenix/wiki/cosine2.PNG | + |  | 
| - |   | + |  | 
| - | Try fiddling around with the parameters yourself and she what you can conjure. | + |  |