Wiosenna symulacja zachowania

Zasadniczo chcę symulować zachowanie wiosenne na malowanym obrazie. Chcę, aby przebiegał przez kilka iteracji skalując go w górę iw dół (tak jak w przypadku sprężyny).

Wszystkie przykłady znalezione w sieci prowadzą do tej klasy -FloatSpring.java

Powinien zapewniać niezbędne obliczenia, aby przenieść punkt A do punktu B, stosując efekt sprężynujący, który zależy od różnych ustawień klasy FloatSpring. Problem polega na tym, że nie znalazłem ani jednego jasnego przykładu, jak prawidłowo go używać.

Zrobiłem ten mały przykład do przetestowaniaFloatSpring na:

public static void main ( String[] args )
{
    // Some image to bounce
    final ImageIcon icon =
            new ImageIcon ( WebProgressOverlayExample.class.getResource ( "icons/ava1.jpg" ) );

    // Component to paint image on
    JComponent spring = new JComponent ()
    {
        // Zoom value (1f = 100% = normal size)
        float zoom = 1f;

        {
            // Basic spring settings
            final FloatSpring fs = new FloatSpring ( 100 );
            fs.setPosition ( zoom );

            // Animation delay
            final int delay = 1000 / 24;

            // Animator
            new Timer ( delay, new ActionListener ()
            {
                private float elapsed = 0f;

                public void actionPerformed ( ActionEvent e )
                {
                    // Increasing elapsed time and updating spring
                    elapsed += delay;
                    fs.update ( 3f, elapsed );

                    // Updating zoom value and component
                    zoom = fs.getPosition ();
                    repaint ();
                }
            } ).start ();
        }

        protected void paintComponent ( Graphics g )
        {
            super.paintComponent ( g );

            // Scaled image
            int width = Math.round ( icon.getIconWidth () * zoom );
            int height = Math.round ( icon.getIconHeight () * zoom );
            g.drawImage ( icon.getImage (), getWidth () / 2 - width / 2,
                    getHeight () / 2 - height / 2, this );
        }

        public Dimension getPreferredSize ()
        {
            return new Dimension ( 500, 500 );
        }
    };

    JFrame frame = new JFrame ();
    frame.add ( spring );
    frame.pack ();
    frame.setLocationRelativeTo ( null );
    frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
    frame.setVisible ( true );
}

W tym przykładziezoom własność powinna się odbić1f do3f w ramach cyklu czasowego i na koniec poprowadzić wyświetlany obraz komponentu do zoomu 3X. Coś jak proste animowane przejście.

Klasa FloatSpring powinna być w porządku - po prostu nie rozumiem, jak prawidłowo jej używać. Dokładnie - co powinienem określić jakospringK idampingK wartości, a takżetime cel nieruchomości jest niejasny ...

Byłbym wdzięczny za każdą pomoc.

questionAnswers(1)

yourAnswerToTheQuestion