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

📄 path.h

📁 用BC++编写的带PIC-SERVO CMC运动控制器的3轴钻床控制器和G代码解释程序.
💻 H
字号:
//---------------------------------------------------------------------------
#ifndef pathH
#define pathH
//---------------------------------------------------------------------------
//Defines:

//Segment types:
#define LINE 0
#define ARC 1

#define MAXSEG 1000     //Maximum number of segments
#define PI 3.14159
#define TWOPI 6.28319
#define DTOR 0.017453

//Valuse for tangent tolerance
#define TAN_1DEGREE 0.99985
#define TAN_3DEGREE 0.99863
#define TAN_5DEGREE 0.99619
#define TAN_10DEGREE 0.98481
#define TAN_20DEGREE 0.93969
#define TAN_45DEGREE 0.70711

#define ONLINE 1
//---------------------------------------------------------------------------
//Data types:

typedef float fp[3];     //floating point 3x1 vector

typedef long int ip[3];  //integer 3x1 vector

typedef struct {         //data type for line segments or arc segments
			int type;		//LINE or ARC
			fp p1;          //Starting point
            fp p2;          //Ending point
            fp c;           //Center point (arcs only)
            fp norm;        //Normal vector (arcs only)
            float len;		//Segment length
            float r;		//Radius (arcs only)
            } segment;

typedef struct {         //data type for a coordinate frame
			fp	x;
            fp	y;
            fp	z;
            fp	p;
            } frame;

//---------------------------------------------------------------------------
//Function prototypes:
float mag(fp p);
float dot(fp x, fp y);
void cross(fp x, fp y, fp z);
float normalize(fp x, fp y);
void fvmult(frame *F, fp x, fp y);
void finvert(frame A, frame *B);
int GetTanVect(segment *s, fp p, int endpoint);
void GetArcFrame(segment *seg, frame *F);
void GetLineSegPoint(segment *seg, float s, fp p);
int GetNextPathpoint(long int *xp, long int *yp, long int *zp);

//Path mode API functions:
extern "C" WINAPI __declspec(dllexport) void SetTangentTolerance(float theta);
extern "C" WINAPI __declspec(dllexport) void ClearSegList(float x, float y, float z);
extern "C" WINAPI __declspec(dllexport) int AddLineSeg(float x, float y, float z);
extern "C" WINAPI __declspec(dllexport) int AddArcSeg( float x, float y, float z,        //end point
               										   float cx, float cy, float cz,     //center point
               										   float nx, float ny, float nz );    //normal
extern "C" WINAPI __declspec(dllexport) void SetFeedrate(float fr);
extern "C" WINAPI __declspec(dllexport) void SetOrigin(float xoffset, float yoffset, float zoffset);
extern "C" WINAPI __declspec(dllexport) int SetPathParams(int freq, int nbuf,
                   										  int xaxis, int yaxis, int zaxis, int groupaddr, int leaderaddr,
                   										  float xscale, float yscale, float zscale,
                   										  float accel );
extern "C" WINAPI __declspec(dllexport) float InitPath();
extern "C" WINAPI __declspec(dllexport) int AddPathPoints();

//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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