亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cadbase.cpp

?? 用vc編的stlview著重版
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
#include "stdafx.h"
#include "../inc/geomcalc/cadbase.h"
#include "math.h"

/***********************************************************************************
/
/   CLASS NAME: CPoint2D
/	CLASS DESCRIPATION: Designed for 2 dimensional point
/   CREATED BY: Olive Wang in Apr.28,2000
/   MODIFIED BY:
*************************************************************************************/

// constructor && destructor
CPoint2D::CPoint2D()
{
	x=0.0;
	y=0.0;
}

CPoint2D::CPoint2D(double ix,double iy)
{
	x = ix;
	y = iy;
}

CPoint2D::CPoint2D(const double*p)
{
	x=p[0];
	y=p[1];
}

CPoint2D::CPoint2D(POINT2D p)
{
	x=p.x;
	y=p.y;
}

CPoint2D::~CPoint2D()
{
}


// offsetting with vector
CPoint2D CPoint2D::operator+(VECTOR2D v) const
{
	return CPoint2D(x+v.dx,y+v.dy);
}

void CPoint2D::operator+=(VECTOR2D v)
{
	x+=v.dx;
	y+=v.dy;
}

CPoint2D CPoint2D::operator-(VECTOR2D v) const
{
	return CPoint2D(x-v.dx,y-v.dy);
}

void CPoint2D::operator-=(VECTOR2D v)
{
	x+=v.dx;
	y+=v.dy;
}


// derive vector = this point - sp
CVector2D CPoint2D::operator-(POINT2D sp) const
{
	return CVector2D(x-sp.x,y-sp.y);
}

// transform the point
CPoint2D CPoint2D::operator*(const MATRIX2D& matrix) const
{
	double xx,yy,sc;
	xx = x*matrix.A[0][0]+y*matrix.A[1][0] + matrix.A[2][0];
	yy = x*matrix.A[0][1]+y*matrix.A[1][1] + matrix.A[2][1];
	sc = x*matrix.A[0][2]+y*matrix.A[1][2] + matrix.A[2][2];
	xx /= sc;
	yy /= sc;
	return CPoint2D(xx,yy);
}

void  CPoint2D::operator*=(const MATRIX2D& matrix)
{
	(*this)=(*this)*matrix;
}
/**********************************************************************************
//
//     CLASS NAME: CVector2D
//     DESCRIPTION: designed for 2 dimensional vector
//     CREATED BY: Olive Wang in April 28,2000
//     MODIFIED BY:
//
***********************************************************************************/
// constructor&&destructor
CVector2D::CVector2D()
{
	dx=0.0;
	dy=0.0;
}

CVector2D::CVector2D(double ix,double iy)
{
	dx=ix;
	dy=iy;
}

CVector2D::CVector2D(const double* pv)
{
	dx=pv[0];
	dy=pv[1];
}

CVector2D::CVector2D(VECTOR2D v)
{	
	dx=v.dx;
	dy=v.dy;
}

CVector2D::~CVector2D()
{
}

CVector2D CVector2D::operator+(VECTOR2D v) const
{
	return CVector2D(dx+v.dx,dy+v.dy);
}

CVector2D CVector2D::operator-(VECTOR2D v) const
{
	return CVector2D(dx-v.dx,dy-v.dy);
}

void CVector2D::operator+=(VECTOR2D v)
{
	dx += v.dx;
	dy += v.dy;
}

void CVector2D::operator-=(VECTOR2D v)
{
	dx-=v.dx;
	dy-=v.dy;
}

CVector2D CVector2D::operator*(double d) const
{
	return CVector2D(dx*d,dy*d);
}

void CVector2D::operator*=(double d)
{
	dx *= d;
	dy *= d;
}

CVector2D CVector2D::operator/(double d) const
{
	return CVector2D(dx/d,dy/d);
}
	
void CVector2D::operator/=(double d)
{
	dx /= d;
	dy /= d;
}

// cross product
CVector3D CVector2D::operator*(VECTOR2D v) const
{
	return CVector3D(0.0,0.0,dx*v.dy-v.dx*dy);
}
	
// dot product
double CVector2D::operator|(VECTOR2D v) const
{
	return dx*v.dx+dy*v.dy;
}


//matrix transform
CVector2D CVector2D::operator*(const MATRIX2D& matrix) const
{
	double x,y,sc;
	x = dx*matrix.A[0][0]+dy*matrix.A[1][0] + matrix.A[2][0];
	y = dx*matrix.A[0][1]+dy*matrix.A[1][1] + matrix.A[2][1];
	sc= dx*matrix.A[0][2]+dy*matrix.A[1][2] + matrix.A[2][2];
	x /= sc;
	y /= sc;
	return CVector2D(x,y);
}

void CVector2D::operator*=(const MATRIX2D& matrix)
{
	(*this)=(*this)*matrix;
}

double CVector2D::GetLength() const
{
	return sqrt(dx*dx+dy*dy);
}

CVector2D CVector2D::GetNormal() const
{
	double len = GetLength();
	return CVector2D(dx/len,dy/len);
}

void CVector2D::Normalize()
{
	double len = GetLength();
	dx = dx/len;
	dy = dy/len;
}

BOOL CVector2D::IsZeroLength() const
{
	return IS_ZERO(GetLength());
}

/***********************************************************************************
/
/   CLASS NAME: CPoint3D
/	CLASS DESCRIPATION: Designed for 2 dimensional point
/   CREATED BY: Olive Wang in Apr.28,2000
/   MODIFIED BY:
*************************************************************************************/

// constructor && destructor
CPoint3D::CPoint3D()
{
	x=0.0;
	y=0.0;
	z=0.0;
}

CPoint3D::CPoint3D(double ix,double iy,double iz)
{
	x = ix;
	y = iy;
	z = iz; 
}

CPoint3D::CPoint3D(const double*p)
{
	x=p[0];
	y=p[1];
	z=p[2];
}

CPoint3D::CPoint3D(POINT3D p)
{
	x=p.x;
	y=p.y;
	z=p.z;
}

CPoint3D::~CPoint3D()
{
}

//operators
CPoint3D CPoint3D::operator*(const MATRIX3D& matrix) const
{
	double rx,ry,rz,sc;
	rx = x * matrix.A[0][0] + y * matrix.A[1][0] + z * matrix.A[2][0] + matrix.A[3][0];
	ry = x * matrix.A[0][1] + y * matrix.A[1][1] + z * matrix.A[2][1] + matrix.A[3][1];
	rz = x * matrix.A[0][2] + y * matrix.A[1][2] + z * matrix.A[2][2] + matrix.A[3][2];
	sc = x * matrix.A[0][3] + y * matrix.A[1][3] + z * matrix.A[2][3] + matrix.A[3][3];
	rx /= sc;
	ry /= sc;
	rz /= sc;
	return CPoint3D(rx,ry,rz);
}

void  CPoint3D::operator*=(const MATRIX3D& matrix)
{
	(*this) = (*this)*matrix;
}

// offsetting with vector
CPoint3D CPoint3D::operator+(VECTOR3D v) const
{
	return CPoint3D(x+v.dx,y+v.dy,z+v.dz);
}

void CPoint3D::operator+=(VECTOR3D v)
{
	x+=v.dx;
	y+=v.dy;
	z+=v.dz;
}

CPoint3D CPoint3D::operator-(VECTOR3D v) const
{
	return CPoint3D(x-v.dx,y-v.dy,z-v.dz);
}

void CPoint3D::operator-=(VECTOR3D v)
{
	x-=v.dx;
	y-=v.dy;
	z-=v.dz;
}


// derive vector = this point - sp
CVector3D CPoint3D::operator-(POINT3D sp) const
{
	return CVector3D(x-sp.x,y-sp.y,z-sp.z);
}

BOOL CPoint3D::operator==(POINT3D pos) const
{
	CVector3D  vect(x-pos.x,y-pos.y,z-pos.z);

	if( IS_ZERO( vect.GetLength( ) ) ) return TRUE;
	else return FALSE;

}
BOOL CPoint3D::operator!=(POINT3D pos) const
{
	CVector3D  vect(x-pos.x,y-pos.y,z-pos.z);

	if( IS_ZERO( vect.GetLength( ) ) ) return FALSE;
	else return TRUE;
}


/************************************************************************************
/	
/	CLASS NAME:  CVector3D
/   DESCRIPTION: designed for 3 dimensional vector
/   CREATED BY: Olive Wang in Apr.28,2000
/   MODIFIED By:
/
************************************************************************************/
// constructor&&destructor
CVector3D::CVector3D()
{
	dx=0.0;
	dy=0.0;
	dz=0.0;
}

CVector3D::CVector3D(double ix,double iy,double iz)
{
	dx=ix;
	dy=iy;
	dz=iz;
}

CVector3D::CVector3D(const double* pv)
{
	dx=pv[0];
	dy=pv[1];
	dz=pv[2];
}

CVector3D::CVector3D(VECTOR3D v)
{	
	dx=v.dx;
	dy=v.dy;
	dz=v.dz;
}

CVector3D::~CVector3D()
{
}

CVector3D CVector3D::operator+(VECTOR3D v) const
{
	return CVector3D(dx+v.dx,dy+v.dy,dz+v.dz);
}

CVector3D CVector3D::operator-(VECTOR3D v) const
{
	return CVector3D(dx-v.dx,dy-v.dy,dz-v.dz);
}

void CVector3D::operator+=(VECTOR3D v)
{
	dx += v.dx;
	dy += v.dy;
	dz += v.dz;
}

void CVector3D::operator-=(VECTOR3D v)
{
	dx -= v.dx;
	dy -= v.dy;
	dz -= v.dz;
}

CVector3D CVector3D::operator*(double d) const
{
	return CVector3D(dx*d,dy*d,dz*d);
}

void CVector3D::operator*=(double d)
{
	dx *= d;
	dy *= d;
	dz *= d;
}

CVector3D CVector3D::operator/(double d) const
{
	return CVector3D(dx/d,dy/d,dz/d);
}
	
void CVector3D::operator/=(double d)
{
	dx /= d;
	dy /= d;
	dz /= d;
}

// cross product
CVector3D CVector3D::operator*(VECTOR3D v) const
{
	return CVector3D(dy*v.dz-v.dy*dz,v.dx*dz-dx*v.dz,dx*v.dy-v.dx*dy);
}
	
// dot product
double CVector3D::operator|(VECTOR3D v) const
{
	return dx*v.dx+dy*v.dy+dz*v.dz;
}

//methods implementation
double CVector3D::GetLength() const
{
	return sqrt(dx*dx+dy*dy+dz*dz);
}

double CVector3D::GetLengthXY() const
{
	return sqrt(dx*dx+dy*dy);
}

double CVector3D::GetLengthYZ() const
{
	return sqrt(dy*dy+dz*dz);
}

double CVector3D::GetLengthZX() const
{
	return sqrt(dx*dx+dz*dz);
}

CVector3D CVector3D::GetNormal() const
{
	double len = GetLength();
	return CVector3D(dx/len,dy/len,dz/len);
}

void CVector3D::Normalize()
{
	double len = GetLength();
	dx /= len;
	dy /= len;
	dz /= len;
}

BOOL CVector3D::IsZeroLength() const
{
	return IS_ZERO(GetLength());
}

CVector3D CVector3D::operator*(const MATRIX3D& matrix) const
{
	double rx,ry,rz,sc;
	rx = dx * matrix.A[0][0] + dy * matrix.A[1][0] + dz * matrix.A[2][0] + matrix.A[3][0];
	ry = dx * matrix.A[0][1] + dy * matrix.A[1][1] + dz * matrix.A[2][1] + matrix.A[3][1];
	rz = dx * matrix.A[0][2] + dy * matrix.A[1][2] + dz * matrix.A[2][2] + matrix.A[3][2];
	sc = dx * matrix.A[0][3] + dy * matrix.A[1][3] + dz * matrix.A[2][3] + matrix.A[3][3];
	rx /= sc;
	ry /= sc;
	rz /= sc;
	return CVector3D(rx,ry,rz);
}

void  CVector3D::operator*=(const MATRIX3D& matrix)
{
	(*this) = (*this)*matrix;
}

/************************************************************************************
/	
/	CLASS NAME:  CMatrix2D
/   DESCRIPTION: designed for 2*2 dimensional matrix
/   CREATED BY: Olive Wang in Apr.28,2000
/   MODIFIED By:
/
************************************************************************************/

//construction&&destruction
CMatrix2D::CMatrix2D()
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++){
			if(i==j)
				A[i][j] = 1.0;
			else
				A[i][j] = 0.0;
		}
}

CMatrix2D::CMatrix2D(const MATRIX2D& matrix)
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			A[i][j]=matrix.A[i][j];
}

CMatrix2D::CMatrix2D(const double* matrix)
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			A[i][j]=matrix[i*3+j];
}


CMatrix2D::~CMatrix2D()
{
}

//operators
CMatrix2D CMatrix2D::operator*(const MATRIX2D& matrix2) const
{
	CMatrix2D matrix;
	for(int i=0;i<3;i++)
	for(int j=0;j<3;j++){
		matrix.A[i][j] = A[i][0]*matrix2.A[0][j]
					   + A[i][1]*matrix2.A[1][j]
					   + A[i][2]*matrix2.A[2][j];
	}
	return matrix;
}

void CMatrix2D::operator*=(const MATRIX2D& matrix2)
{
	(*this)=(*this)*matrix2;
}

//methods
void CMatrix2D::IdenticalMatrix()
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++){
			if(i==j)
				A[i][j] = 1.0;
			else
				A[i][j] = 0.0;
		}
}

double CMatrix2D::GetValue() const
{
	return A[0][0]*A[1][1]-A[0][1]*A[1][0];
}

// static member functions
double CMatrix2D::GetValue(double a00, double a01,
			   double a10, double a11)
{
	return a00*a11-a01*a10;
}

CMatrix2D CMatrix2D::CreateMirrorMatrix(VECTOR2D v)
{
	double len=((CVector2D)v).GetLength();
	CMatrix2D matrix;
	matrix.A[0][0]=(v.dx*v.dx - v.dy*v.dy)/len;
	matrix.A[0][1]=2.0*(v.dx*v.dy)/len;
	matrix.A[1][0]=2.0*(v.dx*v.dy)/len;
	matrix.A[1][1]= -matrix.A[0][0];
	return matrix;
}

CMatrix2D CMatrix2D::CreateRotateMatrix(double angle)
{
	CMatrix2D m;
	m.A[0][0]=m.A[1][1]=cos(angle);
	m.A[0][1]=sin(angle);m.A[1][0]= -sin(angle);
	return m;
}

CMatrix2D CMatrix2D::CreateScaleMatrix(double d)
{
	CMatrix2D m;
	m.A[0][0]=m.A[1][1]=d;
	return m;
}

CMatrix2D CMatrix2D::CreateTransfMatrix(VECTOR2D vec)
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精彩视频在线观看| 国产一区二区三区久久悠悠色av| 欧美一区二区三区视频在线| 成人性生交大片免费看中文| 亚洲一区二区三区三| 国产清纯在线一区二区www| 欧美日韩精品一区视频| 91亚洲资源网| 国产乱子伦视频一区二区三区| 亚洲影视在线播放| 成人免费一区二区三区在线观看| 久久日一线二线三线suv| 欧美日韩成人综合天天影院| 91蜜桃传媒精品久久久一区二区| 国产自产高清不卡| 青青草原综合久久大伊人精品优势 | 韩国女主播一区| 亚洲mv大片欧洲mv大片精品| 亚洲欧洲日产国产综合网| 久久先锋资源网| 日韩欧美一区二区久久婷婷| 欧美亚洲丝袜传媒另类| 91免费在线视频观看| 国产成人欧美日韩在线电影| 久草在线在线精品观看| 蜜臀久久99精品久久久久久9| 亚洲国产精品欧美一二99| 亚洲人亚洲人成电影网站色| 亚洲国产成人午夜在线一区| 久久青草欧美一区二区三区| 欧美本精品男人aⅴ天堂| 欧美三级韩国三级日本三斤| 在线观看网站黄不卡| 91麻豆精品视频| 91在线视频官网| 91免费看`日韩一区二区| 成人avav影音| 色综合久久久久久久久| caoporn国产精品| 91亚洲国产成人精品一区二区三| 国产91清纯白嫩初高中在线观看| 久久综合综合久久综合| 麻豆91免费观看| 久久成人免费网| 国产一区二区不卡| 国产精品一区三区| 国产98色在线|日韩| 99久久国产免费看| 日本高清无吗v一区| 在线观看www91| 欧美日韩国产综合久久| 日韩一卡二卡三卡国产欧美| 国产精品久久毛片av大全日韩| 国产精品日日摸夜夜摸av| 综合久久国产九一剧情麻豆| 亚洲精品国产一区二区三区四区在线| 伊人一区二区三区| 亚洲v日本v欧美v久久精品| 久久精品72免费观看| 国产成人综合在线观看| 99久久夜色精品国产网站| 色八戒一区二区三区| 555www色欧美视频| 久久久不卡影院| 一区二区三区在线视频观看58| 性感美女极品91精品| 黄色日韩三级电影| 91在线视频免费91| 欧美一级在线免费| 国产日本亚洲高清| 亚洲第一久久影院| 精品夜夜嗨av一区二区三区| 高清在线不卡av| 91精品福利视频| 欧美成人乱码一区二区三区| 国产精品嫩草影院com| 亚洲成人免费观看| 国内久久婷婷综合| 色哟哟日韩精品| 精品粉嫩超白一线天av| 亚洲欧洲性图库| 日日嗨av一区二区三区四区| 国产一区二区在线免费观看| 色网站国产精品| 日韩精品一区国产麻豆| 亚洲人吸女人奶水| 韩国v欧美v日本v亚洲v| 一本一道久久a久久精品| 日韩专区在线视频| hitomi一区二区三区精品| 欧美一区三区四区| 亚洲美女视频一区| 韩国在线一区二区| 欧美精品一卡两卡| 国产精品九色蝌蚪自拍| 麻豆高清免费国产一区| 色八戒一区二区三区| 国产亚洲综合在线| 蜜臀va亚洲va欧美va天堂 | 午夜国产精品一区| k8久久久一区二区三区| 欧美成人国产一区二区| 亚洲国产一区二区三区| 成人精品一区二区三区四区| 欧美一区二区大片| 亚洲自拍都市欧美小说| www.亚洲激情.com| 国产欧美日韩不卡| 国模一区二区三区白浆| 在线不卡免费欧美| 亚洲影院在线观看| 色狠狠桃花综合| 国产精品毛片久久久久久久| 国产中文字幕一区| 日韩欧美电影一区| 五月天欧美精品| 欧美三片在线视频观看| 亚洲欧洲另类国产综合| 成人午夜激情片| 久久久久久久久久久99999| 经典三级视频一区| 日韩一区二区三区在线| 亚洲二区在线视频| 欧美日韩在线三区| 夜夜嗨av一区二区三区| 色综合天天综合网天天狠天天 | 亚洲精品在线观看视频| 蜜臀av一级做a爰片久久| 在线不卡免费av| 日韩国产在线一| 911精品国产一区二区在线| 亚洲国产毛片aaaaa无费看| 在线精品视频免费观看| 一区二区三区四区不卡在线 | 日韩美女一区二区三区四区| 美女一区二区久久| 精品国产伦一区二区三区免费| 美洲天堂一区二卡三卡四卡视频| 欧美一区二区久久| 奇米在线7777在线精品| 日韩精品最新网址| 欧美精品第1页| 日韩va亚洲va欧美va久久| 欧美日韩和欧美的一区二区| 天天操天天色综合| 欧美一级日韩一级| 激情综合色播五月| 国产农村妇女毛片精品久久麻豆| 高清国产一区二区| 亚洲精品成人天堂一二三| 欧美亚洲动漫另类| 日本aⅴ免费视频一区二区三区| 日韩欧美在线网站| 国产成人午夜99999| 国产精品灌醉下药二区| 91精品福利视频| 美国十次了思思久久精品导航| 精品国产乱码久久久久久影片| 国产高清精品在线| 亚洲精品少妇30p| 宅男在线国产精品| 国产精品一区二区在线播放| 国产精品国产成人国产三级| 欧美日韩另类一区| 国产精品一区二区免费不卡| 亚洲免费伊人电影| 91精品国产一区二区三区蜜臀 | 青青草成人在线观看| 国产色婷婷亚洲99精品小说| av一本久道久久综合久久鬼色| 亚瑟在线精品视频| 久久久一区二区三区捆绑**| 99re成人精品视频| 老司机精品视频导航| 中文字幕视频一区二区三区久| 欧洲色大大久久| 国产一区二区中文字幕| 夜夜精品视频一区二区| 亚洲精品一区二区三区精华液| 91影视在线播放| 久久99精品国产.久久久久 | 国产91丝袜在线18| 亚洲国产精品自拍| 欧美激情一区在线观看| 51精品久久久久久久蜜臀| 成人开心网精品视频| 日韩电影在线看| 中文字幕亚洲在| 欧美va亚洲va| 欧美三区在线观看| 成人免费看的视频| 麻豆精品在线看| 亚洲一区二区三区国产| 欧美激情中文字幕| 日韩美女一区二区三区四区| 欧美亚洲国产一区二区三区| 高清不卡一区二区在线| 免费高清不卡av| 夜夜精品浪潮av一区二区三区| 欧美高清在线精品一区|