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

📄 common.cpp

📁 该程序用来完成蜗杆齿面的计算
💻 CPP
字号:
#include "stdafx.h"
#include "Common.h"
#include <math.h>
#include "GISVector.h"
#include "GISMatrix.h"
//#include "hoopsDoc.h"
#include "Common.h"



double Dms2Rad(double angle)
{
	int degree=0,sign=0; 
	double minute=0.0,ang=0.0;
	if (angle >= 0.0)
		sign=1;
	else
		sign=-1;
	angle=fabs(angle);
	degree=angle;
	minute=angle-degree;
	ang=degree + minute/0.60;
	ang /= Rad;
	return ang*sign;
}

double Rad2Dms(double angle)
{
	int degree=0,sign=0; 
	double minute=0.0,ang=0.0;
	if (angle >= 0.0)
		sign=1;
	else
		sign=-1;
	angle=fabs(angle*Rad);
	degree=angle;
	minute=angle-degree;
	ang=degree + ((int)(minute*60+0.5))/100.0;
	return ang*sign;
}

int Agaus(double a[], double b[], int n)
{ 
	int *js,l,k,i,j,is,p,q;
	double d,t;
	js=new int[n];
	l=1;
	for (k=0;k<=n-2;k++)
	{ 
		d=0.0;
		for (i=k;i<=n-1;i++)
			for (j=k;j<=n-1;j++)
			{ 
				t=fabs(a[i*n+j]);
				if (t>d) 
				{ 
					d=t; js[k]=j; is=i;
				}
			}
		if (d+1.0==1.0) 
			l=0;
		else
		{ 
			if (js[k]!=k)
				for (i=0;i<=n-1;i++)
				{ 
					p=i*n+k; q=i*n+js[k];
					t=a[p]; a[p]=a[q]; a[q]=t;
				}
			if (is!=k)
			{ 
				for (j=k;j<=n-1;j++)
				{ 
					p=k*n+j; q=is*n+j;
					t=a[p]; a[p]=a[q]; a[q]=t;
				}
				t=b[k]; b[k]=b[is]; b[is]=t;
			}
		}
		if (l==0)
		{ 
			delete []js;
			// printf("fail\n");
			return(0);
		}
		d=a[k*n+k];
		for (j=k+1;j<=n-1;j++)
		{ 
			p=k*n+j; a[p]=a[p]/d;
		}
		b[k]=b[k]/d;
		for (i=k+1;i<=n-1;i++)
		{
			for (j=k+1;j<=n-1;j++)
			{ 
				p=i*n+j;
				a[p]=a[p]-a[i*n+k]*a[k*n+j];
			}
			b[i]=b[i]-a[i*n+k]*b[k];
		}
	}
	d=a[(n-1)*n+n-1];
	if (fabs(d)+1.0==1.0)
	{ 
		delete []js;
		// printf("fail\n");
		return(0);
	}
	b[n-1]=b[n-1]/d;
	for (i=n-2;i>=0;i--)
	{ 
		t=0.0;
		for (j=i+1;j<=n-1;j++)
			t=t+a[i*n+j]*b[j];
		b[i]=b[i]-t;
	}
	js[n-1]=n-1;
	for (k=n-1;k>=0;k--)
		if (js[k]!=k)
		{ 
			t=b[k]; b[k]=b[js[k]]; b[js[k]]=t;
		}
	delete []js;
	return(1);
}

CVector VecAdd(CVector v1, CVector v2)
{
	CVector v;
	v.x=v1.x+v2.x;
	v.y=v1.y+v2.y;
	v.z=v1.z+v2.z;
	return v;
}

CVector VecCross(CVector v1, CVector v2)
{
	CVector v;
	v.x=v1.y*v2.z-v1.z*v2.y;
	v.y=v1.z*v2.x-v1.x*v2.z;
	v.z=v1.x*v2.y-v1.y*v2.x;
	return v;
}

CVector VecAdd2(double r1, CVector v1, double r2, CVector v2)
{
	CVector v;
	v.x=r1*v1.x+r2*v2.x;
	v.y=r1*v1.y+r2*v2.y;
	v.z=r1*v1.z+r2*v2.z;
	return v;
}

CVector VecSub(CVector v1, CVector v2)
{
	CVector v;
	v.x=v1.x-v2.x;
	v.y=v1.y-v2.y;
	v.z=v1.z-v2.z;
	return v;
}

double VecDot(CVector v1, CVector v2)
{
	return v1.x*v2.x+v1.y*v2.y+v1.z*v2.z;
}

double Rndf(double r)
{
	/*double fr=0.0, constant=0.0;

	if (Metric == 0) 
		constant=100.0;
	else
		constant=100000.0;

	if (r <= 0.0)
		fr=-int(fabs(r)*constant+0.5)/constant;
	else
		fr=int(r*constant+0.5)/constant;

	return fr;*/
	return NULL;
}





void ff1(double *Vector,double g[2] )
{
    double *p;
	p=Vector;
	g[0]=5*(*p)-(*(p+1))*(*(p+1))-1.0;
	g[1]=4*(*p)*(*p)-2*(*(p+1));

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -