Cyl.cpp
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:1k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. ////test
  2. #define EPS (1e-49)
  3. void vector_sub(float *c, float *a, float *b)
  4. {
  5. int i;
  6. for (i=0; i<3; i++) 
  7. {
  8. c[i]=a[i]-b[i];
  9. }
  10. }
  11. void vector_add(float *c, float *a, float *b)
  12. {
  13. int i;
  14. for (i=0; i<3; ++i) 
  15. {
  16. c[i]=a[i]+b[i];
  17. }
  18. }
  19. void vector_cross(float *c, float *a, float *b)
  20. {
  21. c[0]=a[1]*b[2] - a[2]*b[1];
  22. c[1]=a[2]*b[0] - a[0]*b[2];
  23. c[2]=a[0]*b[1] - a[1]*b[0];
  24. }
  25. void vector_normalize(float *c)
  26. {
  27. float l,m;
  28. l=(float) sqrt(c[0]*c[0] + c[1]*c[1] + c[2]*c[2]);
  29. if (fabs(l)<EPS) 
  30. {
  31. c[0]=c[1]=c[2]=0.0f;
  32. if ((c[0]>=c[1]) && (c[0]>=c[2])) 
  33. {
  34. c[0]=1.0f;
  35. }
  36. else
  37. if (c[1]>=c[2]) 
  38. {
  39. c[1]=1.0f;
  40. }
  41. else 
  42. {
  43. c[2]=1.0f;
  44. }
  45. }
  46. else 
  47. {
  48. m=1.0f/l;
  49. c[0]*=m;
  50. c[1]*=m;
  51. c[2]*=m;
  52. }
  53. }
  54. void vector_normal(float *n, float *a, float *b, float *c)
  55. {
  56. float p[3],q[3];
  57. vector_sub(p,c,b);
  58. vector_sub(q,a,b);
  59. vector_cross(n,p,q);
  60. vector_normalize(n);
  61. }
  62. #include "3d_intro.h"
  63. ///////////////// test !!!!!!!!!