template <class T> struct tvec2
{
union{ struct { T r, g; }; struct { T x, y; }; };
// constructor/set
tvec2(){ x=y=0; }
tvec2( T a ){ x=y=a; } inline void set( T a ){ x=y=a; }
tvec2( T a, T b ){ x=a;y=b; } inline void set( T a, T b ){ x=a;y=b; }
tvec2( const tvec2& v ){ x=v.x;y=v.y; } inline void set( const tvec2& v ){ x=v.x;y=v.y; }
tvec2( const T* a ){ x=a[0];y=a[1]; } inline void set( const T* a ){ x=a[0];y=a[1]; }
2d벡터 Operation overloading 코드 중 일부분 인데요
제가 헷갈리는게 union{ struct { T r, g; }; struct { T x, y; }; }; 에서 r,g,x,y 가 정확히 뜻하는 것이랑..
밑의 생성자의 '원리'는 당연히 이해가는데 위의 union의 r,g 변수 때문에 너무 헷갈리네요.. 왜 생성자에서 쓰이지 않았는지 ㅠ
그냥 한번 이해하면 쭉쭉 풀릴 것 같은데.. 수학을 못해서 그런가 이해가 잘 안가네요ㅠㅠ
저 부분만 설명 좀 해주실 형님 있ㅇ으신가요
이해가 갈듯 말듯 하네요.. vec3 소스는 r,g,b 랑 x,y,z 이렇게 union해서 쓰던데.. 딱히 왜 저렇게 쓰는지 모르겠네여 아무튼 답변 감사감사
inline T& operator[](int i){ return (&r)[i]; }
이런식으로 접근하던데.. 주소값으로 접근하려고 쓰는거 같기도 하고