diff options
Diffstat (limited to 'basegfx/inc/basegfx/vector/b3ivector.hxx')
-rw-r--r-- | basegfx/inc/basegfx/vector/b3ivector.hxx | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/basegfx/inc/basegfx/vector/b3ivector.hxx b/basegfx/inc/basegfx/vector/b3ivector.hxx deleted file mode 100644 index 911b655c72..0000000000 --- a/basegfx/inc/basegfx/vector/b3ivector.hxx +++ /dev/null @@ -1,263 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _BGFX_VECTOR_B3IVECTOR_HXX -#define _BGFX_VECTOR_B3IVECTOR_HXX - -#include <basegfx/tuple/b3ituple.hxx> -#include <basegfx/basegfxdllapi.h> - -namespace basegfx -{ - // predeclaration - class B3DHomMatrix; - - /** Base Point class with three sal_Int32 values - - This class derives all operators and common handling for - a 3D data class from B3ITuple. All necessary extensions - which are special for 3D Vectors are added here. - - @see B3ITuple - */ - class BASEGFX_DLLPUBLIC B3IVector : public ::basegfx::B3ITuple - { - public: - /** Create a 3D Vector - - The vector is initialized to (0, 0, 0) - */ - B3IVector() - : B3ITuple() - {} - - /** Create a 3D Vector - - @param nX - This parameter is used to initialize the X-coordinate - of the 3D Vector. - - @param nY - This parameter is used to initialize the Y-coordinate - of the 3D Vector. - - @param nZ - This parameter is used to initialize the Z-coordinate - of the 3D Vector. - */ - B3IVector(sal_Int32 nX, sal_Int32 nY, sal_Int32 nZ) - : B3ITuple(nX, nY, nZ) - {} - - /** Create a copy of a 3D Vector - - @param rVec - The 3D Vector which will be copied. - */ - B3IVector(const B3IVector& rVec) - : B3ITuple(rVec) - {} - - /** constructor with tuple to allow copy-constructing - from B3ITuple-based classes - */ - B3IVector(const ::basegfx::B3ITuple& rTuple) - : B3ITuple(rTuple) - {} - - ~B3IVector() - {} - - /** *=operator to allow usage from B3IVector, too - */ - B3IVector& operator*=( const B3IVector& rPnt ) - { - mnX *= rPnt.mnX; - mnY *= rPnt.mnY; - mnZ *= rPnt.mnZ; - return *this; - } - - /** *=operator to allow usage from B3IVector, too - */ - B3IVector& operator*=(sal_Int32 t) - { - mnX *= t; - mnY *= t; - mnZ *= t; - return *this; - } - - /** assignment operator to allow assigning the results - of B3ITuple calculations - */ - B3IVector& operator=( const ::basegfx::B3ITuple& rVec ) - { - mnX = rVec.getX(); - mnY = rVec.getY(); - mnZ = rVec.getZ(); - return *this; - } - - /** Calculate the length of this 3D Vector - - @return The Length of the 3D Vector - */ - double getLength(void) const - { - double fLen(scalar(*this)); - if((0 == fLen) || (1.0 == fLen)) - return fLen; - return sqrt(fLen); - } - - /** Calculate the length in the XY-Plane for this 3D Vector - - @return The XY-Plane Length of the 3D Vector - */ - double getXYLength(void) const - { - double fLen((mnX * mnX) + (mnY * mnY)); - if((0 == fLen) || (1.0 == fLen)) - return fLen; - return sqrt(fLen); - } - - /** Calculate the length in the XZ-Plane for this 3D Vector - - @return The XZ-Plane Length of the 3D Vector - */ - double getXZLength(void) const - { - double fLen((mnX * mnZ) + (mnY * mnZ)); - if((0 == fLen) || (1.0 == fLen)) - return fLen; - return sqrt(fLen); - } - - /** Calculate the length in the YZ-Plane for this 3D Vector - - @return The YZ-Plane Length of the 3D Vector - */ - double getYZLength(void) const - { - double fLen((mnY * mnY) + (mnZ * mnZ)); - if((0 == fLen) || (1.0 == fLen)) - return fLen; - return sqrt(fLen); - } - - /** Set the length of this 3D Vector - - @param fLen - The to be achieved length of the 3D Vector - */ - B3IVector& setLength(double fLen) - { - double fLenNow(scalar(*this)); - - if(!::basegfx::fTools::equalZero(fLenNow)) - { - const double fOne(1.0); - - if(!::basegfx::fTools::equal(fOne, fLenNow)) - { - fLen /= sqrt(fLenNow); - } - - mnX = fround(mnX*fLen); - mnY = fround(mnY*fLen); - mnZ = fround(mnZ*fLen); - } - - return *this; - } - - /** Calculate the Scalar product - - This method calculates the Scalar product between this - and the given 3D Vector. - - @param rVec - A second 3D Vector. - - @return - The Scalar Product of two 3D Vectors - */ - double scalar(const B3IVector& rVec) const - { - return ((mnX * rVec.mnX) + (mnY * rVec.mnY) + (mnZ * rVec.mnZ)); - } - - /** Transform vector by given transformation matrix. - - Since this is a vector, translational components of the - matrix are disregarded. - */ - B3IVector& operator*=( const B3DHomMatrix& rMat ); - - static const B3IVector& getEmptyVector() - { - return (const B3IVector&) ::basegfx::B3ITuple::getEmptyTuple(); - } - }; - - // external operators - ////////////////////////////////////////////////////////////////////////// - - /** Transform vector by given transformation matrix. - - Since this is a vector, translational components of the - matrix are disregarded. - */ - BASEGFX_DLLPUBLIC B3IVector operator*( const B3DHomMatrix& rMat, const B3IVector& rVec ); - - /** Calculate the Cross Product of two 3D Vectors - - @param rVecA - A first 3D Vector. - - @param rVecB - A second 3D Vector. - - @return - The Cross Product of both 3D Vectors - */ - inline B3IVector cross(const B3IVector& rVecA, const B3IVector& rVecB) - { - B3IVector aVec( - rVecA.getY() * rVecB.getZ() - rVecA.getZ() * rVecB.getY(), - rVecA.getZ() * rVecB.getX() - rVecA.getX() * rVecB.getZ(), - rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX()); - return aVec; - } -} // end of namespace basegfx - -#endif /* _BGFX_VECTOR_B3DVECTOR_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |