home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / RAYCAST.ZIP / SLOPES.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-23  |  968 b   |  44 lines

  1. #include "ray.h"
  2. #include "globals.h"
  3. #include "rayrend.h"
  4. #include "scrconf.h"
  5.  
  6. MYFIXED * slope_table;
  7.  
  8. void Init_Slope_Table() {
  9.   slope_table=(MYFIXED *)NewPtr((Get_Phys_Screen_Width()+1) * sizeof(MYFIXED));
  10.   Recalc_Slope_Table();
  11. }
  12.  
  13. void Recalc_Slope_Table() {
  14. angle_type start_angle, end_angle;
  15. MYFIXED slope_start, slope_end, slope_sum, slope_increment;
  16.  
  17. start_angle=Get_Angle_Sum(0, HORIZ_VIEW_RANGE/2);
  18. end_angle=Get_Angle_Difference(0, HORIZ_VIEW_RANGE/2);
  19.  
  20. slope_start=tan_table[start_angle];
  21. slope_end=tan_table[end_angle];
  22.  
  23. slope_sum=slope_start;
  24. slope_increment=(slope_end-slope_start)/(WINDOW_WIDTH+1);
  25.  
  26. for (short cur_ray=0; cur_ray<(WINDOW_WIDTH+1); cur_ray++) {
  27.   slope_table[cur_ray]=slope_sum;
  28.   slope_sum+=slope_increment;
  29. }
  30.  
  31. }
  32.  
  33. MYFIXED Get_Slope(short ray) {
  34.   return slope_table[ray];
  35. }
  36.  
  37. void Clear_Slope_Table() {
  38. if (slope_table!=NULL) {
  39.    DelPtr(slope_table);
  40.    slope_table=NULL;
  41. } /* endif */
  42. }
  43.  
  44.