home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / RAYCAST.ZIP / RAYANGLE.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-10  |  1.3 KB  |  69 lines

  1. #include "ray.h"
  2. #include "globals.h"
  3.  
  4. extern void Build_Middle_Table();
  5. void Build_Angle_Tables();
  6. void Make_Legal_View_Angle(angle_type & angle);
  7. BOOL Is_Legal_View_Angle(angle_type angle);
  8.  
  9. void View_Angle_Up()
  10. {
  11. if ( ! Is_Legal_View_Angle(VERTICAL_VIEW_ANGLE)) {
  12.    Make_Legal_View_Angle(VERTICAL_VIEW_ANGLE);
  13.    return;
  14. }
  15.  
  16. VERTICAL_VIEW_ANGLE=Get_Angle_Sum(VERTICAL_VIEW_ANGLE, ANGLE_2);
  17.  
  18. Build_Angle_Tables();
  19. }
  20.  
  21. void View_Angle_Down()
  22. {
  23.  
  24. if ( ! Is_Legal_View_Angle(VERTICAL_VIEW_ANGLE)) {
  25.    Make_Legal_View_Angle(VERTICAL_VIEW_ANGLE);
  26.    return;
  27. }
  28.  
  29. VERTICAL_VIEW_ANGLE=Get_Angle_Difference(VERTICAL_VIEW_ANGLE, ANGLE_2);
  30.  
  31. Build_Angle_Tables();
  32. }
  33.  
  34. void Set_View_Angle(angle_type new_view_angle)
  35. {
  36.  
  37. if ( ! Is_Legal_View_Angle(new_view_angle))
  38.    return;
  39.  
  40. VERTICAL_VIEW_ANGLE=new_view_angle;
  41.  
  42. Build_Angle_Tables();
  43. }
  44.  
  45. angle_type Get_Vert_View_Angle()
  46. {
  47. return VERTICAL_VIEW_ANGLE;
  48. }
  49.  
  50. void Build_Angle_Tables()
  51. {
  52. Build_Vertical_Distance_Table();
  53. Build_Middle_Table();
  54. }
  55.  
  56. BOOL Is_Legal_View_Angle(angle_type angle)
  57. {
  58. return ( ((angle < ANGLE_30) || (angle > ANGLE_330)) ? TRUE : FALSE);
  59. }
  60.  
  61. void Make_Legal_View_Angle(angle_type & angle)
  62. {
  63. if (angle < ANGLE_180)
  64.    angle=ANGLE_30 - ANGLE_1;
  65. else angle=ANGLE_330 + ANGLE_1;
  66. }
  67.  
  68.  
  69.