Zeichnung3D.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #include "Zeichnung3D.h"
  2. using namespace Framework;
  3. // Inhalt der Zeichnung3D Klasse
  4. // Konstruktor
  5. Zeichnung3D::Zeichnung3D()
  6. {
  7. welt = welt.identity();
  8. pos = Vec3< float >( 0, 0, 0 );
  9. angle = Vec3< float >( 0, 0, 0 );
  10. rend = 0;
  11. alpha = 0;
  12. radius = 0;
  13. }
  14. // Setzt die Position der Zeichnung in der Welt
  15. // p: Die Position
  16. void Zeichnung3D::setPosition( Vec3< float > &p )
  17. {
  18. pos = p;
  19. rend = 1;
  20. }
  21. // Setzt die Position der Zeichnung in der Welt
  22. // x: Die x Position
  23. // y: Die y Position
  24. // z: Die z Position
  25. void Zeichnung3D::setPosition( float x, float y, float z )
  26. {
  27. pos.x = x;
  28. pos.y = y;
  29. pos.z = z;
  30. rend = 1;
  31. }
  32. // Setzt die Position der Zeichnung in der Welt
  33. // x: Die x Position
  34. void Zeichnung3D::setX( float x )
  35. {
  36. pos.x = x;
  37. rend = 1;
  38. }
  39. // Setzt die Position der Zeichnung in der Welt
  40. // y: Die y Position
  41. void Zeichnung3D::setY( float y )
  42. {
  43. pos.y = y;
  44. rend = 1;
  45. }
  46. // Setzt die Position der Zeichnung in der Welt
  47. // z: Die z Position
  48. void Zeichnung3D::setZ( float z )
  49. {
  50. pos.z = z;
  51. rend = 1;
  52. }
  53. // Setzt die Drehung der Zeichnung in der Welt
  54. // d: Die drehung um die x, y und z achse
  55. void Zeichnung3D::setDrehung( Vec3< float > &d )
  56. {
  57. angle = d;
  58. rend = 1;
  59. }
  60. // Setzt die Drehung der Zeichnung in der Welt
  61. // xWinkel: Die drehung um die x achse
  62. // yWinkel: Die drehung um die y achse
  63. // zWinkel: Die drehung um die z achse
  64. void Zeichnung3D::setDrehung( float xWinkel, float yWinkel, float zWinkel )
  65. {
  66. angle.x = xWinkel;
  67. angle.y = yWinkel;
  68. angle.z = zWinkel;
  69. rend = 1;
  70. }
  71. // Setzt die Drehung der Zeichnung in der Welt
  72. // winkel: Die drehung um die x achse
  73. void Zeichnung3D::setDrehungX( float winkel )
  74. {
  75. angle.x = winkel;
  76. rend = 1;
  77. }
  78. // Setzt die Drehung der Zeichnung in der Welt
  79. // winkel: Die drehung um die y achse
  80. void Zeichnung3D::setDrehungY( float winkel )
  81. {
  82. angle.y = winkel;
  83. rend = 1;
  84. }
  85. // Setzt die Drehung der Zeichnung in der Welt
  86. // winkel: Die drehung um die z achse
  87. void Zeichnung3D::setDrehungZ( float winkel )
  88. {
  89. angle.z = winkel;
  90. rend = 1;
  91. }
  92. // Legt fest, ob das Objekt teilweise oder ganz transparente stellen enthält
  93. // a: true, wenn teilweise oder ganz transparente stellen vorhanden sind
  94. void Zeichnung3D::setAlpha( bool a )
  95. {
  96. alpha = a;
  97. rend = 1;
  98. }
  99. // Verarbeitet ein Mausereignis
  100. // me: Das Mausereignis, das verarbeitet werden soll
  101. void Zeichnung3D::doMausEreignis( MausEreignis &me )
  102. {}
  103. // Verarbeitet ein Tastaturereignis
  104. // te: das Tastaturereignis, das verarbeitet werden soll
  105. void Zeichnung3D::doTastaturEreignis( TastaturEreignis &te )
  106. {}
  107. // Verarbeitet die vergangene Zeit
  108. // tickval: Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist
  109. // return: true, wenn sich das Objekt verändert hat, false sonnst.
  110. bool Zeichnung3D::tick( double tickval )
  111. {
  112. if( rend )
  113. {
  114. welt = welt.translation( pos ) * welt.rotationZ( angle.z ) * welt.rotationX( angle.x ) * welt.rotationY( angle.y );
  115. rend = 0;
  116. return 1;
  117. }
  118. return 0;
  119. }
  120. // Zeichnet das Objekt
  121. // zRObj: Ein Zeiger auf das Objekt, das zum Zeichnen verwendet werden soll (ohne erhöhten Reference Counter)
  122. void Zeichnung3D::render( Render3D *zRObj )
  123. {}
  124. // Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen enthält
  125. bool Zeichnung3D::hatAlpha() const
  126. {
  127. return alpha;
  128. }
  129. // Gibt den radius einer Kugel zurück, die das gesammte Model umschließt
  130. float Zeichnung3D::getRadius() const
  131. {
  132. return radius;
  133. }
  134. // Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt darstellt
  135. const Vec3< float > &Zeichnung3D::getPos() const
  136. {
  137. return pos;
  138. }
  139. // Gibt die X Position der Zeichnung in der Welt zurück
  140. float Zeichnung3D::getX() const
  141. {
  142. return pos.x;
  143. }
  144. // Gibt die Y Position der Zeichnung in der Welt zurück
  145. float Zeichnung3D::getY() const
  146. {
  147. return pos.y;
  148. }
  149. // Gibt die Z Position der Zeichnung in der Welt zurück
  150. float Zeichnung3D::getZ() const
  151. {
  152. return pos.z;
  153. }
  154. // Gibt einen Vektor zurück, der die drehung der Zeichnung in der Welt darstellt. x ist die Drehung um die X Achse im Bogenmaß usw
  155. const Vec3< float > &Zeichnung3D::getDrehung() const
  156. {
  157. return angle;
  158. }
  159. // Gibt die Drehung um die X Achse im Bogenmaß zurück
  160. float Zeichnung3D::getXDrehung() const
  161. {
  162. return angle.x;
  163. }
  164. // Gibt die Drehung um die Y Achse im Bogenmaß zurück
  165. float Zeichnung3D::getYDrehung() const
  166. {
  167. return angle.y;
  168. }
  169. // Gibt die Drehung um die Z Achse im Bogenmaß zurück
  170. float Zeichnung3D::getZDrehung() const
  171. {
  172. return angle.z;
  173. }