06
2015
06

等边三角形-已知两点求第三点坐标

如题。

实现方法很多。这里利用旋转变换来实现。

假设已知等边三角形的两点A、B的坐标,求第三点C的坐标。

连接点AB得到线段AB,以A为圆心,将AB旋转60度,B所在的位置即是等边三角形的第3点C。其实应该存在两个点,AB旋转60度或-60度。


效果如下,可拖动绿色圆点,观察三角形的变化。


舞台上放了4个影片剪辑:pa、pb、pc、pd,代码直接写在帧上。    


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
pa.buttonMode=pb.buttonMode=true;
 
var curTar:Sprite;
drag(pa);
drag(pb);
update();
function drag(tar:Sprite):void{
        tar.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
}
function mouseDownHandler(e:MouseEvent):void{
        curTar=e.currentTarget as Sprite;
        curTar.startDrag();
        stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
        stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function mouseUpHandler(e:MouseEvent):void{
        stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
        stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
        curTar.stopDrag();
        curTar=null;
}
function mouseMoveHandler(e:MouseEvent):void{
        update();
}
function update():void{
        var p:Object={x:pb.x-pa.x,
                                        y:pb.y-pa.y};
        p=rotate(p,Math.PI*60/180);
        pc.x=pa.x+p.x;
        pc.y=pa.y+p.y;
         
        p={x:pb.x-pa.x,
                y:pb.y-pa.y};
        p=rotate(p,-Math.PI*60/180);
        pd.x=pa.x+p.x;
        pd.y=pa.y+p.y;
         
        graphics.clear();
        graphics.lineStyle(1,0x000000);
        graphics.moveTo(pa.x,pa.y);
        graphics.lineTo(pb.x,pb.y);
        graphics.lineTo(pc.x,pc.y);
        graphics.lineTo(pa.x,pa.y);
        graphics.lineTo(pd.x,pd.y);
        graphics.lineTo(pb.x,pb.y);
}
 
 
function rotate(p:Object,q:Number):Object{
        var o:Object={x:0,y:0}
        var sin:Number=Math.sin(q);
        var cos:Number=Math.cos(q);
        o.x=cos*p.x+sin*p.y;
        o.y=-sin*p.x+cos*p.y;
        return o;
}


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。