A Flash Developer Resource Site

Results 1 to 5 of 5

Thread: Arc based on Start/End points and Radius- Mostly done

  1. #1
    </hate> dtone314's Avatar
    Join Date
    Jun 2005
    Location
    CA
    Posts
    262

    Arc based on Start/End points and Radius- Mostly done

    Hi everyone. I'm trying to create an arc based on start and end points, and a radius.

    I've been working on this for a few days now, and I can get close, but not quite there. I did some searching and found some code to help me, which connects 3 points by drawing an arc, but I need to be able to specify the radius of the arc and have it connect two points based on that.

    The complex math is done, I'm just not sure how to tweak the code to let me specify a radius to connect two points. If someone wouldn't mind taking a look at the attached FLA, and pointing me in the right direction, it would be much appreciated! Thanks!
    Attached Files Attached Files
    -dtøne-
    Flash CS4 | AS2
    Life is a journey, not a destination.

  2. #2
    Senior Member realMakc's Avatar
    Join Date
    Oct 2002
    Posts
    927
    who is this? a word of friendly advice: FFS stop using AS2

  3. #3
    </hate> dtone314's Avatar
    Join Date
    Jun 2005
    Location
    CA
    Posts
    262
    Touché, thanks. Brilliant Google page, never seen that before
    -dtøne-
    Flash CS4 | AS2
    Life is a journey, not a destination.

  4. #4
    Bacon-wrapped closures Nialsh's Avatar
    Join Date
    Dec 2003
    Location
    Houston!
    Posts
    338
    If I'm not mistaken, you're on the wrong track. Constructing an arc from two points and a radius is a very different problem from the three-point construction.

    Given two points and a radius, there are 4 different arcs you can make (that lie on 2 circles). Here's some code that finds the centers of the 2 circles that the arcs can lie on:

    Code:
    //points (x1,y1) and (x2,y2)
    //radius r
    var mx = (x1+x2)/2;
    var my = (y1+y2)/2;
    
    var leg1x = mx-x1;
    var leg1y = my-y1;
    var leg1 = Math.sqrt(leg1x*leg1x + leg1y*leg1y);
    
    if(leg1 > Math.abs(r))
    	return; //no solution
    
    var leg2 = Math.sqrt(r*r - leg1*leg1);
    var leg2x = leg1y*leg2/leg1;
    var leg2y = -leg1x*leg2/leg1;
    
    var c1x = mx+leg2x;
    var c1y = my+leg2y;
    
    var c2x = mx-leg2x;
    var c2y = my-leg2y;
    You can probably work from that to construct the arc you want.

  5. #5
    Junior Member
    Join Date
    Jun 2010
    Posts
    1

    Thanks!

    Hi Nialsh. Thanks a lot for this! I have been trying to get this working for days..

Tags for this Thread

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