A Flash Developer Resource Site

Results 1 to 3 of 3

Thread: modelling a spring (from the actionscript forum)

  1. #1
    Junior Member
    Join Date
    Feb 2002
    Posts
    20

    modelling a spring (from the actionscript forum)

    I think my post may belong more to this forum

    I'm sure these questions are asked all the time and i bet all the actionscript gurus are sick of them. but anyway.

    What i'm trying to do is model a spring to follow the basic rules of Hooke’s Law. I'm just wondering what the best way to go about this is and what the best way to model force, in actionscript. is.

    Please don't think i'm a

  2. #2
    Senior Member
    Join Date
    Apr 2001
    Posts
    190
    Well let's see:
    (Bolded variables are vectors)

    Newton's second law says that the force acting on a body is equal to the body's acceleration multiplied by it's mass.
    F = ma
    Hooke's law says that the force of a string is proportional to the distance the mass on the string is from the resting point (See below) by a factor k.
    F = kd
    Code:
        o  <- fixed point
         \
          \
           \
            o  <- resting point
             \  ¯\  distance from resting point
              \  _\
               o  <- mass attached to spring
    NOTE: Typically, Hooke's law is for 1-Dimensional objects and is written as
    F = kx
    however I suspect that you would rather use a 2-Dimensional spring, so we'll replace the 1-Dimensional variable, x, with a 2-Dimensional vector d, <x,y>.

    Thus
    F = ma
    F = kd
    Solving for a, the acceleration, we obtain:

    a = k/m*d

    Oh BTW, k is the "springiness", or "stiffness" of the string, while m is the mass of the mass attached to the spring.


    Though we could use ahab's vector library when applying this to Actionscript, I think we'll just break up the vector into components to apply this to ActionScript.
    Code:
    k = .1;
    m = 1;
    d = .95; // Uh.. Damping constant... Tell you about this later ;)
    rest_x = 275;
    rest_y = 200;
    onEnterFrame = function(){
    	var dx = rest_x - m1._x; // Calculate distances
    	var dy = rest_y - m1._y;
    	var ax = k/m * dx; // Calculate the acceleration
    	var ay = k/m * dy;
    	vx += ax; // Add the Acceleration to the Velocity
    	vy += ay;
    	vx *= d; // Apply the damping factor to the velocity
    	vy *= d;
    	m1._x += vx; // Add the Velocity to the Mass' position
    	m1._y += vy;
    }
    onMouseDown = function(){
    	vx = 0;
    	vy = 0;
    	m1._x = _xmouse;
    	m1._y = _ymouse;
    }
    Make a clip, give it the instance name m1, and paste the code. Then click away!

    I'll add to it later. Gravity, a moving resting point, etc. This is just a start. =\




    Later,
    Martin Muñoz

  3. #3
    Junior Member
    Join Date
    Feb 2002
    Posts
    20
    Thanks a lot for the very detailed reply. I should have updated this thread though, i had found a solution in bit-101's tutorials. I am however working on a new problem (if your in any way interested )

    3 or more objects linked together with invisible 'springs'

    Code:
    [ obj1 ]
       |
    [ obj2 ]
       |
    [ obj3 ]
       |
    [stationary pt]
    And a spring going from each one of the objects to the mouse. I want this force exponential so that the objects only react when the mouse is quite close.

    This will probably sound silly if i haven't explained it right

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center