📄 controlpoint.cpp
字号:
// ControlPoint.cpp: implementation of the CControlPoint class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Dan_backcom.h"
#include "ControlPoint.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#include "math.h"
CControlPoint::CControlPoint(double a,double b,double Atp,double Btp,double Ctp)
{
x = a;
y = b;
Xtp = Atp;
Ytp = Btp;
Ztp = Ctp;
CDan_backcomApp *app=(CDan_backcomApp*)AfxGetApp();
XX = app->m_a1*(Xtp - app->m_Xs) + app->m_b1*(Ytp - app->m_Ys)+ app->m_c1*(Ztp - app->m_Zs);
YY = app->m_a2*(Xtp - app->m_Xs) + app->m_b2*(Ytp - app->m_Ys)+ app->m_c2*(Ztp - app->m_Zs);
ZZ = app->m_a3*(Xtp - app->m_Xs) + app->m_b3*(Ytp - app->m_Ys)+ app->m_c3*(Ztp - app->m_Zs);
if(ZZ==0||app->m_f==0)
{
AfxMessageBox("输入数据不合理!");
return;
}
else
{
a11 = (app->m_a1*app->m_f+app->m_a3*x)/ZZ;
a12 = (app->m_b1*app->m_f+app->m_b3*x)/ZZ;
a13 = (app->m_c1*app->m_f+app->m_c3*x)/ZZ;
a21 = (app->m_a2*app->m_f+app->m_a3*y)/ZZ;
a22 = (app->m_b2*app->m_f+app->m_b3*y)/ZZ;
a23 = (app->m_c2*app->m_f+app->m_c3*y)/ZZ;
a14 = y*sin(app->m_jiaoy) - (x*(x*cos(app->m_jiaoz) - y*sin(app->m_jiaoz))/app->m_f + app->m_f*cos(app->m_jiaoz))*cos(app->m_jiaoy);
a15 = -app->m_f*sin(app->m_jiaoz) - x*(x*sin(app->m_jiaoz) + y*cos(app->m_jiaoz))/app->m_f;
a16 = y;
a24 = -x*sin(app->m_jiaoy) - (x*(x*cos(app->m_jiaoz) - y*sin(app->m_jiaoz))/app->m_f - app->m_f*sin(app->m_jiaoz))*cos(app->m_jiaoy);
a25 = -app->m_f*cos(app->m_jiaoz) - y*(x*sin(app->m_jiaoz) + y*cos(app->m_jiaoz))/app->m_f;
a26 = -x;
}
}
CControlPoint::~CControlPoint()
{
}
Matrixs CControlPoint::A()
{
Matrixs C(2,6);
C(1,1) = a11;
C(1,2) = a12;
C(1,3) = a13;
C(1,4) = a14;
C(1,5) = a15;
C(1,6) = a16;
C(2,1) = a21;
C(2,2) = a22;
C(2,3) = a23;
C(2,4) = a24;
C(2,5) = a25;
C(2,6) = a26;
return C;
}
Matrixs CControlPoint::l()
{
CDan_backcomApp * app = (CDan_backcomApp *)AfxGetApp();
Matrixs C(2,1);
C(1,1) = x + app->m_f * XX/ZZ;
C(2,1) = y + app->m_f * YY/ZZ;
return C;
}
CControlPoint::CControlPoint(CControlPoint& c)
{
x = c.x;
y = c.y;
Xtp = c.Xtp;
Ytp = c.Ytp;
Ztp = c.Ztp;
XX = c.XX;
YY = c.YY;
ZZ = c.ZZ;
a11 = c.a11;
a12 = c.a12;
a13 = c.a13;
a14 = c.a14;
a15 = c.a15;
a16 = c.a16;
a21 = c.a21;
a22 = c.a22;
a23 = c.a23;
a24 = c.a24;
a25 = c.a25;
a26 = c.a26;
}
CControlPoint& CControlPoint::operator =(CControlPoint& c)
{
x = c.x;
y = c.y;
Xtp = c.Xtp;
Ytp = c.Ytp;
Ztp = c.Ztp;
XX = c.XX;
YY = c.YY;
ZZ = c.ZZ;
a11 = c.a11;
a12 = c.a12;
a13 = c.a13;
a14 = c.a14;
a15 = c.a15;
a16 = c.a16;
a21 = c.a21;
a22 = c.a22;
a23 = c.a23;
a24 = c.a24;
a25 = c.a25;
a26 = c.a26;
return *this;
}
CControlPoint CControlPoint::operator ^(Matrixs c)
{
if(c.rows!=2||c.cols!=1)
{
return *this; //出错
}
else
{
CDan_backcomApp *app=(CDan_backcomApp*)AfxGetApp();
CControlPoint cc;
cc.x = x + c.elems[0];
cc.y = y + c.elems[1];
cc.Xtp = Xtp;
cc.Ytp = Ytp;
cc.Ztp = Ztp;
cc.XX = app->m_a1*(Xtp - app->m_Xs) + app->m_b1*(Ytp - app->m_Ys)+ app->m_c1*(Ztp - app->m_Zs);
cc.YY = app->m_a2*(Xtp - app->m_Xs) + app->m_b2*(Ytp - app->m_Ys)+ app->m_c2*(Ztp - app->m_Zs);
cc.ZZ = app->m_a3*(Xtp - app->m_Xs) + app->m_b3*(Ytp - app->m_Ys)+ app->m_c3*(Ztp - app->m_Zs);
cc.a11 = (app->m_a1*app->m_f+app->m_a3*cc.x)/ZZ;
cc.a12 = (app->m_b1*app->m_f+app->m_b3*cc.x)/ZZ;
cc.a13 = (app->m_c1*app->m_f+app->m_c3*cc.x)/ZZ;
cc.a21 = (app->m_a2*app->m_f+app->m_a3*cc.y)/ZZ;
cc.a22 = (app->m_b2*app->m_f+app->m_b3*cc.y)/ZZ;
cc.a23 = (app->m_c2*app->m_f+app->m_c3*cc.y)/ZZ;
cc.a14 = cc.y*sin(app->m_jiaoy) - (cc.x*(cc.x*cos(app->m_jiaoz) - cc.y*sin(app->m_jiaoz))/app->m_f + app->m_f*cos(app->m_jiaoz))*cos(app->m_jiaoy);
cc.a15 = -app->m_f*sin(app->m_jiaoz) - cc.x*(cc.x*sin(app->m_jiaoz) + cc.y*cos(app->m_jiaoz))/app->m_f;
cc.a16 = cc.y;
cc.a24 = -cc.x*sin(app->m_jiaoy) - (cc.x*(x*cos(app->m_jiaoz) - cc.y*sin(app->m_jiaoz))/app->m_f - app->m_f*sin(app->m_jiaoz))*cos(app->m_jiaoy);
cc.a25 = -app->m_f*cos(app->m_jiaoz) - cc.y*(cc.x*sin(app->m_jiaoz) + cc.y*cos(app->m_jiaoz))/app->m_f;
cc.a26 = -cc.x;
return cc;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -