海龟绘图
void tpen(int x,int y,int bs,str ps);
//(x,y):起点坐标
//bs: 放大倍数
//ps:绘图字符串
示例
tpen(10,50,1,"C15RG15RRG15RRG6RRG9LLG9RRG6");
语法表
命令 | 描述 | 备注 |
---|---|---|
L | 左转45度 | |
R | 右转45度 | |
P【淘汰】 | 绘图到目标点 | 目标点坐标由X、Y命令设置 |
M【淘汰】 | 移动到目标点,不绘制 | |
Gn | 前进n点 | |
Cn | 设置新的颜色号 | |
Xn【淘汰】 | 设置目标点的X坐标 | 相对于起点坐标 |
Yn【淘汰】 | 设置目标点的Y坐标 | 相对于起点坐标 |
Sn | 记录当前位置点set | n:0-7 |
Jn | jump跳到记录位置 | n:0-7;跳转后绘制方向不变 |
Tn | 是否抬笔 | n=0,抬笔,G命令不绘制 n=1,落笔,G命令绘制; |
Fn | 强制方向,不支持旋转,0~7对应8个方向 | 默认0表示右水平X方向 方向+1表示逆时针+45度 |
Zn | 设置bin数组句柄 | |
En | 设置bin中的元件编号 | |
Kn | 将当前坐标记录到bin对应的管脚编号, 注意n必须从0开始按顺序依次累加 | |
A | 左转90度,相当于LL | |
B | 右转90度,相当于RR | |
Hn | 设置bin中的元件编号,用于传递Kn对应的锚点 | |
Kn | 设置锚点,使用Hn传递给外围控制 |
说明:
- Gn这类的命令,n代表一个数字;
- P、M、X、Y命令由于不能应用于整体旋转,因此考虑淘汰,但考虑到用户已经写成的程序,暂不删除;后续开发请使用S、J命令代替。
- 默认起始角度为向右水平;
- 海龟绘图使用的是矢量原则,因此可以通过倍数进行放大,比如:
tpen(10,50,1,"C15RG15RRG15RRG6RRG9LLG9RRG6");
tpen(40,50,2,"C15RG15RRG15RRG6RRG9LLG9RRG6");
tpen(90,50,3,"C15RG15RRG15RRG6RRG9LLG9RRG6");
绘制成:
附录:
图形 | 字符串 |
---|---|
C15RG15RRG15RRG6RRG9LLG9RRG6 | |
C15RRRG15LLG15LLG6LLG9RRG9LLG6 | |
C15X-2Y-4PG5X-2Y4PG5X0Y0PG5LLG2RRRRG4 | |
C15K0G3AG1BG5BG1S0G1BG5BG1J0BG3K1 | |
C15K0BG4BG3BBG6BT0G1BG1T1G4AT0G1AG1T1G2 | |
C15K0G3AG3BBG6T0AG2AT1G3S0G3J0BG3K1 | |
C15K0G3BG1AG2S0AG4S1AG2AG1S2G2J2BG3K1 J1BRG3RBG10BRG3 | |
C15K0T1G3AG4BT0G2BT1G1S0G1 T0G1T1G1S1G1 T0G1T1G1S2G1 T0BG2T1BG5BB AJ0G4AG4K1 BJ1G1S3LG1J3BG1LJ3G3BG7K2 J0G1BBG2 BJ2G4 | |
C15K0AG3AG2BBG4 | |
C15K0G4LG1BG1BG1BG1BRT0 G4T1LG1S1BG1S0BG1BG1J0BRG4K1 J1T0AG1BG1 AA T1G6BBG3AG2 |