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

📄 niehefangchengdoc.cpp

📁 该程序用来完成蜗杆齿面的计算
💻 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 + -