Hi Andreas,

you need the initial angle, which is Math.atan2( mouseY, mouseX ).
Then the angle while rotating, which is the same minus the initial
angle. That's your current angle -- like all angles, in radians.

to rotate points by this angle, just do this:
var newX = Math.cos( angle ) * originalX - Math.sin( angle ) * originalY;
var newY = Math.sin( angle ) * originalX + Math.cos( angle ) * originalY;

HTH,
Mark


On 11/29/06, Andreas R <[EMAIL PROTECTED]> wrote:
This is based on Danny Codicek's Mathematics & Physics for programmers,
and i'm feeling very stupid right now.

 From what i can tell, the book describes the function as such:
rotatedX =
Math.sqrt(originalx*originalx+originaly*originaly)*Math.sin(angle-Math.atan2(originaly,originalx))
and the same for rotatedY

My implementation is this:

import flash.geom.Point;
function Triangle(p1:Point,p2:Point,p3:Point){
    this.p1 = p1;
    this.p2 = p2;
    this.p3 = p3;
    this.update = function(){
        this.clip = _root.container.createEmptyMovieClip("triangle",1);
        with(this.clip){
            beginFill(0xFF0000);
            moveTo(p1.x,p1.y);
            lineTo(p2.x,p2.y);
            lineTo(p3.x,p3.y);
            lineTo(p1.x,p1.y);
            endFill();
        }
    }
    this.update();
}

function rotateTriangle(triangle:Object,angle:Number){
    var rad:Number = angle*(Math.PI/180);
    for(var i = 3;i--;){
        var p = triangle["p"+(i+1)];
        var py:Number = Math.sqrt(p.x*p.x+p.y*p.y);
        var np:Point = new Point();
        np.x = dist*Math.cos(rad-Math.atan2(p.y,p.x));
        np.y = dist*Math.sin(rad-Math.atan2(p.y,p.x));
        triangle["p"+(i+1)].x = np.x;
        triangle["p"+(i+1)].y = np.y;
    }
    triangle.update();
}

var t1:Object = new Triangle(new Point(10,10),new Point(40,40),new
Point(10,40));
rotateTriangle(t1,45);

This isn't working very well: I'm not sure wether "angle" should be
angles or radians, since either gives off-kilter results and radians
gives the least freakishness, but what happens is on every other update
the triangle gets mirrored rather than rotated.

Could someone with stronger cerebral capacity than me have a look at my
function, figure it out and explain where i went wrong? The more i look
at it the less i understand why it flips every other update.

- A
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to