You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.5 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> Unit.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "Point2D.h"
class AFX_EXT_CLASS CUnit
{
public:
CUnit();
virtual ~CUnit();
enum EType
{
UNIT_KM = 0, //<2F><><EFBFBD><EFBFBD> kilometres
UNIT_M = 1, //<2F><> metre
UNIT_DM = 2, //<2F><><EFBFBD><EFBFBD> decimeter
UNIT_CM = 3, //<2F><><EFBFBD><EFBFBD> centimeter
UNIT_MM = 4, //<2F><><EFBFBD><EFBFBD> millimetres
UNIT_SECOND = 5, //<2F><> second<6E><64>60<36><30>֮һ<D6AE>֣<EFBFBD>
UNIT_MS = 6, //<2F><><EFBFBD><EFBFBD> millisecond
UNIT_FOOT = 7, //Ӣ<><D3A2> foot = 304.8mm
UNIT_INCH = 8, //Ӣ<><D3A2> inch = 25.4mm
UNIT_MILE = 9, //Ӣ<><D3A2> mile = 1.609*1e6mm
UNIT_YARD = 10, //<2F><> yard = 914.4mm
UNIT_SEA_MILE = 11, //<2F><><EFBFBD><EFBFBD> nautical mile = 1852000mm
UNIT_RUSSIAN_MILE = 12, //<2F><><EFBFBD><EFBFBD> Russian mile = 1.0668*1e6mm
UNIT_RUSSIAN_UNIT_OF_LENGTH = 13, //<2F><><EFBFBD><EFBFBD> Russian unit of length = 2133.6mm
UNIT_JAPANESE_MILE = 14, //<2F><><EFBFBD><EFBFBD> Japanese mile = 3.9273*1e6mm
UNIT_JAPANESE_FOOT = 15, //<2F>ճ<EFBFBD> Japanese foot = 303mm;
//<2F><>γ<EFBFBD>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
UNIT_DEGREE = 16, //<2F><>(360<36><30>)
UNIT_DMS = 17, //<2F>ȷ<EFBFBD><C8B7><EFBFBD>,<2C><><EFBFBD><EFBFBD>DDDMMSS.SSSS<53><53>ʽ
UNIT_MINUTE = 18, //<2F><>(60<36><30>֮һ<D6AE><D2BB>)
UNIT_RADIAN = 19, //<2F><><EFBFBD><EFBFBD>
UNIT_GRAD = 20 //<2F>ݶ<EFBFBD> 1<>ݶ<EFBFBD>=0.015707963267949<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
double Millimetres(double data, EType unit); //ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
double Millimetres(EType unit);
double Millimetres(int unit);
double Meter(double data, EType unit); //ת<><D7AA>Ϊ<EFBFBD><CEAA>
double Meter(EType unit);
double GetMillisecondPerCM() { return msPerCM; }
double msPerCM; //(<28><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>)
};
////////////////////////////////////////////////////////////////////
//<2F><>λѡ<CEBB><D1A1>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
// 0<><30>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ͼ<EFBFBD><CDBC>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>굥λ<EAB5A5><CEBB>ͬ
// 1<><31>Ϊ<EFBFBD><CEAA>ӡ<EFBFBD><D3A1>λģʽ<C4A3><CABD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CUnitTransform : public CUnit
{
public:
CUnitTransform();
double toPrintUnit(double dRealVal); //<2F><>ʵ<EFBFBD>ʵ<EFBFBD>λת<CEBB><D7AA>Ϊ<EFBFBD><CEAA>ӡ<EFBFBD><D3A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD>
double toRealUnit(double dPrintVal); //<2F><><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>λת<CEBB><D7AA>Ϊʵ<CEAA>ʵ<EFBFBD>λ
CSize8 toPrintUnit(CSize8 sz); //<2F><>ʵ<EFBFBD>ʵ<EFBFBD>λת<CEBB><D7AA>Ϊ<EFBFBD><CEAA>ӡ<EFBFBD><D3A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD>
CSize8 toRealUnit(CSize8 sz); //<2F><><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>λת<CEBB><D7AA>Ϊʵ<CEAA>ʵ<EFBFBD>λ
void SetTransform(double scale, int nUnit);
void SetTransform(double scale, EType eUnit);
int GetUnit() { return (int)m_unit; } //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ʾ<EFBFBD><CABE>λ
double GetScale() { return m_dScaleFactor; }
int GetShowUnit(); //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ʾ<EFBFBD><CABE>λ
public:
double m_dScaleFactor; //<2F><><EFBFBD><EFBFBD>: 1:m_dScaleFactor
EType m_unit; //<2F><>ǰ<EFBFBD><C7B0>λ
int m_nMode; //<2F><>λѡ<CEBB><D1A1>ģʽ
};