최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

*수정. 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 으로 프로그래밍해보자. 

 

피타고라스의정리를 이용한 선분의거리.fla


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);
}

 

결과)



댓글