

JavaFX - Jak vypočítat souřadnice po otočení?
Dobrý den,
Nakreslím např. 2 trojúhelníky pomocí třídy Path
var triangle1 = new Path(new MoveTo(0, 400), new LineTo(0, 300), new LineTo(100, 300), new LineTo(0, 400));
var triangle2 = new Path(new MoveTo(0, 400), new LineTo(0, 300), new LineTo(100, 300), new LineTo(0, 400));
a druhý otočím
triangle2.getTransforms().add(new Rotate(180, 540, 540)); // 540 je polovina výšky displeje
Problém je, že při získání souřadnic to vrátí 0,
System.out.println(((MoveTo)triangle.getElements().get(0)).getX());
System.out.println(((MoveTo)triangle2.getElements().get(0)).getX());
protože byly tak vytvořeny. Ale otočením se souřadnice triangle2 změnili.
Jak to, prosím Vás vypočítám, když vím počáteční souřadnice, úhel otočení a výšku displeje?
Děkuji
Všechny ty transformace jsou pouze násobení matic a počátečního vektoru:
https://cs.wikipedia.org/wiki/Grafick%C3%A9_transformace
Promiňte, ale matice nejsou můj šálek kávy. Navíc, článek na wikipedii není zrovna perfektní.
Mohl by jste, prosím Vás, napsat vzoreček?
Děkuji
No tak když neumíš používat matice, tak si to nakresli na papír a uvidíš tam pravoúhlý trojúhelník. Pak už stačí jenom použít sinus a cosinus pro y resp. x.
Existuje mnohem jednoduší způsob. Respektive dva
1. Použít u objektu localtoscene nebo localtoscreen - viz zde
Jak už je patrné z názvu, vrátí ti to skutečnou pozici buď ke scene nebo k obrazovce, ale pokud máš scene na full screen, tak je výsledek stejný.
Nicméně, tento postup ti vrátí min a max souřadnice v ose x. A pokud chceš získat specifický bod na objektu, tak je to nevhodné.
Proto je, v tomhle případě, lepší
2. Použít u objektu localToParent