3DENGINE.H
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
  2. #ifndef _3DENGINE_H
  3. #define _3DENGINE_H
  4. #include "3dshapes.h"
  5. #include <stdio.h>
  6. const   long  VIEWRANGE = 17;
  7. extern view camera;
  8. class surfs : public polygon
  9. {
  10. public:
  11.          surfs() :  polygon() {};
  12. virtual ~surfs() {}
  13.          surfs(surfs& s) : polygon(s) {}
  14.          surfs(coordinate& a, coordinate& b, coordinate& c);
  15.          surfs(coordinate& a, coordinate& b, coordinate& c, coordinate& d);
  16. virtual char IsABmp() { return FALSE; }
  17. virtual void CalcNormals();
  18. virtual void xrotate(direction& d);
  19. virtual void yrotate(direction& d);
  20. virtual void zrotate(direction& d);
  21. virtual void operator +=(coordinate& c);
  22. virtual void operator =(surfs& s);
  23. virtual char iswithin(coordinate& c);
  24. virtual void draw();
  25. protected:
  26. float  NormalX;
  27. float  NormalY;
  28. float  NormalZ;
  29. };
  30. inline surfs::surfs(coordinate& a, coordinate& b, coordinate& c) :
  31.       polygon(a,b,c) {}
  32. inline surfs::surfs(coordinate& a, coordinate& b, coordinate& c, coordinate& d) :
  33.       polygon(a,b,c,d) {}
  34. class bmpsurf;
  35. class image
  36. {
  37. public:
  38.          image(LPCTSTR filename, direction ydir = 0);
  39. virtual ~image();
  40.          void     setto(coordinate& p)    { m_view.setto(p); }
  41.          void     setto(view& p)          { m_view = p; }
  42.          void     setxdir(direction& dir) { m_view.setxdir(dir); }
  43.          void     setydir(direction& dir) { m_view.setydir(dir); }
  44.          void     setzdir(direction& dir) { m_view.setzdir(dir); }
  45.          void     setyoff(direction& dir) { m_yoff = dir; }
  46.          void     setcolor(COLORREF c);
  47.          void     setbmpsurf(short index, CString& face);
  48.          void     draw();
  49.          void     OnlySurfExemptFromIntersect();
  50.          CString  GeneralUseString()      { return m_genstring; }
  51.          surfs   *OnlySurf();
  52. protected:
  53.          float  m_dist;
  54. private:
  55.          FILE    *fptr;
  56.          short    numpoints;
  57.          short    numsurfs;
  58.          point   *m_points;
  59.          surfs  **m_surfs;
  60.          surfs  **m_mysurfs;
  61.          tccolor  color;
  62.          view     m_view;
  63.          float    m_size;
  64.          direction m_yoff;
  65.          direction xdirfromcamera;
  66.          direction ydirfromcamera;
  67.          CString  m_genstring;
  68.          void     readfile(LPCTSTR filename);
  69.          void     getsize(char *buf);
  70.          void     getsurfaces(char *buf);
  71.          void     getpoints(char *buf);
  72.          char    *findend(char *ptr);
  73.          float    convertfloat(char *ptr) { return (float)atof(ptr)/100.0f; }
  74.          void     copysurfs();
  75.          void     getdistance();
  76.          char     outofrange();
  77.          int      multiplesurfs(char *ptr);
  78. };
  79. inline void  image::getdistance()
  80. {
  81.       m_dist = m_view.distanceto(camera);
  82. }
  83. inline void image::setcolor(COLORREF c)
  84. {
  85.    color = c;
  86. }
  87. #endif