Changing ImageView position based on angle of rotation

Game Development Asked on January 3, 2022

I am trying to make an ImageView change its position based on the direction it is facing.

import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class Demo extends Application {

    public void start(Stage window) {
        window.setTitle("Changing ImageView position based on angle of rotation");

        int speed = 10; // You can modify the speed here

        ImageView imageView = new ImageView(new Image(""));

        imageView.setRotate(65); // This is where you can change the angle of rotation

        Group root = new Group();
        Scene scene = new Scene(root);

        final long[] lastNanoTime = {System.nanoTime()};

        new AnimationTimer() {
            public void handle(long currentTime) {
                double elapsedTime = (currentTime - lastNanoTime[0]) / 1000000000.0;
                lastNanoTime[0] = currentTime;

                imageView.setX(imageView.getX() + Math.sin(Math.toRadians(imageView.getRotate())) * speed * elapsedTime);
                imageView.setY(imageView.getY() + Math.cos(Math.toRadians(imageView.getRotate())) * speed * elapsedTime);


    public static void main(String[] args) {

The above code is based on the code I am using. You can adjust the degrees accordingly to see the issue. The ImageView does not move in the direction it is facing. Note: I found a random .png file online for the purpose of this demo. You can substitute with a different image in you own code in order to better visualize the problem.

The issue is, the ImageView does not move in the direction it is facing. When oriented vertically (0° or 180°) the ImageView moves backward, but when oriented horizontally (90° or 270°) it moves straight ahead like it should. When oriented diagonally, it moves somewhere in between.

What am I doing wrong and how do I fix it?

One Answer

The question was resolved on Stack Overflow. The y axis is inverted in JavaFX, so I need to use -cos(θ) instead.

Answered by qwerty on January 3, 2022

Add your own answers!

Related Questions

How to move a character from 1 to 3 squares on a grid?

0  Asked on January 23, 2021 by shunkashuu


Unity 2017.3.of3 Raycast2D randomly misses objects

1  Asked on January 15, 2021 by hesitatetowonder


How to fix the vibration while colliding?

1  Asked on January 13, 2021


Render order in 3/4 view game

0  Asked on January 10, 2021 by chuan-li


How can I control ads frequency?

1  Asked on January 10, 2021 by ruslan-plastun


Attach movement to each list object

1  Asked on January 9, 2021 by mavish


How to make a map surface object

1  Asked on January 8, 2021 by anonymous-entity


Coding Spelunky Edge Roll Mechanic

0  Asked on January 5, 2021 by austin-weaver


Creating a lookup table of datamaps in Harlowe/Twine

0  Asked on January 4, 2021 by the_e


Unity 4 – Some Rigidbodies Won’t Fall Asleep

5  Asked on January 3, 2021 by ryan-berserkguard-nrby


Unity PackageCache keeps having errors

0  Asked on December 31, 2020 by christopher-perry


Phaser Tiled map importing

1  Asked on December 30, 2020 by kabuto178


Change the colour of all particles on screen

1  Asked on December 27, 2020 by super-potato


How can you make a jump to a point using the Character Controller?

0  Asked on December 25, 2020 by aimon-z


Trouble destroying an SDL2 texture from another class

1  Asked on December 21, 2020 by gamer1


How to hide objects behind an invisible plane?

1  Asked on December 18, 2020 by hatinacat2000


Ask a Question

Get help from others!

© 2023 All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP