티스토리 뷰
*수정. 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 |
댓글
피타고라스의정리를 이용한 선분의거리.fla