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 연산자 비교를 왜 이런식으로 만들었지는 모르겠네요.;;

Posted by Hwanggoon
,