티스토리 뷰
일차함수의 원리는 전체길이에서 현재길이를 나눈 비율을 현재위치에 곱해서 대응점을 찾는 것이다.
대응점 = 전체너비 / 현재너비 * (위치-A) + C
∴ Y.x = (D-C) / (B-A) * ( X.x - A) + C
∴ Y.x = D / B * X.x (시작점을 0으로 맞추었을경우)
A-B에서의 움직임에 대한 C-D의 대응점
A-------B
1---2---4
C-------D
2---4---8
(D-C) / (B-A) * (x - A) + C
6 / 3 * (2 - 1) + 2
(2 * 1) + 2
이미지 출처 : http://blog.naver.com/qqprriy/60149376967
import flash.events.MouseEvent; import flash.geom.Rectangle; import flash.events.Event; var A:int = 10; var B:int = 210; var C:int = -10; var D:int = 390; var X_legnth:Number = (B - A); X.bar.buttonMode = true; X.bar.addEventListener(MouseEvent.MOUSE_DOWN, down); function down(e:MouseEvent):void{ var bounds:Rectangle = new Rectangle(A,0,X_legnth,0); X.bar.startDrag(true, bounds); stage.addEventListener(MouseEvent.MOUSE_UP, up); X.bar.addEventListener(Event.ENTER_FRAME, loop); } function up(e:MouseEvent):void{ X.bar.stopDrag(); X.bar.removeEventListener(Event.ENTER_FRAME, loop); } function loop(e:Event):void{ var pos:Number; //일차함수 pos = (D-C) / (B-A) * (X.bar.x - A) + C; //공식대입 //pos = (390 - (-10)) / (210 - 10 ) * (X.bar.x - 10) + (-10); //숫자대입 //비례식 //pos = (X.bar.x - A) * (D-C) / (B-A) + C; //공식대입 //pos = (X.bar.x - 10) * (390 - (-10)) / (210 - 10) + (-10); //숫자대입 Y.bar.x = pos; }
빨간점을 드래그하여 움직이면 노란색 원이 같이 움직인다.
'■ 개발관련 ■ > 산수와 알고리즘' 카테고리의 다른 글
비례공식 - 이미지의 가로, 세로 비율유지 (자바스크립트) (0) | 2013.10.13 |
---|---|
비례공식 - 내항, 외항의 곱 (0) | 2013.10.13 |
탄성공식 - 마우스 따라다니기 응용 (0) | 2013.10.13 |
탄성공식 (0) | 2013.10.13 |
감속도공식 - 마우스 따라다니기 응용 (0) | 2013.10.13 |
댓글