📄 plot_line.c
字号:
#include "plot_line.h"
extern float X0,Y0;//保存了当前坐标
//参数为起点和终点
void plot_line_chabu(float x1,float y1,float x2,float y2)
{
unsigned int dx, dy, n, k, i;
int f; //f可正可负
go_to(x1,y1);
dx=(unsigned int)_abs_((x2-x1)/0.0359);//0.0359为电机步进值
dy=(unsigned int)_abs_((y2-y1)/0.0359);
n=dx+dy;
if (x2 >= x1)
{ k = y2 >= y1 ? 1: 4; }
else
{ k = y2 >= y1 ? 2: 3; }
f=0;
for (i = 0, f = 0; i < n; i++)
if (f >= 0)
switch (k) {
case 1:
x_plus(1);
f -= dy;
break;
case 2:
x_minus(1);
f -= dy;
break;
case 3:
x_minus(1);
f -= dy;
break;
case 4:
x_plus(1);
f -= dy;
break;
}
else
switch (k) {
case 1:
y_plus(1);
f += dx;
break;
case 2:
y_plus(1);
f += dx;
break;
case 3:
y_minus(1);
f += dx;
break;
case 4:
y_minus(1);
f += dx;
break;
}
}
//========================================================
//只需指明终点,起点默认为当前坐标值
void plot_line_chabu_2(float x2,float y2)
{
unsigned int dx, dy, n, k, i;
int f; //f可正可负
float x1=X0;
float y1=Y0;
go_to(x1,y1);
dx=(unsigned int)_abs_((x2-x1)/0.0359);
dy=(unsigned int)_abs_((y2-y1)/0.0359);
n = dx + dy;
//以起点为原点,则(dx,dy)则为终点坐标,在第一象限.
if (x2 >= x1)
{ k = y2 >= y1 ? 1: 4; }
else
{ k = y2 >= y1 ? 2: 3; }
for (i = 0, f = 0; i < n; i++)
if (f >= 0)
switch (k) {
case 1:
x_plus(1);
f -= dy;
break;
case 2:
x_minus(1);
f -= dy;
break;
case 3:
x_minus(1);
f -= dy;
break;
case 4:
x_plus(1);
f -= dy;
break;
}
else
switch (k) {
case 1:
y_plus(1);
f += dx;
break;
case 2:
y_plus(1);
f += dx;
break;
case 3:
y_minus(1);
f += dx;
break;
case 4:
y_minus(1);
f += dx;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -