Bug 120582 - Cartesian System
Summary: Cartesian System
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Draw (show other bugs)
(earliest affected) release
Hardware: All All
: medium enhancement
Assignee: Not Assigned
Depends on:
Blocks: Statusbar Options-Dialog Rulers
  Show dependency treegraph
Reported: 2018-10-14 09:19 UTC by Jürgen Weber
Modified: 2022-02-04 03:19 UTC (History)
6 users (show)

See Also:
Crash report or crash signature:


Note You need to log in before you can comment on or make changes to this bug.
Description Jürgen Weber 2018-10-14 09:19:39 UTC
Libreoffice Draw should allow the usage of the Cartesian Coordinate System.
with (0,0) at the bottom left of the page and (+pagewidth, +pageheight) at the top right corner.

See also
Comment 1 Heiko Tietze 2018-11-26 11:49:44 UTC
I like the idea of such an option but if 0,0 is defined at top-left in the format we cannot change this. Regina, your wisdom is needed.
Comment 2 Regina Henschel 2018-11-26 13:13:02 UTC
Currently it is common (HTML, CSS, SVG, XSL) to use origin top-left, positive x-axis points right, positive y-axis points down. I would never add an option to change this in file format, because this would give large interoperability problems and problems with existing macros without any benefit.

But file format is different from view. We have already the possibility to set the origin in Draw different from top-left. That effects only the view. It changes e.g. the field values in the dialogs. It is not saved to file and this view setting is not remembered. In theory, a view with positive y-axis pointing up would be possible. But considering the amount of changes and the risk to oversee some effects, I argue to not follow this idea. Only if you have someone who pays for it and someone with deep knowledge in code to implement it, realizing such feature might work.
Comment 3 Jürgen Weber 2018-11-26 13:31:22 UTC
If a pupil sits down to do her math homework and draws a sinus curve on graph paper, it is natural that (0,0) is at the bottom left of the sheet and sin(pi/2) is above sin(pi).

Same if you plan your room and draw a chair beside a table.

Only if you start using Draw things become complicated.
Comment 4 Heiko Tietze 2018-11-26 18:09:15 UTC
(In reply to Jürgen Weber from comment #3)
> Only if you start using Draw things become complicated.

The same is true for similar tool from competitors. Inkscape starts with 0,0 at the bottom but uses a [viewBox="0 0 210 297"] and saves the objects relative to this or each other with [<rect y="247"...] for 0,0.

I'm afraid we cannot solve the problem.
Comment 5 Heiko Tietze 2019-02-22 10:22:30 UTC
Summarizing the previous discussion: it is possible to change the coordinates virtually (meaning just for the UI, not saved to the document). It would be an option "[ ] Cartesian Coordinate System" that inverts the vertical ruler as well as the value at the statusbar. 

Code pointer to start investigation: svtools/source/control/ruler.cxx (only the vertical ruler would be affected)

Maybe it's a bit too big for an easyhack => needsDevEval.
Comment 6 Thomas Lendo 2019-02-28 20:44:14 UTC
Programs for publishing and typesetting use a coordinate system with the zero/start point at the top left of a page and positive values to the bottom and right, negative values up and left. So this should renmain the default.

That charts and objects use another system from the bottom left corner is common. Objects and pages are different things.

But in schools often another coordinate system is teached and the choice to change to the bottom left is valid.

But I don't like the name. Is it really called Cartesian in this use case?
Comment 7 BillMEng 2019-07-10 14:56:57 UTC
Talk to anyone like myself who has been a draftsman and they will tell you that the standard X-Y Cartesian system is + X is to the right and +Y is up. This is also the way high school math was taught. It wasn't until desktop publishing and webpages came along and made the upper right 0,0.

And if you have a 3 dimensional system, the problem is a bit more complicated. I once developed a 3dimensional gridding system, which I won't attempt to describe here.