Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- as3.0
- scaleform3
- flash cs3
- KGC 2013
- scaleform4
- CLIK
- ApplicationDomain
- as2
- 클릭
- 강좌
- as3
- 형변환
- 집합의 연산
- 플래시
- 스케일폼
- 샌프란시스코
- flash player 10
- autodesk
- Chart
- DataBinding
- watch
- GDC
- addChild
- 태그클라우드
- MMOKit
- 수학정석
- flash
- Document Class
- 애드온
- scaleform
Archives
- Today
- Total
scaleform.minarto.com
플래시 개발시에 자주 쓰이는 산수 또는 수학들 5 - 1 - 행렬, Matrix3D 본문
자, 글을 보기 전에 이 글을 먼저 보세요 (http://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC)
자세한 설명은 위 링크에 더 많이 나와있고, 전 실제 Matrix3D가 어떻게 돌아가는지를 살짜쿵 맛보겠습니다. 내용이 많아질거 같아 설명은 링크에 양보하겠습니다.
(Matrix 로 설명을 할까 하다가, 요즘 플래시 11 + 3d 스터디를 시작했기 때문에 Matrix3D 로 설명을 하겠습니다.)

Matrix3D 는 4*4 행렬을 사용합니다
4 * 4 행렬이기 때문에 총 원소(이 표현이 맞는지 모르겠네요)는 16개가 됩니다. Matrix 와 달리 16개나 되는 숫자를 넣다보니 Vector.<Number> 를 생성자의 인자로 갖게 됩니다.
그리고 Vector 의 원소는 1행의 1열부터 1행2열, 1행 3열, 1행 4열, 2행 1열..... 이런 순서로 채우게 됩니다
예를 들어,
var v:Vector.<Number> = Vector.<Number>([0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15])
var m:Matrix3D = new Matrix3D(v)
이렇게 넣는다면,
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
이렇게 채운다는 말이죠...
디스플레이 오브젝트의 기본값(scaleX = scaleY = scaleZ = 1, x = y = z = 0)으로 넣는다면
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
이렇게 될겁니다. 맨마지막(그림에서 tw)이 1인 이유는 항등행렬에 만족하기 위해서입니다. 이건 나중에 기회가 되면...
자, 이걸 위치를 이동시켜보죠. x, y 를 각각 100 씩 이동시켜본다고 하면...
1 0 0 100
0 1 0 100
0 0 1 0
0 0 0 1
이 되어야 한다는 겁니다
하지만 이런걸 대신 해주는게 바로 Matrix3D 입니다. 여러가지 행렬연산을 해주는 메소드들이 있죠... 예를 들어 위치이동이라면 appendTranslation($x:Number, $y:Number, $z:Number):void 이 바로 그놈입니다
var a:Matrix3D = new Matrix3D();
a.appendTranslation(100,200,300);
trace(a.rawData);
//////////////////////////
1,0,0,0,0,1,0,0,0,0,1,0,100,200,300,1
이렇게 나온단 얘기입니다... 이 외에도 많은 메소드 들이 있는데 그 녀석들이 복잡한 행렬연산을 대신하기 위해 있습니다.
뭐, 어렵죠? 저도 어렵습니다
그러니 어려운 행렬 계산은 컴퓨터에 맞기고, 우리는 3d 공부나 하는 것이... 아 3d가 더 어려운가...
암튼 내용이 길어지니 오늘은 Matrix3D 맛배기만... (사실, 저도 행렬을 잘 몰라 공부하며 쓴거라... 더 공부해야 2편을 쓸 수 있다는...)
p.s. 웬지 써놓고 보니, 자주 쓰이는 플래시 수학은 아닌듯하다는... 게다가 스터디에도 딱히 필요 없을 것도 같다는...
//////////////////////////
1,0,0,0,0,1,0,0,0,0,1,0,100,200,300,1
이렇게 나온단 얘기입니다... 이 외에도 많은 메소드 들이 있는데 그 녀석들이 복잡한 행렬연산을 대신하기 위해 있습니다.
뭐, 어렵죠? 저도 어렵습니다
그러니 어려운 행렬 계산은 컴퓨터에 맞기고, 우리는 3d 공부나 하는 것이... 아 3d가 더 어려운가...
암튼 내용이 길어지니 오늘은 Matrix3D 맛배기만... (사실, 저도 행렬을 잘 몰라 공부하며 쓴거라... 더 공부해야 2편을 쓸 수 있다는...)
p.s. 웬지 써놓고 보니, 자주 쓰이는 플래시 수학은 아닌듯하다는... 게다가 스터디에도 딱히 필요 없을 것도 같다는...