Browse Source

Fehler behoben

kolja 5 years ago
parent
commit
f082662c5c
2 changed files with 16 additions and 10 deletions
  1. 2 2
      Model2D.cpp
  2. 14 8
      Welt2D.cpp

+ 2 - 2
Model2D.cpp

@@ -650,7 +650,7 @@ float Model2DData::getMasse() const
         {
             p1 = p.var.vertex->get( i - 1 );
             p2 = p.var.vertex->get( i );
-            m += 0.5f * ( p1.y + p2.y ) * ( p1.x - p2.x );
+            m += ( p1.y + p2.y ) * ( p1.x - p2.x );
         }
     }
     m *= 0.5f;
@@ -984,7 +984,7 @@ float Model2DObject::getMasse() const
 {
     if( !rData )
         return 0;
-    return rData->getMasse() * size * size;
+    return abs( rData->getMasse() * size * size );
 }
 
 // Gibt die Textur des ersten Polygons zurück

+ 14 - 8
Welt2D.cpp

@@ -85,18 +85,24 @@ bool Object2D::handleCollision( Object2D *obj )
         Vertex v2 = obj->getSpeed() + getWorldDir( obj->getObjectPos( hp ).rotation( obj->getDrehungSpeed() ) - obj->getObjectPos( hp ) );
         if( ( position - obj->getPosition() ).getLengthSq() > ( position + v1 * 0.03f - obj->getPosition() - v2 * 0.03f ).getLengthSq() )
         {
-            float m1 = getMasse();
-            float m2 = obj->getMasse();
-            if( m1 == 0 || m2 == 0 )
-                return 0;
+            //float m1 = getMasse();
+            //float m2 = obj->getMasse();
+            //if( m1 == 0 || m2 == 0 )
+            //    return 0;
+            //float nm1 = m1 / ( m1 + m2 );
+            //float nm2 = m2 / ( m1 + m2 );
+            //rSpeed *= nm2;
+            //speed *= nm2;
+            //obj->setDrehungSpeed( obj->getDrehungSpeed() * nm1 );
+            //obj->setSpeed( obj->getSpeed() * nm1 );
             rSpeed = 0;
-            speed = Vertex( 0, 0 );
+            speed = Vertex();
             obj->setDrehungSpeed( 0 );
-            obj->setSpeed( 0, 0 );
+            obj->setSpeed( Vertex() );
             if( v2.x || v2.y )
-                impuls( hp - v2, v2 * ( m2 / ( m1 + m2 ) ) );
+                impuls( hp - v2, v2 );
             if( v1.x || v1.y )
-                obj->impuls( hp - v1, v1 * ( m1 / ( m1 + m2 ) ) );
+                obj->impuls( hp - v1, v1 );
             return 1;
         }
     }