본문 바로가기

FLASH/AS3.0팁

삼각함수로 다각형 그리기

삼각함수로 한 싸이클의 움직임을 하는데 2파이가 사용됩니다.

5각형을 만들때는 한점당 1/5 *2파이 가 되는 것입니다.

그것에 착안하여 다각형을 그릴 수 있습니다.

예제를 보죠.


삼각함수_4_5각형그리기.fla



var n:Number = 5;  //5각형을 그려볼까?

var t:Number = 0;  //파이값

var cx:Number = 275; //중심점x

var cy:Number = 200; //중심점y

var rx:Number = 100; //타원가로반경

var ry:Number = 100; //타원세로반경  ==> 서로 같으니 원이 되겠죠.

var posArrayX:Array = new Array(); 

var posArrayY:Array = new Array();

 

//꼭지점 생성해 주고

for(var i:int=0; i<n; i++){

 var mc:Mc_p = new Mc_p();

 addChild(mc);

 mc.x = cx + rx * Math.cos(i/n * 2*Math.PI - Math.PI /2);

 mc.y = cy + ry * Math.sin(i/n * 2*Math.PI - Math.PI /2);

 posArrayX.push(mc.x); //배열에 포지션 저장

 posArrayY.push(mc.y); //배열에 포지션 저장

 mc.name = "point" + i; 

}

// 각 꼭지점끼리 선그리기 해주기

for(var j:int=0; j<n; j++){

 if(j==0){

  drawLine(this["line"+j], posArrayX[j], posArrayY[j], posArrayX[n-1], posArrayY[n-1]);

 }else{

  drawLine(this["line"+j], posArrayX[j], posArrayY[j], posArrayX[j-1], posArrayY[j-1]);

 }

}

 

// 선그리기를 함수화 해 놓습니다.

function drawLine(line:Sprite, sx:Number, sy:Number, tx:Number, ty:Number){

 var line:Sprite = new Sprite();

 line.graphics.lineStyle(2, 0x000000, 1, true);

 line.graphics.moveTo(sx, sy)

 line.graphics.lineTo(tx, ty)

 addChild(line);

}


 

 

다각형그리는 것은 위의 소스에서 첫줄에 있는

var n:Number = 5;  대신에

var n:Number = 12;

처럼 적어주면 됩니다.