diff options
Diffstat (limited to 'basegfx/source/point/b2dhompoint.cxx')
-rw-r--r-- | basegfx/source/point/b2dhompoint.cxx | 383 |
1 files changed, 190 insertions, 193 deletions
diff --git a/basegfx/source/point/b2dhompoint.cxx b/basegfx/source/point/b2dhompoint.cxx index 575657491120..cda1e6f356b5 100644 --- a/basegfx/source/point/b2dhompoint.cxx +++ b/basegfx/source/point/b2dhompoint.cxx @@ -2,9 +2,9 @@ * * $RCSfile: b2dhompoint.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: aw $ $Date: 2003-11-10 11:45:49 $ + * last change: $Author: aw $ $Date: 2003-11-28 11:18:04 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -73,230 +73,227 @@ namespace basegfx { - namespace point + sal_Bool B2DHomPoint::implIsHomogenized() const { - sal_Bool B2DHomPoint::implIsHomogenized() const - { - const double fOne(1.0); - return ::basegfx::numeric::fTools::equal(fOne, mfW); - } + const double fOne(1.0); + return ::basegfx::fTools::equal(fOne, mfW); + } - void B2DHomPoint::implHomogenize() - { - const double fFactor(1.0 / mfW); - maTuple.setX(maTuple.getX() * fFactor); - maTuple.setY(maTuple.getY() * fFactor); - mfW = 1.0; - } + void B2DHomPoint::implHomogenize() + { + const double fFactor(1.0 / mfW); + maTuple.setX(maTuple.getX() * fFactor); + maTuple.setY(maTuple.getY() * fFactor); + mfW = 1.0; + } - void B2DHomPoint::implTestAndHomogenize() const - { - if(!implIsHomogenized()) - ((B2DHomPoint*)this)->implHomogenize(); - } + void B2DHomPoint::implTestAndHomogenize() const + { + if(!implIsHomogenized()) + ((B2DHomPoint*)this)->implHomogenize(); + } - B2DPoint B2DHomPoint::getB2DPoint() const - { - implTestAndHomogenize(); - return B2DPoint(maTuple.getX(), maTuple.getY()); - } + B2DPoint B2DHomPoint::getB2DPoint() const + { + implTestAndHomogenize(); + return B2DPoint(maTuple.getX(), maTuple.getY()); + } - double B2DHomPoint::getX() const - { - implTestAndHomogenize(); - return maTuple.getX(); - } + double B2DHomPoint::getX() const + { + implTestAndHomogenize(); + return maTuple.getX(); + } - double B2DHomPoint::getY() const - { - implTestAndHomogenize(); - return maTuple.getY(); - } + double B2DHomPoint::getY() const + { + implTestAndHomogenize(); + return maTuple.getY(); + } - void B2DHomPoint::setX(double fX) - { - maTuple.setX(implIsHomogenized() ? fX : fX * mfW ); - } + void B2DHomPoint::setX(double fX) + { + maTuple.setX(implIsHomogenized() ? fX : fX * mfW ); + } - void B2DHomPoint::setY(double fY) - { - maTuple.setY(implIsHomogenized() ? fY : fY * mfW ); - } + void B2DHomPoint::setY(double fY) + { + maTuple.setY(implIsHomogenized() ? fY : fY * mfW ); + } - B2DHomPoint& B2DHomPoint::operator+=( const B2DHomPoint& rPnt ) - { - maTuple.setX(getX() * rPnt.mfW + rPnt.getX() * mfW); - maTuple.setY(getY() * rPnt.mfW + rPnt.getY() * mfW); - mfW = mfW * rPnt.mfW; + B2DHomPoint& B2DHomPoint::operator+=( const B2DHomPoint& rPnt ) + { + maTuple.setX(getX() * rPnt.mfW + rPnt.getX() * mfW); + maTuple.setY(getY() * rPnt.mfW + rPnt.getY() * mfW); + mfW = mfW * rPnt.mfW; - return *this; - } + return *this; + } - B2DHomPoint& B2DHomPoint::operator-=( const B2DHomPoint& rPnt ) - { - maTuple.setX(getX() * rPnt.mfW - rPnt.getX() * mfW); - maTuple.setY(getY() * rPnt.mfW - rPnt.getY() * mfW); - mfW = mfW * rPnt.mfW; + B2DHomPoint& B2DHomPoint::operator-=( const B2DHomPoint& rPnt ) + { + maTuple.setX(getX() * rPnt.mfW - rPnt.getX() * mfW); + maTuple.setY(getY() * rPnt.mfW - rPnt.getY() * mfW); + mfW = mfW * rPnt.mfW; - return *this; - } + return *this; + } - B2DHomPoint& B2DHomPoint::operator*=(double t) + B2DHomPoint& B2DHomPoint::operator*=(double t) + { + if(!::basegfx::fTools::equalZero(t)) { - if(!::basegfx::numeric::fTools::equalZero(t)) - { - mfW /= t; - } - - return *this; + mfW /= t; } - B2DHomPoint& B2DHomPoint::operator*=( const matrix::B2DHomMatrix& rMat ) - { - const double fTempX( rMat.get(0,0)*maTuple.getX() + - rMat.get(0,1)*maTuple.getY() + - rMat.get(0,2)*mfW ); - - const double fTempY( rMat.get(1,0)*maTuple.getX() + - rMat.get(1,1)*maTuple.getY() + - rMat.get(1,2)*mfW ); - - const double fTempZ( rMat.get(2,0)*maTuple.getX() + - rMat.get(2,1)*maTuple.getY() + - rMat.get(2,2)*mfW ); - maTuple.setX( fTempX ); - maTuple.setY( fTempY ); - mfW = fTempZ; - - return *this; - } + return *this; + } - B2DHomPoint& B2DHomPoint::operator/=(double t) - { - mfW *= t; - return *this; - } + B2DHomPoint& B2DHomPoint::operator*=( const B2DHomMatrix& rMat ) + { + const double fTempX( rMat.get(0,0)*maTuple.getX() + + rMat.get(0,1)*maTuple.getY() + + rMat.get(0,2)*mfW ); - B2DHomPoint& B2DHomPoint::operator-(void) - { - mfW = -mfW; - return *this; - } + const double fTempY( rMat.get(1,0)*maTuple.getX() + + rMat.get(1,1)*maTuple.getY() + + rMat.get(1,2)*mfW ); - sal_Bool B2DHomPoint::operator==( const B2DHomPoint& rPnt ) const - { - implTestAndHomogenize(); - return (maTuple == rPnt.maTuple); - } + const double fTempZ( rMat.get(2,0)*maTuple.getX() + + rMat.get(2,1)*maTuple.getY() + + rMat.get(2,2)*mfW ); + maTuple.setX( fTempX ); + maTuple.setY( fTempY ); + mfW = fTempZ; - sal_Bool B2DHomPoint::operator!=( const B2DHomPoint& rPnt ) const - { - implTestAndHomogenize(); - return (maTuple != rPnt.maTuple); - } + return *this; + } - B2DHomPoint& B2DHomPoint::operator=( const B2DHomPoint& rPnt ) - { - maTuple = rPnt.maTuple; - mfW = rPnt.mfW; - return *this; - } + B2DHomPoint& B2DHomPoint::operator/=(double t) + { + mfW *= t; + return *this; + } - B2DHomPoint min(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) - { - B2DHomPoint aMin( - (rVecB.getX() < rVecA.getX()) ? rVecB.getX() : rVecA.getX(), - (rVecB.getY() < rVecA.getY()) ? rVecB.getY() : rVecA.getY()); - return aMin; - } + B2DHomPoint& B2DHomPoint::operator-(void) + { + mfW = -mfW; + return *this; + } - B2DHomPoint max(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) - { - B2DHomPoint aMax( - (rVecB.getX() > rVecA.getX()) ? rVecB.getX() : rVecA.getX(), - (rVecB.getY() > rVecA.getY()) ? rVecB.getY() : rVecA.getY()); - return aMax; - } - B2DHomPoint abs(const B2DHomPoint& rVec) - { - B2DHomPoint aAbs( - (0.0 > rVec.getX()) ? -rVec.getX() : rVec.getX(), - (0.0 > rVec.getY()) ? -rVec.getY() : rVec.getY()); - return aAbs; - } + sal_Bool B2DHomPoint::operator==( const B2DHomPoint& rPnt ) const + { + implTestAndHomogenize(); + return (maTuple == rPnt.maTuple); + } - B2DHomPoint interpolate(B2DHomPoint& rOld1, B2DHomPoint& rOld2, double t) - { - B2DHomPoint aInt( - ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(), - ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()); - return aInt; - } + sal_Bool B2DHomPoint::operator!=( const B2DHomPoint& rPnt ) const + { + implTestAndHomogenize(); + return (maTuple != rPnt.maTuple); + } - B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2) - { - B2DHomPoint aAvg( - (rOld1.getX() + rOld2.getX()) * 0.5, - (rOld1.getY() + rOld2.getY()) * 0.5); - return aAvg; - } + B2DHomPoint& B2DHomPoint::operator=( const B2DHomPoint& rPnt ) + { + maTuple = rPnt.maTuple; + mfW = rPnt.mfW; + return *this; + } - B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2, B2DHomPoint& rOld3) - { - B2DHomPoint aAvg( - (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0), - (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)); - return aAvg; - } + B2DHomPoint min(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) + { + B2DHomPoint aMin( + (rVecB.getX() < rVecA.getX()) ? rVecB.getX() : rVecA.getX(), + (rVecB.getY() < rVecA.getY()) ? rVecB.getY() : rVecA.getY()); + return aMin; + } - B2DHomPoint operator+(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) - { - B2DHomPoint aSum(rVecA); - aSum += rVecB; - return aSum; - } + B2DHomPoint max(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) + { + B2DHomPoint aMax( + (rVecB.getX() > rVecA.getX()) ? rVecB.getX() : rVecA.getX(), + (rVecB.getY() > rVecA.getY()) ? rVecB.getY() : rVecA.getY()); + return aMax; + } + B2DHomPoint abs(const B2DHomPoint& rVec) + { + B2DHomPoint aAbs( + (0.0 > rVec.getX()) ? -rVec.getX() : rVec.getX(), + (0.0 > rVec.getY()) ? -rVec.getY() : rVec.getY()); + return aAbs; + } - B2DHomPoint operator-(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) - { - B2DHomPoint aSub(rVecA); - aSub -= rVecB; - return aSub; - } + B2DHomPoint interpolate(B2DHomPoint& rOld1, B2DHomPoint& rOld2, double t) + { + B2DHomPoint aInt( + ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(), + ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()); + return aInt; + } - B2DHomPoint operator*(const B2DHomPoint& rVec, double t) - { - B2DHomPoint aNew(rVec); - aNew *= t; - return aNew; - } + B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2) + { + B2DHomPoint aAvg( + (rOld1.getX() + rOld2.getX()) * 0.5, + (rOld1.getY() + rOld2.getY()) * 0.5); + return aAvg; + } - B2DHomPoint operator*(double t, const B2DHomPoint& rVec) - { - B2DHomPoint aNew(rVec); - aNew *= t; - return aNew; - } + B2DHomPoint average(B2DHomPoint& rOld1, B2DHomPoint& rOld2, B2DHomPoint& rOld3) + { + B2DHomPoint aAvg( + (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0), + (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)); + return aAvg; + } - B2DHomPoint operator*( const matrix::B2DHomMatrix& rMat, const B2DHomPoint& rPoint ) - { - B2DHomPoint aNew(rPoint); - return aNew*=rMat; - } + B2DHomPoint operator+(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) + { + B2DHomPoint aSum(rVecA); + aSum += rVecB; + return aSum; + } - B2DHomPoint operator/(const B2DHomPoint& rVec, double t) - { - B2DHomPoint aNew(rVec); - aNew /= t; - return aNew; - } + B2DHomPoint operator-(const B2DHomPoint& rVecA, const B2DHomPoint& rVecB) + { + B2DHomPoint aSub(rVecA); + aSub -= rVecB; + return aSub; + } - B2DHomPoint operator/(double t, const B2DHomPoint& rVec) - { - B2DHomPoint aNew(rVec); - aNew /= t; - return aNew; - } - } // end of namespace point + B2DHomPoint operator*(const B2DHomPoint& rVec, double t) + { + B2DHomPoint aNew(rVec); + aNew *= t; + return aNew; + } + + B2DHomPoint operator*(double t, const B2DHomPoint& rVec) + { + B2DHomPoint aNew(rVec); + aNew *= t; + return aNew; + } + + B2DHomPoint operator*( const B2DHomMatrix& rMat, const B2DHomPoint& rPoint ) + { + B2DHomPoint aNew(rPoint); + return aNew*=rMat; + } + + B2DHomPoint operator/(const B2DHomPoint& rVec, double t) + { + B2DHomPoint aNew(rVec); + aNew /= t; + return aNew; + } + + B2DHomPoint operator/(double t, const B2DHomPoint& rVec) + { + B2DHomPoint aNew(rVec); + aNew /= t; + return aNew; + } } // end of namespace basegfx // eof |