티스토리 뷰


 
Subject Note Function
수의 정의
정수 : 양의 정수, 음의 정수, 0
자연수 : 양의 정수
유리수 : a/b (a와 b는 정수, b는 0이 아님) 형태로 표현할 수 있는 수

절대값
|x1-x2| Math.abs(x1-x2)
비례와 반비례
비례 : y=ax (a는 임의의 상수)
반비례 : y=a/x (x는 0이 아님)

제곱근
a = b*b 에서 b는 a의 제곱근 Math.sqrt(b)
피타고라스
직각 삼각형의 경우 빗변이 아닌 두 변의 길이를 제곱해서 더한 값은 빗변을 제곱한 것과 같다.
c*c = a*a + b*b
c = Math.sqrt(a*a+b*b)
삼각함수1
sinθ = y, cosθ = x (θ는 radian)
호도각(degree) : 원 한바퀴를 360도로 표시한 것
라디안(radian) : 반지름이 1인 원에서 호의 길이가 1인 부채꼴의 각을 기본단위로 삼아서, 원 한바퀴를 2π 로 표시한 것
radian = degree*Math.PI/180
Math.sin(radian)
Math.cos(radian)
삼각함수2
y=sin(x)
y=cos(x)
y=a*sin(x)
y=sin(2πx/T)
y=b+a*sin(2πx/T)
y=a*sin(2π(x-δ)/T)
y=a*sin(2πx/T-2πδ/T)
y=a*sin(wt+φ)
sin30° = 1/2
sin60° = √3/2
cos30° = √3/2
cos60° = 1/2
삼각함수를 이용한 원 및 타원
cosθ=x/r → x=rcosθ
sinθ=y/r → y=rsinθ
x=a+rcosθ, y=b+rsinθ : 중심이 (a,b)이고 반지름이 r인 원
x=m+acosθ, y=n+bsinθ : 중심이 (m,n)이고 가로축 반지름이 a, 세로축 반지름이 b인 타원

행렬의 기초
1×3행렬, 2×2행렬, 3×1행렬
행렬의 같은 꼴 및 행렬의 연산
행렬의 같은 꼴, 행렬의 합, 행렬의 차, 행렬의 실수 배, 행렬의 곱셈
일차변환


수열
등차수열, 등비수열
일차 점화식
이차 점화식
삼차 점화식

미분(微分)
평균속력 = Δ거리/Δ시간
순간속력 = ds/dt

적분(積分)


atan(아크탄젠트)
tanθ=y/x ↔ atan(y/x)=θ Math.atan2(y,x)
극 좌표
직교좌표 P(x,y)
극좌표 P(r,θ) : r은 원점으로부터 떨어진 거리, θ는 x축을 기준으로 회전한 각도
x=rsinθ, y=rcosθ

랜덤
random(4) : 0,1,2,3 중에서 임의의 한 정수를 반환
random(b-a+1)+a : a부터 b까지의 정수 중 임의의 한 정수를 반환
Math.random() : 0부터 1사이의 값 중 임의의 실수를 반환, 매개변수 없음
(b-a)*Math.random()+a : a에서 b까지의 수 중 임의의 실수를 반환
Math.floor(7.3432) : 7 을 반환. 소수점 이하를 제거
Math.floor((b-a)*Math.random())+a : a에서 b까지의 값 중 임의의 정수를 반환
random(a)
확률
onClipEvent(enterFrame) { if(random(20)==0){ 액션스크립트A; } }
%연산자
// 나머지를 구하는 함수 선언 _global.mod = function(a, b){ if(a%b<0){ return b + a%b; }else{ return a%b; } }


■ 액션스크립트 샘플

절대값과 비례를 이용한 플래시 무비 for(var i=1;i<=10;i++){ _root["m"+i].onEnterFrame = function(){ // 자신과 마우스커서 사이의 y축 거리 distance = Math.abs(this._y - _root._ymouse); // 거리에 따라 투명도 설정 this.rect._alpha = 30 + distance/4; this._xscale = 100 - distance/4; }; }
피타고라스 공식을 이용한 이차원 평면상의 두점 (x1,y1)과 (x2,y2) 사이의 거리 r를 반환하는 함수 function distance(x1,y1,x2,y2) { var diffX = x2-x1; var diffY - y2-y1; var r = Math.sqrt(diffX*diffX+diffY*diffY); return r; }
삼각함수를 이용한 원운동 onClipEvent (load) { // 원 운동의 중심 cx = _root.center._x; cy = _root.center._y; // 원 운동의 가로 및 세로길이 a = 150; b = 150; // 각도 t = 0; } onClipEvent (enterFrame) { // 원운동 만들기 x = cx+a*Math.cos(t); y = cy+b*Math.sin(t); // 원운동 식을 (cx, cy)를 중심으로 theta만큼 회전이동 시킴 tempx = x; x = cx + (x-cx)*Math.cos(theta) - (y-cy)*Math.sin(theta); y = cy + (tempx-cx)*Math.sin(theta) + (y-cy)*Math.cos(theta); // 회전이동시킨 점을 무비클립의 _x, _y 속성으로 설정 this._x = x; this._y = y; // 각도를 0.1만큼 증가시킴 t = t+0.1; }
삼각함수를 이용한 타원운동 onClipEvent (load) { // 타원 운동의 중심 cx = _root.center._x; cy = _root.center._y; // 타원 운동의 가로 및 세로길이 a = 100; b = 200; // 매 프레임마다 증가할 각도 t = 0; // 타원을 회전이동시킬 각도, 30도만큼 회전 => 라디안으로 바꿈 theta = 30/180*Math.PI; } onClipEvent (enterFrame) { // 타원운동 만들기 x = cx+a*Math.cos(t); y = cy+b*Math.sin(t); // 타원운동 식을 (cx, cy)를 중심으로 theta만큼 회전이동 시킴 tempx = x; x = cx + (x-cx)*Math.cos(theta) - (y-cy)*Math.sin(theta); y = cy + (tempx-cx)*Math.sin(theta) + (y-cy)*Math.cos(theta); // 회전이동시킨 점을 무비클립의 _x, _y 속성으로 설정 this._x = x; this._y = y; // 각도를 0.1만큼 증가시킴 t = t+0.1; }
수열을 이용하여 윈도우가 좌우로 빠르게 흔들리는 모습 onClipEvent(load){ // 좌우로 진동하도록 r 값을 설정, -1에 가까울수록 오랫동안 진동 r = -0.95; // 이동할 목적위치를 처음 시작 위치로 설정 t = this._x; // 처음 시작 위치 this._x = this._x + 20; } onClipEvent (enterFrame){ // 매 프레임마다 목적지 t를 향해 좌우로 진동하면서 이동함 this._x = r*this._x + (1-r)*t; }
수열을 이용해서 윈도우가 드래그되고, 버튼 클릭하면 좌우로 빠르게 흔들리는 모습 /********** window 무비클립 **********/ onClipEvent(load){ // 좌우로 진동하도록 r 값을 설정, -1에 가까울수록 오랫동안 진동 r = -0.95; // 이동할 목적위치를 처음 시작 위치로 설정 t = this._x; // 처음 시작 위치 this._x = this._x + 20; } onClipEvent (enterFrame){ if(isDrag == false){ // 매 프레임마다 목적지 t를 향해 좌우로 진동하면서 이동함 this._x = r*this._x + (1-r)*t; } } /********** window 무비클립 속의 타이틀바 버튼 **********/ on(press){ this.startDrag(); isDrag = true; } on(release){ this.stopDrag(); t = this._x; isDrag = false; } /********** 좌우로 진동시키는 버튼 **********/ on(release){ _root.window._x = _root.window._x + 20; }
관성 onClipEvent(enterFrame){ // speedx와 speedy 만큼 가로 및 세로축으로 이동하기 this._x += speedx; this._y += speedy; // Right키가 눌리면, 오른쪽으로 이동하기 if(Key.isDown(Key.RIGHT)){ speedx += 2; this._xscale = 100; } // Left키가 눌리면, 왼쪽으로 이동하기 if(Key.isDown(Key.LEFT)){ speedx -= 2; this._xscale = -100; } // Up키가 눌리면, 위로 이동하기 if(Key.isDown(Key.UP)){ speedy -= 2; } // Down키가 눌리면, 아래로 이동하기 if(Key.isDown(Key.DOWN)){ speedy += 2; } // 매 프레임마다 x 및 y축 속도를 5% 만큼씩 감소시킴 speedx *= 0.95; speedy *= 0.95; // 화면 밖으로 나가면 반대편에서 나타나게 하기 if(this._x > 550 + this._width){ this._x = 0 - this._width/2; }else if(this._x < 0 - this._width){ this._x = 550 + this._width/2; } if(this._y > 400 + this._height){ this._y = 0 - this._height/2; }else if(this._y < 0 - this._height){ this._y = 400 + this._height/2; } // 스페이스 키를 누르면, 마법쓰는 프레임으로 이동시키기 if(Key.isDown(Key.SPACE) && this._currentFrame < 19){ this.gotoAndPlay(19); } }
atan(아크탄젠트)를 이용한 눈돌리기 /********** 메인타임라인 1프레임 **********/ // 무비클립을 (targetx, targety)로 회전시키는 함수 MovieClip.prototype.rotateTo = function(targetx, targety){ var diffX = targetx - this._x; var diffY = targety - this._y; this._rotation = Math.atan2(diffY, diffX)*180/Math.PI; }; /********** 눈 무비클립 **********/ onClipEvent (enterFrame) { this.rotateTo(_root._xmouse, _root._ymouse); } 극좌표를 이용하여 다양한 그래프 그리기 /********** line 무비클립 **********/ // 두 점을 연결하는 라인을 만드는 메서드 선언 MovieClip.prototype.drawLine = function(x1, y1, x2, y2){ this._x = x1; this._y = y1; this._xscale = x2 - x1; this._yscale = y2 - y1; }; /********** 액션 무비클립 **********/ onClipEvent(load){ i=0; // 극좌표 r = 60*Math.cos(12*t)+20; // 극좌표를 직교좌표로 변환, (275, 200)만큼 평행이동 <- 가운데로 이동 prevX = this._x = r*Math.cos(t) + 275; prevY = this._y = r*Math.sin(t) + 200; } onClipEvent(enterFrame){ // 극좌표 r = 60*Math.cos(12*t)+20; // 극좌표를 직교좌표로 변환, (275, 200)만큼 평행이동 <- 가운데로 이동 this._x = r*Math.cos(t) + 275; this._y = r*Math.sin(t) + 200; // 라인 그리기 _root.line.duplicateMovieClip("line"+i, i); _root["line"+i].drawLine(this._x, this._y, prevX, prevY); // 과거 위치를 저장 prevX = this._x; prevY = this._y; // t 값을 0.1씩 증가 (각도를 증가시킴) t = t + 0.02; // 다음번 무비 복제를 위해 i를 1만큼 증가시킴 i++; }
나머지를 구하는 함수 // 나머지를 구하는 함수 선언 _global.mod = function(a, b){ if(a%b<0){ return b + a%b; }else{ return a%b; } }
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함