增加CNC运行测试

This commit is contained in:
TAO Cheng
2013-07-11 22:08:30 +08:00
parent d5bfc97a9a
commit 2e237bf90f
43 changed files with 4393 additions and 48 deletions
@@ -0,0 +1,110 @@
#pragma once
#ifndef CPOINT3_H
#define CPOINT3_H
#include <afx.h>
#include "afxdisp.h"
//#define CPOINT3_DEBUG_CHECKS
#ifdef CPOINT3_DEBUG_CHECKS
#include <cfloat>
#endif
//#pragma warning (disable:4270) // we don't care about non-const initializers, as we do use them
class CPoint3: public CObject
{
public:
CPoint3(void);
// default object
CPoint3(const CPoint3& t);
// copy constructors
CPoint3(const double* t);
// Conversion from array
CPoint3(const double x, const double y, const double z);
CPoint3(const float* pts);
// Conversoin from array of floats
~CPoint3(void);
operator const double *(void) const; // subscript operator and
operator double *(void); // subscript operator and
// conversion to array/pointer
friend CPoint3 operator* (const CPoint3 &t, double mult); // scalar multiply
friend CPoint3 operator* (double mult, const CPoint3 &t); // scalar multiply
friend CPoint3 operator+(const CPoint3 &t, double offset); // add offset pointwise
friend CPoint3 operator+(double offset, const CPoint3 &t); // add offset pointwise
friend CPoint3 operator-(const CPoint3 &t, double offset); // subtract offset pointwise
friend CPoint3 operator-(double offset, const CPoint3 &t); // subtract offset pointwise
CPoint3& operator*=(double mult); // scalar multiply and assignment
CPoint3& operator*=(const CPoint3 &t); // point wise multiplication and assignment
friend CPoint3 operator/(const CPoint3 &, double divisor); // scalar divide
CPoint3& operator/=(const CPoint3 &t); // point wise divide and assignment
CPoint3& operator/=(double divisor); // scalar divide and assignment
friend double operator* (const CPoint3 &t, const CPoint3 &u); // dot product
friend CPoint3 operator+(const CPoint3 &t, const CPoint3 &u); // pointwise addition
CPoint3& operator+=(const CPoint3 &t); // pointwise addition and assignment
CPoint3& operator+=(const double* t);
CPoint3& operator+=(double offset); // add offset pointwise
friend CPoint3 operator-(const CPoint3 &t, const CPoint3 &u); // pointwise subtraction
CPoint3 operator-(void); // additive inverse
CPoint3& operator-=(const CPoint3 &t); // pointwise subtraction and assignment
friend void operator << (CArchive &InArch , CPoint3 & InPnt); // write a CPoint3
friend void operator >>(CArchive &InArch , CPoint3 & InPnt); // read a CPoin3
CPoint3& operator-=(const double* t);
CPoint3& operator-=(double offset); // subtract offset pointwise.
CPoint3& operator=(const CPoint3& t); // assignment Needed a const operator for use
// with CArray - TJ
CPoint3& operator=(const double* t); // assignment
CPoint3& operator=(const double t); // assignment
CPoint3& operator=(const float* t);
bool operator==(const CPoint3 &t) const; // test for equality
bool operator!=(const CPoint3 &t) const; // test for inequality
void display(void); // debugging function
void Serialize(CArchive & archive); // the ubiquitous function for IO
double norm(void) const; // return the norm of this object
double norm2(void) const; // return the squared norm of this object
double normalize(void); // normalize and return old norm.
double Normalize(double dbEpsilon);
CPoint3 crossOnly(const CPoint3 &u) const; // cross, but do not normalize.
CPoint3 cross(const CPoint3 &u) const; // cross product m_data x v normalized.
CPoint3 cross2(const CPoint3 &u) const; // cross product m_data x v normalized and can be (0, 0, 0)
double maxabs(int* Index = NULL) const; // return the value of the largest absulute
double minabs(int* Index = NULL) const; // return the value of the smallest absulute
void setXYZ(double x, double y, double z);
double angleBetween(const CPoint3 &inPoint);
CPoint3 constructOrthogonalVector(void);
// value coordinate
friend double distance(const CPoint3 &t, const CPoint3 &u)
{
return ((t - u).norm());
}
#ifdef CPOINT3_DEBUG_CHECKS
bool IsValid(void) const
{
if(this)
return (_finite(m_data[0]) && _finite(m_data[1]) && _finite(m_data[2]));
return false;
}
#endif
BOOL toVARIANT(VARIANT *pv);
BOOL fromVARIANT(VARIANT pv);
double x;
double y;
double z;
};
#endif