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 변수 때문에 너무 헷갈리네요.. 왜 생성자에서 쓰이지 않았는지 ㅠ

 

 

그냥 한번 이해하면 쭉쭉 풀릴 것 같은데.. 수학을 못해서 그런가 이해가 잘 안가네요ㅠㅠ

 

저 부분만 설명 좀 해주실 형님 있ㅇ으신가요