/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
module com { module sun { module star { module geometry {
/** This structure defines a 2 by 3 affine matrix.<p>
The matrix defined by this structure constitutes an affine mapping
of a point in 2 D to another point in 2 D . The last line of a
complete 3 by 3 matrix is omitted , since it is implicitly assumed
to be [ 0 , 0 , 1 ] . < p >
An affine mapping , as performed by this matrix , can be written out
as follows , where < code > xs < / code > and < code > ys < / code > are the source , and
< code > xd < / code > and < code > yd < / code > the corresponding result coordinates :
< code >
xd = m00 * xs + m01 * ys + m02 ;
yd = m10 * xs + m11 * ys + m12 ;
< / code > < p >
Thus , in common matrix language , with M being the
AffineMatrix2D and vs = [ xs , ys ] ^ T , vd = [ xd , yd ] ^ T two 2 D
vectors , the affine transformation is written as
vd = M * vs . Concatenation of transformations amounts to
multiplication of matrices , i . e . a translation , given by T ,
followed by a rotation , given by R , is expressed as vd = R * ( T * vs ) in
the above notation . Since matrix multiplication is associative ,
this can be shortened to vd = ( R * T ) * vs = M ' * vs . Therefore , a set of
consecutive transformations can be accumulated into a single
AffineMatrix2D , by multiplying the current transformation with the
additional transformation from the left . < p >
Due to this transformational approach , all geometry data types are
points in abstract integer or real coordinate spaces , without any
physical dimensions attached to them . This physical measurement
units are typically only added when using these data types to
render something onto a physical output device , like a screen or a
printer , Then , the total transformation matrix and the device
resolution determine the actual measurement unit . < p >
@ since OOo 2 . 0
*/
struct AffineMatrix2D
{
/// The top, left matrix entry.
double m00;
/// The top, middle matrix entry.
double m01;
/// The top, right matrix entry.
double m02;
/// The bottom, left matrix entry.
double m10;
/// The bottom, middle matrix entry.
double m11;
/// The bottom, right matrix entry.
double m12;
};
}; }; }; };
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-10-05)
¤
*© Formatika GbR, Deutschland