incubator-ooo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Armin Le Grand <>
Subject Re: ODF angle problems continued
Date Thu, 09 Aug 2012 15:17:13 GMT
	Hi Regina,

good to start that. The definitions for draw:transform are correct AFAIS.

Concerning the coordinate system mess:

The two possible orientations of coordinate system are needed when you 
want to define 'clockwise' and 'counter-clockwise'.

Instead, speaking about 'positive orientation' and 'negative 
orientation' in the mathematical sense is independent from the 
orientation where mathematical 'positive orientation' means (in both 
cases) that the rotation starts on (1,0), goes through the first 
quadrant and ends at (0,1).

I would use the independent description. Together with the information 
that AOO uses (in all 2D cases) the screen orientation the result is 
that 'positive orientation' goes 'clockwise'.

This definitions are missing and adding them will be fine. They still do 
not describe the existing problem with angles (except the ones in 
draw:transform and 3D). They are numerically *mirrored*, independent 
from the definition of the orientation.

Thus the current state:
- Screen orientation is used in core, api and odf
- mathematically correct 'positive orientation' goes 'clockwise'
- draw:angle is 'wrong' because it is numerically mirrored, it goes 
'counter-clockwise', but resides in the same orientation

Example: draw:angle(300) (in 0.1 degrees, another problem, independent 
from orientation) is not for lines, but *if* applied to a line from 
(0,0) to (1,0) on the X-Axis the line would be rotated 30 degrees 
anti-clockwise (!) in the current offic(es). The line will point from 
bottom-left to up-right.

To get what you want (and what would be mathematically correct with the 
given definitions), an angle of -300 (or 3300 what is 3600 - 300) has to 
be used.

Example the other way around: A line from (0,0) to (1,1), thus from 
top-left to bottom-right on screen *should* have a rotation value of 45 
degrees. The API value for rotation (do not know the exact name right 
now) will not give you 450, but 3150, which is 3600-450. ARGH!

Thus the error(s) with draw:angle are:
- It's in 10th of degrees and not documented as that
- It's numerically mirrored, *independent* from the orientation

On 09.08.2012 15:39, Regina Henschel wrote:
> Hi all,
> I have written a mail to OASIS, that I think that a lot of angle
> definitions are not clear enough. It seems that the committee is willing
> to discuss the problem. I have therefore started with section "19.228
> draw:transform" in spec ODF 1.2 part 1.
> You find my concerns and suggestions on
> I plan to show that to the OASIS committee. But first I like to know
> your ideas. So please have a look.
> Kind regards
> Regina

View raw message