Matrix3 연산자 비교?
연산자 비교를 하면 보통은 값을 비교하게 됩니다.
a = 1
b = 1
a == b
true
간단하죠.
그런데Matrix3의 연산자 비교는 좀 다릅니다.
Matrix3를 연산자로 비교할 때는 값을 비교하는 것이 아닌 메모리상의 주소를 비교 합니다.
a = $.transform
b = $.transform
a == b
false
메모리 상의 주소가 같지 않아서 false 입니다.
a = $.transform
b = a
a == b
true
메모리 상의 주소가 같아서 true 입니다.
$.transform이라고 하면 Matrix3값을 리턴 하면서 메모리 주소에 등록 됩니다.
한번 더 $.transform을 하면 리턴 되는 값을 또 다시 다른 메모리 주소에 등록 합니다.
같은 값이지만 메모리 주소가 다릅니다.
Matrix3을 직접 쓰려면
a = $.transform
b = $.transform
1. isIdentity (a * inverse b)
2. a.row1 == b.row1 and a.row2 == b.row2 and a.row3 == b.row3 and a.row4 == b.row4
3. a as string == b as string
이런식으로 써야 합니다.
Matrix를 곱하다보면 부동소수점 오류로 인해 false가 나올 수 있는데요.
이럴 경우 소수점을 잘라서 비교를 해야 합니다.
Maxrix3 연산자 비교를 왜 이런식으로 만들었지는 모르겠네요.;;
'Max' 카테고리의 다른 글
Maxscript) 긴 배열을 문자열 그대로 변환하기 (0) | 2016.11.22 |
---|---|
Maxscript) Mirror Copy (본의 미러링과 키 복사) (3) | 2016.08.02 |
Maxscript) Time Config 기능 추가 (프레임 단위로 화면 확인하는 기능) (0) | 2016.03.30 |
Maxscript) editText의 Enter 처리방식[팁] (0) | 2015.05.12 |
Maxscript 메인 툴바에 메뉴 등록하기 (0) | 2015.02.06 |