CAD쪽의 프로그래밍을 하다 보니 ENTITY들의 VOLUME을 다뤄야 할 일이 많이 생깁니다.
그래서 VOLUME에 관한 클래스를 하나 작성할려고 마음먹고 코딩에 들어갔습니다.
우선은 VOLUME은 MIN , MAX를 가지고 있으므로,
를 멤머 변수로 두고 기본 생성자에서 멤버 변수들을 0으로 세트했습니다.
얼핏 볼때 문제가 없었지만 정점 하나를 포함하는 VOLUME과 아무것도 포함하지 않는 VOLUME
의 구별이 되지 않는 문제점이 드러났습니다. 이것은 상당히 큰 문제점이다.
이러한 문제를 해결하기 위해 고민끝에 매개변수를 수정하기로 했습니다.
m_width , m_height , m_depth는 -1로 세트했습니다.
m_width , m_height , m_depth의 값이 모두 -1일 경우에는
VOLUME이 아무것도 포함하지 않는다는 것을 의미합니다.
이렇게 수정함으로써 위에서 불거졌던 문제점을 해결할 수 있었습니다.
첨부 파일
그래서 VOLUME에 관한 클래스를 하나 작성할려고 마음먹고 코딩에 들어갔습니다.
우선은 VOLUME은 MIN , MAX를 가지고 있으므로,
private:
double m_minx , m_maxx;
double m_miny , m_maxy;
double m_minz , m_maxz;
를 멤머 변수로 두고 기본 생성자에서 멤버 변수들을 0으로 세트했습니다.
얼핏 볼때 문제가 없었지만 정점 하나를 포함하는 VOLUME과 아무것도 포함하지 않는 VOLUME
의 구별이 되지 않는 문제점이 드러났습니다. 이것은 상당히 큰 문제점이다.
CIsVolume vol;
vol.Add(CIsPoint3d(100 , 100 , 100));
와CIsVolume vol;
vol.Add(CIsPoint3d(0 , 0 , 0));
vol.Add(CIsPoint3d(100 , 100 , 100));
이 같은 결과를 가지게 됩니다.이러한 문제를 해결하기 위해 고민끝에 매개변수를 수정하기로 했습니다.
private:
double m_x , m_y , m_z;
double m_width , m_height , m_depth;
를 매개 변수로 두고 기본 생성자에서 m_x , m_y , m_z는 0으로m_width , m_height , m_depth는 -1로 세트했습니다.
m_width , m_height , m_depth의 값이 모두 -1일 경우에는
VOLUME이 아무것도 포함하지 않는다는 것을 의미합니다.
이렇게 수정함으로써 위에서 불거졌던 문제점을 해결할 수 있었습니다.
댓글
댓글 쓰기