///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч РИСОВАНИЕ АРДУНЯША //////////////////////////////
#include <Servo.h>
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS3231);
////////////////////////////////////////////////////////////////
#define l1 65 //длина первого плеча манипулятора в мм.
#define l2 65 //длина второго плеча манипулятора в мм.
#define Lmax 120//значение граничных координат
#define Qmax 140//значение граничных координат
#define Acor1 352//поправка на посадку качалки сервы 1
#define Acor2 220//поправка на посадку качалки сервы 2
#define Lmin 50//значение граничных координат
#define Dstep 1 //шаг при рисовании отрезка
#define Dmax 55//максимальной длины отрезок
//Для аварийной остановки в процессе рисования - не задействована
boolean StopFlag=false;
////////////////////////////////////////////////////////////////
float CurL=1000;
float CurQ=1000;
byte a03=125;
byte a3=a03;
int n=10;//переменная единицы временного интервала
String inputString;// строка данных
byte R=14;//единица размера сегмента цифры в мм
///////////////////////////////////////////////////////////////
Servo servo1;
Servo servo2;
Servo servo3;
void setup() {
time.begin();
//time.settime(0,43,14,15,8,18,3); // 0 сек, 43 мин, 14 час, 15, АВГУСТА, 2018 года, СРЕДА
Serial.begin(9600);
servo1.attach(5);
servo2.attach(6);
servo3.attach(7);
servo1.write(100);
servo2.write(110);
servo3.write(a03);
}
void loop()
{
CheckSerial();//ЖДЁМ ПОСТУПЛЕНИЯ КОМАНДЫ НА РИСОВАНИЕ ЗАДАННОГО ОБЪЕКТА
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////ФУНКЦИИ ФУНКЦИИ ФУНКЦИИ ФУНКЦИИ ФУНКЦИИ ФУНКЦИИ//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует окружность диаметром d
///////////////////////////////////////
void Okr(float d)
{
up_down_pen(true);//опустим перо
for (byte i=0;i<12;i++)
{
DrawVector(PI*d/12,30*i);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует равносторонний треугольник со стороной d, наклонённый под углом a (больше 0, меньше 60 градусов)
///////////////////////////////////////
void Treug(int d, int a)
{
up_down_pen(true);//опустим перо
DrawVector(d,60-a); DrawVector(d,300-a); DrawVector(d,180-a);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует квадрат со стороной d, наклонённый под углом a (больше 0, меньше 90 градусов)
///////////////////////////////////////
void Kvad(int d, int a)
{
up_down_pen(true);//опустим перо
DrawVector(d,90+a); DrawVector(d,0+a); DrawVector(d,270+a); DrawVector(d,180+a);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// фунуция рисует линию длины d в направлении a(в градусах)
//либо переставляет перо на конец вектора, при отрицательных d
void DrawVector(float d, float a)
{
if (d > Dmax || a < 0 || a > 359)return; // не корректные параметры
if (CurL == 1000 || CurQ == 1000)return; // не задана начальная точка
if (d < 0) //задана перестановка пера
{
up_down_pen(false);//поднимем перо
d = abs(d);
GoToFinLine(d, a);
} else //задано рисование линии
{
up_down_pen(true);//опустим перо
int n = d / Dstep; //разобьем линию на n отрезков.
for (int i = 1; i <= n; i++)GoToFinLine(Dstep, a);//нарисуем отрезки по очереди
d -= n * Dstep;
if (d > 0)GoToFinLine(d, a); //последнюю точку нарисуем отдельно для точности.
}
}
// функция перемещает перо в конец заданного вектора
void GoToFinLine(float d,float a)
{
if(StopFlag)return;
//определим координаты конца вектора
float l=CurL+d*sin(GradToRad(90+a-CurQ));
float g=CurQ-(180*asin(d*cos(GradToRad(90+a-CurQ))/CurL))/PI;
//переместим перо
SetServosToPoint(l,g);
delay(n*d);// выдержка времени для отработки механизма, зависящая от длины пути.
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Функция выставляет servo1 servo2, на точку с декартовыми координатами Х,Y
//X,Y расстоямие в мм
void SetServosToPointXY(float X, float Y)
{
float l; float q;
if(X==0){l=Y;q=90;}
if (X>0){q=(180/PI)*asin((Y/X)/sqrt(1+((Y*Y)/(X*X))));l=Y/sin(PI*q/180);}
if (X<0){q=180-((180/PI)*asin((Y/abs(X))/sqrt(1+((Y*Y)/(X*X)))));l=Y/sin(PI*(180-q)/180);}
SetServosToPoint(l,q);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Функция выставляет servo1 servo2, на точку с полярными координатами L,Q
//L расстоямие в мм от полюса,Q угол от полярной оси в градусах
void SetServosToPoint(float L, float Q)
{
if(L>=Lmax ||L<=Lmin ||Q>= Qmax ) return;
float lp=65; //длина одного из равных плеч
float B=acos(1.00-(L*L)/(2*lp*lp));
float A=(PI*Q/180)+(B/2)-(PI/2);
// Serial.print("A= ");
//Serial.println(180*A/PI);
// Serial.print("B= ");
//Serial.println(180*B/PI);
servo1.writeMicroseconds(RadianToMcs(A)+Acor1);
servo2.writeMicroseconds(RadianToMcs(B)+Acor2);
delay(5*n);
CurL=L;
CurQ=Q;
// Serial.print("Current point: L= ");
// Serial.print(L);
// Serial.print(", Q= ");
// Serial.println(Q);
}
//////////////////////////////////////////////////////////////////////
//функция перевода радиан в микросекунды для управления сервоприводами
int RadianToMcs(float rad)
{
int grad=180*rad/PI;
grad=map(grad, 0, 180, 500, 2500);
return grad;
}
/////////////////////////////////////////////////////////////////////
float GradToRad(float grad)
{
float rad=PI*grad/180;
return rad;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////функция поднимания-опускания фломастера (значения аргумента false и true соответственно)/////
void up_down_pen(boolean k)
{
while (a3>85&&k==1)
{servo3.write(a3);a3=a3-1;delay(n);}if(k== true ){a3=85;}
while (a3<a03&&k==0)
{servo3.write(a3);a3=a3+1;delay(n);}if (k==false){a3=a03;}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//ФУНКЦИИ ПРИЁМА И ОБРАБОТКИ ДАННЫХ
void CheckSerial()
{
//////////////////////////////////////////////////////////////////////////////
while (Serial.available())//считываем строку данных пока они поступают
{
char inChar = (char)Serial.read();
if (inChar == '\n') //если окончание строки
{
MakeCmd();//обрабатываем её данной функцией
break;
}
else inputString += inChar;// иначе удлиняем строку на один символ
}
}
/////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
void MakeCmd()
{
int y=inputString.length();// присваиваем переменной у число символов в строке
if (y<3||y>3)return;//если их меньше 3 или больше, выходим из функции
String cmd=inputString;// передаём строку другой переменной
inputString = "";//"обнуляем переменную"
if (cmd=="DOM"){delay(3000);RisunokDomik ();}//РИСУЙ ДОМИК
if (cmd=="KUB"){delay(3000); RisunokKubik ();}//РИСУЙ КУБИК
if (cmd=="CVE"){delay(3000);RisunokCvetok();}//РИСУЙ ЦВЕТОК
if (cmd=="BUK"){delay(3000);RisunokBukvaA ();}//РИСУЙ БУКВУ А
if (cmd=="MAS"){delay(3000);RisunokMaschina ();}//РИСУЙ МАШИНУ
if (cmd=="LIC"){delay(3000);RisunokLico ();}//РИСУЙ ЛИЦО
if (cmd=="JUK"){delay(3000);RisunokJuk ();}//РИСУЙ ЖУКА
if (cmd=="LAB"){delay(3000);RisunokLabirint ();}//РИСУЙ ЛАБИРИНТ
if (cmd=="RKT"){delay(3000);RisunokRaketa ();}//РИСУЙ РАКЕТУ
if (cmd=="VRE"){delay(3000);Vremia ();}//РИСУЙ ТЕКУЩИЕ ЗНАЧЕНИЕ ВРЕМЕНИ
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ ///////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokDomik ()
{
SetServosToPoint (80,110);// стены, крыша
DrawVector(20,90);DrawVector(10,180);DrawVector(14,45);DrawVector(20,0);DrawVector(14,315);DrawVector(10,180);
DrawVector(20,270);DrawVector(20,180);DrawVector(20,90);DrawVector(22,0);
up_down_pen (false);
SetServosToPoint (85,103);//окошко
DrawVector(7,90);DrawVector(7,0);DrawVector(7,270);DrawVector(7,180);
up_down_pen (false);
SetServosToPoint (107,100);//труба
DrawVector(7,90);DrawVector(5,0);DrawVector(7,270);DrawVector(5,180);
up_down_pen (false);
SetServosToPoint (75,100);//дорожка
DrawVector(40,0);
up_down_pen (false);
SetServosToPoint (70,103);
DrawVector(40,0);
up_down_pen (false);
SetServosToPointXY(20,90);Okr(15);up_down_pen (false);//солнышко
SetServosToPointXY(5,95); DrawVector(10,20);up_down_pen (false);SetServosToPointXY(5,85); DrawVector(10,45);up_down_pen (false);SetServosToPointXY(10,80); DrawVector(10,70);up_down_pen (false);
SetServosToPointXY(5,105); DrawVector(10,330);up_down_pen (false);SetServosToPointXY(15,80); DrawVector(10,80);up_down_pen (false);SetServosToPointXY(20,80); DrawVector(10,80);up_down_pen (false);
SetServosToPointXY(10,110); DrawVector(10,320);up_down_pen (false);SetServosToPointXY(20,107); DrawVector(10,120);up_down_pen (false);SetServosToPointXY(25,107); DrawVector(10,90);up_down_pen (false);
for (int z=0;z<9;z++)// заборчик
{
SetServosToPointXY(-45+2*z,75); DrawVector(12,90);DrawVector(4,300);up_down_pen (false);
}
SetServosToPointXY(-45,75); DrawVector(20,0);up_down_pen (false);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokKubik ()
{
SetServosToPointXY(-20,75);Kvad(20,0);up_down_pen (false);// сам кубик
SetServosToPointXY(-20,95);DrawVector(15,45);up_down_pen (false);
SetServosToPointXY(0,95);DrawVector(13,47);up_down_pen (false);
SetServosToPointXY(0,75);DrawVector(15,45);up_down_pen (false);
SetServosToPointXY(-12,106);DrawVector(23,0);DrawVector(22,270);up_down_pen (false);
SetServosToPointXY(-11,85);up_down_pen (true);delay(2000);up_down_pen (false);//точки на гранях
SetServosToPointXY(8,93);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(2,96);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(3,81);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(9,102);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(10,88);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(-7,102);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(-11,104);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(-1,98);up_down_pen (true);delay(2000);up_down_pen (false);
SetServosToPointXY(-23,85);DrawVector(25,215);DrawVector(45,0);DrawVector(25,45);DrawVector(8,180);up_down_pen (false);//последний штрих-контур
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokCvetok ()
{
for(byte i=0;i<12;i++)//цветок
{
SetServosToPointXY(5,110); DrawVector(10,i*30);up_down_pen(false);
}
SetServosToPointXY(5,110);DrawVector(20,248);DrawVector(20,270);up_down_pen(false);//стебель,лист,горшок
SetServosToPointXY(-4,91);DrawVector(15,135);DrawVector(13,215);DrawVector(11,20);DrawVector(15,320);up_down_pen(false);
SetServosToPointXY(-13,73);DrawVector(20,0);DrawVector(10,225);DrawVector(7,180);DrawVector(10,135);up_down_pen(false);
SetServosToPointXY(-8,57);Kvad(10,0);up_down_pen(false);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokBukvaA ()
{
SetServosToPointXY(-40,65);DrawVector(50,60);DrawVector(10,0);DrawVector(50,300);DrawVector(10,180);// буква А большая
DrawVector(10,120);DrawVector(30,180);DrawVector(10,240);DrawVector(10,180);up_down_pen(false);
SetServosToPointXY(-20,83);Treug(20,0); up_down_pen(false);
///////////////////////////////////////////////////////////////////////
SetServosToPointXY(8,90);DrawVector(25,60);DrawVector(5,0);DrawVector(25,300);DrawVector(5,180);//буква А маленькая
DrawVector(5,120);DrawVector(15,180);DrawVector(5,240);DrawVector(7,180);up_down_pen(false);
SetServosToPointXY(18,98);Treug(10,0); up_down_pen(false);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
SetServosToPointXY(15,85);DrawVector(25,0);up_down_pen(false);// две черты
SetServosToPointXY(20,80);DrawVector(25,0);up_down_pen(false);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokMaschina ()
{
SetServosToPointXY(-30,65);Okr(15);up_down_pen(false);// колёса
SetServosToPointXY(5,65);Okr(15);up_down_pen(false);
SetServosToPointXY(-30,73);up_down_pen(true);delay(2000);up_down_pen(false);
SetServosToPointXY(8,73);up_down_pen(true);delay(2000);up_down_pen(false);
///////////////////////////////////////////////////////
SetServosToPointXY(-20,70);DrawVector(20,0);up_down_pen(false);//кузов
SetServosToPointXY(-20,100);DrawVector(30,0);DrawVector(20,300);DrawVector(10,270);DrawVector(5,180);up_down_pen(false);
SetServosToPointXY(-20,100);DrawVector(15,240);DrawVector(20,210);DrawVector(5,270);DrawVector(10,0);up_down_pen(false);
////////////////////////////////////////////////////////
SetServosToPointXY(-18,87);Kvad(10,0);up_down_pen(false);// окна салона
SetServosToPointXY(-5,88);Kvad(10,0);up_down_pen(false);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
SetServosToPointXY(-25,84);DrawVector(33,0);up_down_pen(false);// две черты
SetServosToPointXY(-25,80);DrawVector(25,0);up_down_pen(false);
/////////////////////////////////////////////////////////
SetServosToPointXY(-40,60);DrawVector(10,10);DrawVector(10,340);DrawVector(10,10);DrawVector(10,340);DrawVector(10,15);DrawVector(10,0);up_down_pen(false);//дорога
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokLico ()
{
SetServosToPointXY(-15,80);Okr(15);up_down_pen(false);//глаза
SetServosToPointXY(5,80);Okr(15);up_down_pen(false);
SetServosToPointXY(-15,87);up_down_pen(true);delay(2000);up_down_pen(false);
SetServosToPointXY(5,87);up_down_pen(true);delay(2000);up_down_pen(false);
SetServosToPointXY(-5,70);Okr(10);up_down_pen(false);//нос
SetServosToPointXY(-15,65);DrawVector(13,345);DrawVector(13,25);up_down_pen(false);//рот
for(byte i=0;i<4;i++)
{
SetServosToPointXY(-25,105+3*i);DrawVector(5,45);DrawVector(5,315);DrawVector(5,45);DrawVector(5,315);//причёска
DrawVector(5,45);DrawVector(5,315);DrawVector(5,45);DrawVector(5,315);
DrawVector(5,45);DrawVector(5,315);DrawVector(5,45);DrawVector(5,315);up_down_pen(false);//причёска
}
SetServosToPointXY(15,95);DrawVector(10,60);DrawVector(10,260);up_down_pen(false);//уши
SetServosToPointXY(-19,95);DrawVector(10,120);DrawVector(10,280);up_down_pen(false);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokJuk ()
{
SetServosToPointXY(-5,70);Okr(10);up_down_pen(false);//глаза
SetServosToPointXY(5,70);Okr(10);up_down_pen(false);
SetServosToPointXY(-5,75);up_down_pen(true);delay(2000);up_down_pen(false);
SetServosToPointXY(5,75);up_down_pen(true);delay(2000);up_down_pen(false);
////////////////////////////////////////////////
SetServosToPointXY(-10,95);Treug(20,59);up_down_pen(false);//тело
SetServosToPointXY(-10,95);Treug(20,0);up_down_pen(false);
/////////////////////////////////////////////////
SetServosToPointXY(-12,95);DrawVector(10,135);DrawVector(10,225);up_down_pen(false);//ноги-лапы
SetServosToPointXY(12,95);DrawVector(10,45);DrawVector(10,315);up_down_pen(false);
SetServosToPointXY(-12,88);DrawVector(10,135);DrawVector(10,225);up_down_pen(false);//ноги-лапы
SetServosToPointXY(12,88);DrawVector(10,45);DrawVector(10,315);up_down_pen(false);
SetServosToPointXY(-12,81);DrawVector(10,135);DrawVector(10,225);up_down_pen(false);//ноги-лапы
SetServosToPointXY(12,81);DrawVector(10,45);DrawVector(10,315);up_down_pen(false);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokLabirint ()
{
SetServosToPointXY(-35,105);up_down_pen(true);delay(2000);
DrawVector(45,270);DrawVector(40,0);DrawVector(35,90);DrawVector(30,180);//лабиринт спираль
DrawVector(25,270);DrawVector(20,0);DrawVector(15,90);DrawVector(10,180);
DrawVector(5,270);DrawVector(5,0);DrawVector(5,270);DrawVector(10,180);
DrawVector(15,90);DrawVector(20,0);DrawVector(25,270);DrawVector(30,180);
DrawVector(35,90);DrawVector(40,0);DrawVector(45,270);delay(2000);up_down_pen(false);
////////////////////////////////////////////////////////////
SetServosToPointXY(-30,102);DrawVector(10,45);DrawVector(10,315);up_down_pen(false);//человечек
SetServosToPointXY(-30,107);DrawVector(10,45);DrawVector(10,315);up_down_pen(false);
SetServosToPointXY(-25,107);DrawVector(9,90);Kvad(4,45);up_down_pen(false);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RisunokRaketa ()
{
SetServosToPointXY(-35,80);Treug(20,30);up_down_pen(false);// корпус
SetServosToPointXY(-20,90); DrawVector(35,0);DrawVector(18,270);DrawVector(35,180);up_down_pen(false);
SetServosToPointXY(10,82);Treug(20,30);up_down_pen(false);
////////////////////////////////////////////////////
SetServosToPointXY(32,82); DrawVector(15,0);up_down_pen(false);//выхлоп
SetServosToPointXY(30,87); DrawVector(12,0);up_down_pen(false);
SetServosToPointXY(30,78); DrawVector(12,0);up_down_pen(false);
///////////////////////////////////////////////////
SetServosToPointXY(-10,75);Okr(14);up_down_pen(false);//косманавт
SetServosToPointXY(-11,79); DrawVector(5,0);up_down_pen(false);
SetServosToPointXY(-11,83);up_down_pen(true);delay(1000); up_down_pen(false);
SetServosToPointXY(-6,83);up_down_pen(true);delay(1000); up_down_pen(false);
//////////////////////////////////////////////////////
SetServosToPointXY(-35,100);DrawVector(10,80);DrawVector(10,280);DrawVector(10,350);DrawVector(10,190);//звёзды
DrawVector(10,260);DrawVector(10,100);DrawVector(10,170);DrawVector(12,10);up_down_pen(false);
SetServosToPointXY(-40,70);DrawVector(8,80);DrawVector(8,280);DrawVector(8,350);DrawVector(8,190);
DrawVector(8,260);DrawVector(8,100);DrawVector(8,170);DrawVector(10,10);up_down_pen(false);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Vremia ()
{
String cmd1=time.gettime("H"); int K =cmd1.substring(0,1).toInt();SetServosToPointXY(-40,75);Cifra (K);K =cmd1.substring(1).toInt();SetServosToPointXY(-21,75);Cifra (K);//рисуем количество часов
SetServosToPointXY(-2,75);Dvoetoschie();//рисуем двоеточие
cmd1=time.gettime("i"); K =cmd1.substring(0,1).toInt();SetServosToPointXY(2,75);Cifra (K);K =cmd1.substring(1).toInt();SetServosToPointXY(21,75);Cifra (K);//рисуем количество минут
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Cifra (int kk)
{
switch (kk)
{
case 0:
DrawVector(2*R,90); DrawVector(R,0); DrawVector(2*R,270);DrawVector(R,180);
break;
case 1:
DrawVector(-R,90); DrawVector(1.4*R,45);DrawVector(2*R,270);
break;
case 2:
DrawVector(-2*R,90);DrawVector(R,0);DrawVector(R,270);DrawVector(1.4*R,225);DrawVector(R,0);
break;
case 3:
DrawVector(1.4*R,45);DrawVector(R,180);DrawVector(1.4*R,45);DrawVector(R,180);
break;
case 4:
DrawVector(-2*R,90); DrawVector(R,270);DrawVector(R,0);DrawVector(R,90);
DrawVector(-R,270);DrawVector(R,270);
break;
case 5:
DrawVector(R,0);DrawVector(R,90);DrawVector(R,180);DrawVector(R,90);DrawVector(R,0);
break;
case 6:
DrawVector(-2*R,90);DrawVector(-R,0); DrawVector(1.4*R,225);DrawVector(R,270);
DrawVector(R,0); DrawVector(R,90); DrawVector(R,180);
break;
case 7:
DrawVector(-2*R,90); DrawVector(R,0);DrawVector(1.4*R,225);DrawVector(R,270);
break;
case 8:
DrawVector(2*R,90);DrawVector(R,0);DrawVector(2*R,270);DrawVector(R,180);
DrawVector(-R,90); DrawVector(R,0);
break;
case 9:
DrawVector(1.4*R,45);DrawVector(R,90);DrawVector(R,180);DrawVector(R,270);DrawVector(R,0);
break;
}
up_down_pen(false);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Dvoetoschie ()
{
DrawVector(-R/2,90);DrawVector(R/2,90);
DrawVector(-R/2,90); DrawVector(R/2,90);
up_down_pen(false);
}