1.1 --- a/geometry.h Mon Sep 07 15:36:57 2009 +0000
1.2 +++ b/geometry.h Tue Sep 08 12:15:39 2009 +0000
1.3 @@ -6,6 +6,23 @@
1.4 QRectF addBBox(QRectF r1, QRectF r2);
1.5 bool isInBox(const QPointF &p, const QRectF &box);
1.6
1.7 +
1.8 +class Vector:public QPointF
1.9 +{
1.10 +public:
1.11 + Vector ();
1.12 + Vector (const QPointF &p);
1.13 + Vector (qreal x, qreal y);
1.14 +
1.15 + friend inline bool operator==(const Vector &v1, const Vector &v2 )
1.16 + { return v1.x()==v2.x() && v1.y()==v2.y(); }
1.17 +
1.18 + virtual void normalize ();
1.19 + virtual qreal dotProduct (const QPointF &b);
1.20 + virtual void scale (const qreal &f);
1.21 + virtual void invert ();
1.22 +};
1.23 +
1.24 class ConvexPolygon:public QPolygonF
1.25 {
1.26 public:
1.27 @@ -14,19 +31,15 @@
1.28 void calcCentroid() ;
1.29 QPointF centroid() const;
1.30 qreal weight() const;
1.31 + std::string toStdString ();
1.32 + Vector at (const int &i) const ;
1.33 + virtual void translate ( const Vector &offset );
1.34 + virtual void translate ( qreal dx, qreal dy );
1.35 private:
1.36 - QPointF _centroid;
1.37 + Vector _centroid;
1.38 qreal _area;
1.39 };
1.40
1.41 -QPointF normalize (const QPointF &p);
1.42 -
1.43 -
1.44 -qreal dotProduct (const QPointF &a, const QPointF &b);
1.45 -
1.46 -QPointF scale (const QPointF &v,const qreal &f);
1.47 -QPointF invert (const QPointF &v);
1.48 -
1.49 class PolygonCollisionResult {
1.50 public:
1.51 // Are the polygons going to intersect forward in time?
1.52 @@ -40,10 +53,10 @@
1.53 };
1.54
1.55
1.56 -void projectPolygon(QPointF axis, QPolygonF polygon, qreal &min, qreal &max) ;
1.57 +void projectPolygon(Vector axis, ConvexPolygon polygon, qreal &min, qreal &max) ;
1.58
1.59 qreal intervalDistance(qreal minA, qreal maxA, qreal minB, qreal maxB);
1.60 -PolygonCollisionResult polygonCollision(QPolygonF polygonA,
1.61 - QPolygonF polygonB, QPointF velocity);
1.62 +PolygonCollisionResult polygonCollision(ConvexPolygon polygonA,
1.63 + ConvexPolygon polygonB, Vector velocity);
1.64
1.65 #endif
1.66 \ No newline at end of file