티스토리 뷰
*수정. 2016.05.08.
calc 함수에서 dy = mouseX-rec_mc.x; 를
dy = mouseY-rec_mc.y;로 수정됨.
제보 : 범이아빠님
----------------------------------------------------------------------------------------------------------------
삼각함수1. 피타고라스의 정리.
직각삼각형의 두 변 (인접변과 대변)의 제곱의 합은 빗변의 제곱근과 동일하다.
a:인접변, b:대변, c:빗변
이 공식을 프로그래밍에 응용해 보자.
한점 rec_mc 가 있을때, rec_mc로 부터 마우스의 거리는 피타고라스의 공식을 응용하면 쉽게 구할수 있다.
dx * dx + dy * dy = vLine * vLine 이다.
dx 인접변 : 마우스포인트.x - rec_mc.x 일것이고
dy 대변 : 마우스포인트.y - rec_mc.y 일것이다.
인접변의 제곱에 대변의 제곱을 더하고 이 값의 제곱근을 구하면 빗변 즉 vLine의 길이다.
통상 프로그램에서는 제곱근을 구할수 있도록Math.sqrt() 메서드를 지원한다.
vLine = Math.sqrt(dx * dx + dy * dy);
이 과정을 ActionScript3.0 으로 프로그래밍해보자.
import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.display.Stage; [SWF(frameRate="30", width="400", height="400", backgroundColor="0xCCCCCC")] var dx:Number; var dy:Number; var vLine:Number; var sp:Sprite = new Sprite(); var g:Graphics = sp.graphics; addChild(sp); rec_mc.x = (stage.stageWidth - rec_mc.width)/2; rec_mc.y = (stage.stageHeight - rec_mc.height)/2; this.addEventListener(Event.ENTER_FRAME, calc); function calc(e:Event):void{ dx = mouseX - rec_mc.x; dy = mouseY - rec_mc.y; vLine = Math.sqrt(dx*dx + dy*dy); Txt.text = vLine.toString(); g.clear(); g.lineStyle(1,0x000000,1); g.moveTo(rec_mc.x, rec_mc.y); g.lineTo(mouseX, mouseY); }
결과)
'■ 개발관련 ■ > 산수와 알고리즘' 카테고리의 다른 글
감속도공식 - easeOutExpo (0) | 2013.10.13 |
---|---|
Math.atan2() - y,x점의 각도를 라디안 단위로 계산하여 반환 (0) | 2013.10.13 |
삼각함수4 - 프로그램 응용하기 (2) | 2013.10.13 |
삼각함수3 - 60분법과 호도법 그리고 라디안의 정의 (2) | 2013.10.13 |
삼각함수2 - 삼각비 cos, sin, tan (0) | 2013.10.13 |
댓글