Моделирование поведения весны

По сути, я хочу смоделировать поведение весны на нарисованном изображении. Я хочу, чтобы он проходил через несколько итераций, масштабируя его вверх и вниз (как это зафиксировано на пружине).

Все примеры, которые я нашел в сети, ведут к этому классу -FloatSpring.java

Он должен обеспечить необходимые расчеты для перемещения точки A в точку B с применением пружинящего эффекта, который зависит от различных настроек класса FloatSpring. Проблема в том, что я не нашел ни одного четкого примера, как правильно его использовать.

Я сделал этот маленький пример, чтобы проверитьFloatSpring на:

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 );
}

В этом примереzoom собственность должна отскочить от1f в3f в пределах цикла таймера и, наконец, приведите отображаемое на компонентном изображении к 3-кратному увеличению. Что-то вроде простого анимированного перехода.

Класс FloatSpring должен быть в порядке - я просто не понимаю, как правильно его использовать. Чтобы быть точным - что я должен указать в качествеspringK а такжеdampingK значения, а такжеtime Ценность собственности неясна ...

Я был бы очень признателен за любую помощь там.

Ответы на вопрос(1)

Ваш ответ на вопрос