geometry.h
changeset 792 7d67be709091
parent 789 d85834ad8c54
child 798 d251c7b2de54
     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