IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
KNGeometricCoordination.cpp
Go to the documentation of this file.
1 
7 #include "stdafx.h"
8 #include <math.h>
10 
12 {
13  m_fCoordination[_X] = 0;
14  m_fCoordination[_Y] = 0;
15  m_fCoordination[_Z] = 0;
16 }
17 
19 {
20 }
21 
25 void CKNGeometricCoordination::SetCoordination(double* pfCoordination)
26 {
27  m_fCoordination[_X] = pfCoordination[0];
28  m_fCoordination[_Y] = pfCoordination[1];
29  m_fCoordination[_Z] = pfCoordination[2];
30 }
31 
37 void CKNGeometricCoordination::SetCoordination(double fXCoordination, double fYCoordination, double fZCoordination)
38 {
39  m_fCoordination[_X] = fXCoordination;
40  m_fCoordination[_Y] = fYCoordination;
41  m_fCoordination[_Z] = fZCoordination;
42 }
43 
49 {
50  return m_fCoordination[coord];
51 }
52 
58 {
59  switch (axis)
60  {
61  case _X:
62  m_fCoordination[_Y] = m_fCoordination[_Y] * cos(fDegree) - m_fCoordination[_Z] * sin(fDegree);
63  m_fCoordination[_Z] = m_fCoordination[_Y] * sin(fDegree) + m_fCoordination[_Z] * cos(fDegree);
64  break;
65  case _Y:
66  m_fCoordination[_Z] = m_fCoordination[_Z] * cos(fDegree) - m_fCoordination[_X] * sin(fDegree);
67  m_fCoordination[_X] = m_fCoordination[_Z] * sin(fDegree) + m_fCoordination[_X] * cos(fDegree);
68  break;
69  case _Z:
70  m_fCoordination[_X] = m_fCoordination[_X] * cos(fDegree) - m_fCoordination[_Y] * sin(fDegree);
71  m_fCoordination[_Y] = m_fCoordination[_X] * sin(fDegree) + m_fCoordination[_Y] * cos(fDegree);
72  break;
73  }
74 }
75 
80 {
82 }
83 
89 void CKNGeometricCoordination::SetOffset(double fXCoordination, double fYCoordination, double fZCoordination)
90 {
91  m_fCoordination[_X] += fXCoordination;
92  m_fCoordination[_Y] += fYCoordination;
93  m_fCoordination[_Z] += fZCoordination;
94 }
95 
99 void CKNGeometricCoordination::SetRatio(double fRatio[3])
100 {
101  m_fCoordination[_X] *= fRatio[_X];
102  m_fCoordination[_Y] *= fRatio[_Y];
103  m_fCoordination[_Z] *= fRatio[_Z];
104 }
105 
111 {
112  double *fCompare = compare.GetCoordinationAll();
113  double fTolerance = 1e-8;
114 
115  if (fabs(m_fCoordination[_X] - fCompare[_X]) > fTolerance)
116  return false;
117 
118  if (fabs(m_fCoordination[_Y] - fCompare[_Y]) > fTolerance)
119  return false;
120 
121  if( fabs(m_fCoordination[_Z] - fCompare[_Z]) > fTolerance)
122  return false;
123 
124  return true;
125 }
126 
132 {
133  return IsSame(compare);
134 }
135 
141 {
142  return !IsSame(compare);
143 }
Class for coordination.
Class for coordination.
Definition: CKNGlobal.h:105
int compare(const void *pA, const void *pB)
void SetOffset(CKNGeometricCoordination coord)
To offset coordination.
Definition: CKNGlobal.h:105
double m_fCoordination[3]
Cooridnation for x, y, z direction.
Definition: CKNGlobal.h:105
AXIS_DEFINE
Definition: CKNGlobal.h:105
bool IsSame(CKNGeometricCoordination compare)
Comparing coordination is same or not within tolerance.
void Rotate(AXIS_DEFINE axis, double fDegree)
Rotate coordination with specific degree.
double GetCoordination(AXIS_DEFINE coord)
Get coordination specific axis.
bool operator!=(const CKNGeometricCoordination &compare)
Comparing coordination is same or not within tolerance.
void SetCoordination(CKNGeometricCoordination coordination)
Get coordination with double buffer.
bool operator==(const CKNGeometricCoordination &compare)
Comparing coordination is same or not within tolerance.
void SetRatio(double fRatio[3])
Set ratio.