Пример #1
0
int main(int argc, const char *argv[])
{
   const int level = 8;
// const double size = 30.0;  /* 30mm trunk for A4 */
   const double size = 65.0;  /* 65mm trunk for A3 */
   
   turtle(DEV_HPGL, SIZ_A3, ORI_LAND, FLG_RELS|FLG_BORD);
   
// title("http://www.dorkbot.org/dorkbotbristol/", 3.75, BOT|CENTRE, FLG_NONE);
   title("Bristol Hackspace", 3.75, BOT|CENTRE, FLG_NONE);
   
   pen(UP);
   turn(-90.0);
   forward(1.9 * size);
   turn(180.0);
   pen(DOWN);

   colour(BLACK);
   
   tree(level, size);

   show();
   
   return (0);
}
Пример #2
0
int do_it(turtle_t *befehle, int anzahl)
{
	int i;
	for (i = 0; i < anzahl; i++)
	{
		turtle(befehle[i].befehl,befehle[i].p1,befehle[i].p2);
	}
}
Пример #3
0
int main(int argc, char **argv)
{
	ros::init(argc, argv, "turtlemove");
	ROS_INFO("Initialized ROS.");

	ros::NodeHandle nodeHandle;
	MyLittleTurtle turtle(nodeHandle);
	turtle.move();

	ROS_INFO("Bye!");
	return 0;
}
Пример #4
0
void lawnmower(void)
{

	srand(time(NULL));
	border_t check;
	while(1)
	{
		turtle("fd", rand()%RANDMOVE_MAX, NOP);
		check = checkBorder();
		switch (check)
		{
		case INSIDE:
			turtle("sh", rand()%360, NOP);
			break;
		case NORTH:
			turtle("sh", 90 +rand()%RANDTURN_MAX, NOP);
			break;
		case EAST:
			turtle("sh", 180 +rand()%RANDTURN_MAX, NOP);
			break;
		case SOUTH:
			turtle("sh", (270 +rand()%RANDTURN_MAX)%360, NOP);
			break;
		case WEST:
			turtle("sh", rand()%RANDTURN_MAX, NOP);
			break;
		}
	}
}
Пример #5
0
unsigned char * turtle_inplace(
    unsigned char * X, const unsigned int sz, const unsigned int w,
    unsigned char * (*f)(const unsigned int, unsigned char *, const unsigned char *,
                         const unsigned int, const unsigned char *, const unsigned int),
    unsigned char * f_data, const unsigned int f_data_size) {

    unsigned char tmp[sz];

    turtle(tmp, X, sz, w, f, f_data, f_data_size);

    memcpy(X, tmp, sz);

    return X;
}
Пример #6
0
int turtle(befehl_t befehl, int p1, int p2)
{
	int retval = -1;

	if ((strcmp(befehl, "fd") == 0) && (p2 == NOP) && (p1 >= 0))
	{
		stepper(BOTH,VOR, p1);
		retval = 1;
	}
	else if((strcmp(befehl, "bk") == 0) && (p2 == NOP) && (p1 >= 0))
	{
		stepper(BOTH,RUECK, p1);
		retval = 1;
	}
	/* NG: Mit achsenabschnitt 25 cm kann man nicht nur um 1 grad drehen, da die drehung um 1 grad 0,47cm lauflänge beträgt.
	 * Dies wird entweder abgerundet auf 0 und nicht gedreht oder auf 1 und um 2 grad gedreht.
	 * Die Steppermethode hat jedoch die Vorgabe das der Parameter distanz in cm angegeben wird.
	*/
	else if((strcmp(befehl, "rt") == 0) && (p2 == NOP) && (p1 >= 0))
	{
		stepper(M1,VOR, (p1*CMDEG));
		retval = 1;
	}
	else if((strcmp(befehl, "lt") == 0) && (p2 == NOP) && (p1 >= 0))
	{
		stepper(M1,RUECK, (p1*CMDEG));
		retval = 1;
	}
	else if(strcmp(befehl, "go") == 0)
	{
		int i =0;
		do
		{
			int newx = p1-*px;
			int newy = p2-*py;
			double newh;

			/*if((newx == 0) || (newy == 0))
				newh = *pa;
			else*/
			{
				newh = atan2(newy,newx);
				if(newh >= 0)
					newh = (newh * 180 / (M_PI));
				else
					 newh = ((2*M_PI + newh) * 180 / (M_PI));
			}

			if((p1 == *pa) && (p2 == *py))
			{
				retval = 1;
			}
			else
			{
					turtle((befehl_t)"sh",(int)round(newh), NOP);
					turtle((befehl_t)"fd", (int)sqrt(newx*newx+newy*newy), NOP);
			}
			i++;
		}
		while(i<2); // NG: doppelt go ausführen weil wegen ungenauigkeit beim ersten mal die position knapp daneben liegt, zweiter lauf zur korrektur.


	}
	else if((strcmp(befehl, "sx") == 0) && (p2 == NOP))
	{
		*px = p1;
		retval = 1;
	}
	else if((strcmp(befehl, "sy") == 0) && (p2 == NOP))
	{
		*py = p1;
		retval = 1;
	}
	else if ((strcmp(befehl, "sh") == 0) && (p2 == NOP) && (p1 >= 0) && (p1 < 360))
	{
		if (p1 > *pa)
		{
			turtle((befehl_t)"rt",abs(*pa-p1), NOP);
		}
		else
		{
			turtle((befehl_t)"rt",360 - abs(*pa-p1), NOP);
		}
		retval = 1;
	}
	else if((strcmp(befehl, "ho") == 0) && (p2 == NOP) && (p1 == NOP))
	{
		turtle((befehl_t)"go", 0, 0);
		retval = 1;
	}
	return retval;
}
Пример #7
0
void MyFrame::DrawTurtle()
{
    Turtle turtle(this);
    turtle.Perform();
}