Y upward coordinates

Pretty much if not all graphics system (at least that I know of) uses a coordinates system that makes y be positive downward and the origin start at the top left corner of the screen. JavaFX is no exception to this.
This is something that always makes my head hurt. Every time I’m drawing something I have to do the extra step of thinking it upside down. Fortunately for me there is an easy workaround: changing the transforms applied to the topmost node container(parent).

Edit: There are also some situations where you really need to invert the coordinate system for example in my case I’m receiving number data from the calculation engine and need to represent it with the y upward.

To do this you’ll have to first invert the y axis of the coordinate system by doing a scale than translate it by the height of the screen – don’t forget that the order in which you apply the transforms makes a difference, so using the translate and scale parameters instead will produce a different result.


public class MyScene extends Scene{

(...)

var objectsGroup: Group = Group {

transforms: bind [Transform.translate(0, height), Transform.scale(1, -1)] // height is the scene height

}; // "topmost" group

(...)

}

There is a catch though: you’ll have to invert the y of every image and text node you insert by aplying a -1 scale to y of the node.

var text:Text = Text{

(...)

scaleY: -1

(...)

};

I hope this information was usefull in some way. See you on the next post 🙂

Hello world!

Hello, my name is Pedro I’m a software engineer and this is my first blog post ever.

As for my job, I’m currently working as a researcher on a University in Portugal, developing Modellus, a free software for modelling physics and mathematics: http://modellus.fct.unl.pt/, http://www.facebook.com/pages/Modellus/119393478656 (The current version 4.5 will be available this week). Also made a small contribution to JFxtras – JXScene for javafx1.2 (also thanks to Andrew Hughes).

Modellus is primarily used to aid teaching. By using only a mathematical language (no need to learn any new language) students and teachers are able to create models which then they can interact/view using animations/graphs/tables, etc.

On the previous months I’ve been porting Modellus 4.5 – a swing application – to javafx. As a mid step I’ve embedded the animation part made in javafx onto the rest.

Modellus 5 will be finalized and released till the end of April since, sadly for me, that is the time when the project will suffer an halt because to this date we weren’t able to get more funds.

So to wrap it all up this blog will be about my lessons learned while porting Modellus to JavaFX.