Zeichnung3D.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #pragma once
  2. #include "Mat4.h"
  3. #include "ReferenceCounter.h"
  4. namespace Framework
  5. {
  6. struct MausEreignis3D;
  7. struct TastaturEreignis;
  8. class Render3D; //! Render3D.h
  9. //! Ein Objekt, das von der Bildschirm3D Klasse gezeichnet werden kann.
  10. class Zeichnung3D : public virtual ReferenceCounter
  11. {
  12. protected:
  13. Vec3<float> pos; //! Position des Objekts
  14. Vec3<float> angle; //! Drehungswinkel für x, y und z
  15. Mat4<float> welt; //! Wlet translation matrix
  16. float radius; //! Der radius einer Kugel, der das gesamte Objekt
  17. //! umschließt
  18. bool alpha; //! Speichert ob das Objekt teilweise oder ganz transparente
  19. //! stellen enthält
  20. bool rend;
  21. float size;
  22. public:
  23. //! Konstruktor
  24. DLLEXPORT Zeichnung3D();
  25. DLLEXPORT virtual ~Zeichnung3D();
  26. //! Setzt die Position der Zeichnung in der Welt
  27. //! \param p Die Position
  28. DLLEXPORT void setPosition(Vec3<float>& p);
  29. //! Setzt die Position der Zeichnung in der Welt
  30. //! \param x Die x Position
  31. //! \param y Die y Position
  32. //! \param z Die z Position
  33. DLLEXPORT void setPosition(float x, float y, float z);
  34. //! Setzt die Position der Zeichnung in der Welt
  35. //! \param x Die x Position
  36. DLLEXPORT void setX(float x);
  37. //! Setzt die Position der Zeichnung in der Welt
  38. //! \param y Die y Position
  39. DLLEXPORT void setY(float y);
  40. //! Setzt die Position der Zeichnung in der Welt
  41. //! \param z Die z Position
  42. DLLEXPORT void setZ(float z);
  43. //! Setzt die Drehung der Zeichnung in der Welt
  44. //! \param d Die drehung um die x, y und z achse
  45. DLLEXPORT void setDrehung(Vec3<float>& d);
  46. //! Setzt die Drehung der Zeichnung in der Welt
  47. //! \param xWinkel Die drehung um die x achse
  48. //! \param yWinkel Die drehung um die y achse
  49. //! \param zWinkel Die drehung um die z achse
  50. DLLEXPORT void setDrehung(float xWinkel, float yWinkel, float zWinkel);
  51. //! Setzt die Drehung der Zeichnung in der Welt
  52. //! \param winkel Die drehung um die x achse
  53. DLLEXPORT void setDrehungX(float winkel);
  54. //! Setzt die Drehung der Zeichnung in der Welt
  55. //! \param winkel Die drehung um die y achse
  56. DLLEXPORT void setDrehungY(float winkel);
  57. //! Setzt die Drehung der Zeichnung in der Welt
  58. //! \param winkel Die drehung um die z achse
  59. DLLEXPORT void setDrehungZ(float winkel);
  60. //! Legt fest, ob das Objekt teilweise oder ganz transparente stellen
  61. //! enthält \param a true, wenn teilweise oder ganz transparente stellen
  62. //! vorhanden sind
  63. DLLEXPORT void setAlpha(bool a);
  64. //! Setzt die skallierung
  65. DLLEXPORT void setSize(float size);
  66. //! Errechnet die Matrizen aller Knochen des Skeletts der Zeichnung
  67. //! \param viewProj Die miteinander multiplizierten Kameramatrizen
  68. //! \param matBuffer Ein Array mit Matrizen, der gefüllt werden soll
  69. //! \return Die Anzahl der Matrizen, die die Zeichnung benötigt
  70. DLLEXPORT virtual int errechneMatrizen(
  71. Mat4<float>& viewProj, Mat4<float>* matBuffer);
  72. //! Verarbeitet ein Mausereignis
  73. //! \param me Das Mausereignis, das verarbeitet werden soll
  74. DLLEXPORT virtual void doMausEreignis(MausEreignis3D& me);
  75. //! Verarbeitet ein Tastaturereignis
  76. //! \param te das Tastaturereignis, das verarbeitet werden soll
  77. DLLEXPORT virtual void doTastaturEreignis(TastaturEreignis& te);
  78. //! Verarbeitet die vergangene Zeit
  79. //! \param tickval Die zeit in sekunden, die seit dem letzten Aufruf der
  80. //! Funktion vergangen ist \return true, wenn sich das Objekt verändert
  81. //! hat, false sonnst.
  82. DLLEXPORT virtual bool tick(double tickval);
  83. //! Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen
  84. //! enthält
  85. DLLEXPORT bool hatAlpha() const;
  86. //! Gibt den radius einer Kugel zurück, die das gesammte Model
  87. //! umschließt
  88. DLLEXPORT inline float getRadius() const;
  89. //! Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt
  90. //! darstellt
  91. DLLEXPORT const Vec3<float>& getPos() const;
  92. //! Gibt die X Position der Zeichnung in der Welt zurück
  93. DLLEXPORT float getX() const;
  94. //! Gibt die Y Position der Zeichnung in der Welt zurück
  95. DLLEXPORT float getY() const;
  96. //! Gibt die Z Position der Zeichnung in der Welt zurück
  97. DLLEXPORT float getZ() const;
  98. //! Gibt einen Vektor zurück, der die drehung der Zeichnung in der Welt
  99. //! darstellt. x ist die Drehung um die X Achse im Bogenmaß usw
  100. DLLEXPORT const Vec3<float>& getDrehung() const;
  101. //! Gibt die Drehung um die X Achse im Bogenmaß zurück
  102. DLLEXPORT float getXDrehung() const;
  103. //! Gibt die Drehung um die Y Achse im Bogenmaß zurück
  104. DLLEXPORT float getYDrehung() const;
  105. //! Gibt die Drehung um die Z Achse im Bogenmaß zurück
  106. DLLEXPORT float getZDrehung() const;
  107. //! Gibt die Matrix zurück, die die Zeichnung in den Welt Raum übersetzt
  108. DLLEXPORT const Mat4<float>& getMatrix() const;
  109. //! Berechnet wür einen Punkt in lokalen Zeichnungs Koordinaten den
  110. //! Punkt in Weltkoordinaten durch anwendung von Drehung, Skallierung
  111. //! und Verschiebung
  112. DLLEXPORT Vec3<float> applyWorldTransformation(
  113. Vec3<float> modelPos) const;
  114. };
  115. } // namespace Framework