⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controlpoint.cpp

📁 Moravec算子实现程序 Moravec算子实现程序
💻 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 + -