www.pudn.com > 3dpipe.zip > PipeLineObject.h, change:2006-01-21,size:2091b
// PipeLineObject.h: interface for the PipeLineObject class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PIPELINEOBJECT_H__FD10755E_C105_445E_850C_219AAF4E6051__INCLUDED_)
#define AFX_PIPELINEOBJECT_H__FD10755E_C105_445E_850C_219AAF4E6051__INCLUDED_
#ifndef _PIPELINE_DATABASE
#include "PipelineDatabase.h"
#endif
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define PI 3.141592653589793238462643383279
class PipeLineObject : public CObject
{
public:
PipeLineObject();
virtual ~PipeLineObject();
protected:
float m_dRadius;
UINT m_nPointsNum;
public:
CArray<POINT3D,POINT3D> ptCircleCentre3DArray;
CArray<POINT3D,POINT3D> ptCentre3DArray;
CArray<POINT3D,POINT3D> ptVertexNormalArray;
CArray<LINE3D,LINE3D> ptLines3d;
CArray<LINE3D,LINE3D> ptPipeLinesNormal;
CArray<LINE3D,LINE3D> ptLinesCurveCentre;
public:
POINT3D pMapCenter;
public:
void CalNextNodeOnCurve(POINT3D FCentre3D,POINT3D NCentre3D,CArray<POINT3D,POINT3D>& FirstArray3D,CArray<POINT3D,POINT3D>& NextArray3D,POINT3D& ptCurveTangent);
void CalCurveTangent(POINT3D& ptPlaneNormal,POINT3D& ptCurveCentre,POINT3D& ptPoint3D,POINT3D& ptCurveTangent);
void CalNextNodeOnBeeline(POINT3D FCentre3D,POINT3D NCentre3D,CArray<POINT3D,POINT3D>& FirstArray3D,CArray<POINT3D,POINT3D>& NextArray3D);
double CalAzimuth(double Dx,double Dy);
void DrawPipeSection();
double CalculateAngleBetweenTwoLines(POINT3D pt1,POINT3D pt2,POINT3D pt3);
void CalculateCoordinateOnPipeLine(POINT3D pt3D1, POINT3D pt3D2, POINT3D pt3D3,CArray<POINT3D,POINT3D>&pt3DArray);
void CalculateRotateParameter(POINT3D ptBottom,POINT3D ptTop,double dCosAngles[][3]);
void CalVertexesNormal();
void CalPlaneNormal(POINT3D &ptTop1,POINT3D &ptIntersect,POINT3D &ptTop2,POINT3D &ptPlaneNormal);
float RadiusRand(int Max);
void DrawPipeLine(MAP& aMapFile);
void GetGraphCenter(POINT3D& pt);
};
#endif // !defined(AFX_PIPELINEOBJECT_H__FD10755E_C105_445E_850C_219AAF4E6051__INCLUDED_)