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

📄 vector2d.h

📁 Displaying large amounts of technical data in a chart can be a frustrating task. You can find tons o
💻 H
字号:

#if !__VECTOR2D_H
#define __VECTOR2D_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


#define MPOINT2POINT(mpt, pt)   ((pt).x = (mpt).x, (pt).y = (mpt).y)
#define POINT2MPOINT(pt, mpt)   ((mpt).x = (SHORT)(pt).x, (mpt).y = (SHORT)(pt).y)
#define POINTS2VECTOR2D(pt0, pt1, vect) ((vect).x = (double)((pt1).x - (pt0).x), \
                                         (vect).y = (double)((pt1).y - (pt0).y))
typedef struct tagVECTOR2D  {
        double     x;
		double     y;
} VECTOR2D, *PVECTOR2D, FAR *LPVECTOR2D; 

typedef struct tagPROJECTION  {
        VECTOR2D   ttProjection;
		VECTOR2D   ttPerpProjection;
        double     LenProjection;
		double     LenPerpProjection;
} PROJECTION, *PPROJECTION, FAR *LPPROJECTION; 

typedef struct tagPOINTNORMAL  {
        VECTOR2D   vNormal;
		double     D;
} POINTNORMAL, *PPOINTNORMAL, FAR *LPPOINTNORMAL;

PVECTOR2D  vSubtractVectors(PVECTOR2D v0, PVECTOR2D v1, PVECTOR2D v);
PVECTOR2D  vAddVectors(PVECTOR2D v0, PVECTOR2D v1, PVECTOR2D v);
PVECTOR2D  vScaleVector(PVECTOR2D v0, double dScaling, PVECTOR2D v);
PVECTOR2D  vLinearCombination(PVECTOR2D ptScale, PVECTOR2D v0, PVECTOR2D v1, PVECTOR2D v);
double     vVectorSquared(PVECTOR2D v0);
double     vVectorMagnitude(PVECTOR2D v0);
void       vNormalizeVector(PVECTOR2D ptN);
double     vDotProduct(PVECTOR2D v, PVECTOR2D v1);
PVECTOR2D  vNormalVector(PVECTOR2D v0, PVECTOR2D v);
BOOL       vPointNormalForm(POINT pt0, POINT pt1, PPOINTNORMAL ppnPointNormal);
void       vProjectAndResolve(PVECTOR2D v0, PVECTOR2D v1, PPROJECTION ppProj);
BOOL       vIsPerpendicular(PVECTOR2D v0, PVECTOR2D v1);
double     vVectorAngle(PVECTOR2D v0, PVECTOR2D v1);
double     vDistFromPointToLine(LPPOINT pt0, LPPOINT pt1, LPPOINT ptTest);

#endif

⌨️ 快捷键说明

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