📄 niehefangchengdoc.cpp
字号:
// niehefangchengDoc.cpp : implementation of the CNiehefangchengDoc class
//
#include "stdafx.h"
#include "niehefangcheng.h"
#include "Common.h"
#include "niehefangchengDoc.h"
#include "GISVector.h"
#include "GISMatrix.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNiehefangchengDoc
IMPLEMENT_DYNCREATE(CNiehefangchengDoc, CDocument)
BEGIN_MESSAGE_MAP(CNiehefangchengDoc, CDocument)
//{{AFX_MSG_MAP(CNiehefangchengDoc)
ON_COMMAND(IDC_Niehefangcheng, OnNiehefangcheng)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNiehefangchengDoc construction/destruction
CNiehefangchengDoc::CNiehefangchengDoc()
{
// TODO: add one-time construction code here
}
CNiehefangchengDoc::~CNiehefangchengDoc()
{
}
BOOL CNiehefangchengDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CNiehefangchengDoc serialization
void CNiehefangchengDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CNiehefangchengDoc diagnostics
#ifdef _DEBUG
void CNiehefangchengDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CNiehefangchengDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CNiehefangchengDoc commands
void CNiehefangchengDoc::OnNiehefangcheng()
{
int n1=1000,n2=50,n3=1000;
CVector VR1,VR2;
double dafai;
double u,v;
double angle;
FILE *file1;
FILE *file2;
FILE *file3;
file1=fopen("tp_1.txt","w+");
file2=fopen("tp_2.txt","w+");
file3=fopen("tp_3.txt","w+");
for (angle=0.0;angle<=60.0;angle+=(60.0-0.0)/n1)
{
for (u=227.37;u<=252.72;u+=(252.72-227.37)/n2)
{
for (v=-80.0;v<=80.0;v+=160.0/n3)
{
niehefangcheng(u,v,dafai,VR1,VR2,angle);
if(fabs(dafai)<=0.00001)break;
}
fprintf(file1,"%8.4f %8.4f %8.4f\n",VR2.x,VR2.y,VR2.z);
fprintf(file2,"%8.4f %8.4f %8.4f\n",VR1.x,VR1.y,VR1.z);
fprintf(file3,"%8.4f %8.4f\n",u,v);
}
}
fclose(file1);
fclose(file2);
fclose(file3);
}
void CNiehefangchengDoc::niehefangcheng(double u,double v,double &dafai,CVector&VR1,CVector&VR2,double angle)
{
double fai2,fai1,aif,beita;
double d,i;
CVector VR,VRd;
CVector VN;
CVector VV21;
CVector Vw1,Vw2;
CVector VE;
VR.Set(0.0,u,v);
beita=Dms2Rad(8.18);
VR.RotateAboutYbyAng(-beita);
d=190.4;
VRd.Set(d/2,0.0,0.0);
VR2=VecAdd(VR,VRd);
//VR.RotateCoordSysAboutZbyAng(aif);
fai2=Dms2Rad(angle);
VR2.RotateAboutZbyAng(fai2);
VN.Set(1.0,0.0,0.0);
VN.RotateAboutYbyAng(-beita);
//VN.RotateCoordSysAboutZbyAng(aif);
VN.RotateAboutZbyAng(fai2);
i=51.0;
fai1=i*fai2;
VR1.RotateAboutXbyAng(fai1);
VE.Set(0.0,310.0,0.0);
VR1=VecSub(VR2,VE);
Vw1.Set(i,0.0,0.0);
Vw2.Set(0.0,0.0,1.0);
VV21=VecSub(VecCross(Vw2,VR2),VecCross(Vw1,VR1));
dafai=VecDot(VN,VV21);
VR2.RotateAboutZbyAng(-fai2);
VR1.RotateAboutXbyAng(-fai1);
//////////////////////////////////////////////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -