xref: /AOO41X/main/basegfx/source/point/b2dhompoint.cxx (revision 7024eca93be2e0c3654aa8f286feedace76da6ff)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_basegfx.hxx"
26 #include <basegfx/point/b2dhompoint.hxx>
27 #include <basegfx/matrix/b2dhommatrix.hxx>
28 #include <basegfx/numeric/ftools.hxx>
29 
30 namespace basegfx
31 {
implHomogenize()32     void B2DHomPoint::implHomogenize()
33     {
34         const double fFactor(1.0 / mfW);
35         maTuple.setX(maTuple.getX() * fFactor);
36         maTuple.setY(maTuple.getY() * fFactor);
37         mfW = 1.0;
38     }
39 
operator *=(const B2DHomMatrix & rMat)40     B2DHomPoint& B2DHomPoint::operator*=( const B2DHomMatrix& rMat )
41     {
42         const double fTempX( rMat.get(0,0)*maTuple.getX() +
43                             rMat.get(0,1)*maTuple.getY() +
44                             rMat.get(0,2)*mfW );
45 
46         const double fTempY( rMat.get(1,0)*maTuple.getX() +
47                             rMat.get(1,1)*maTuple.getY() +
48                             rMat.get(1,2)*mfW );
49 
50         const double fTempZ( rMat.get(2,0)*maTuple.getX() +
51                             rMat.get(2,1)*maTuple.getY() +
52                             rMat.get(2,2)*mfW );
53         maTuple.setX( fTempX );
54         maTuple.setY( fTempY );
55         mfW = fTempZ;
56 
57         return *this;
58     }
59 } // end of namespace basegfx
60 
61 // eof
62