Пример #1
0
// Recursive Koch fractal
void koch(Turtle& turtle, int level, double size, double angle) {
    if (level == 0) {
        turtle.forward(size);
    } else {
        koch(turtle, level - 1, size, angle);
        turtle.left(angle);
        koch(turtle, level - 1, size, angle);
        turtle.right(angle);
        turtle.right(angle);
        koch(turtle, level - 1, size, angle);
        turtle.left(angle);
        koch(turtle, level - 1, size, angle);
    }
}
Пример #2
0
// Recursive fractal "tree" structure
void tree(Turtle& turtle, int level, double size, double angle,
        double scale) {
    if (level == 0) {
        turtle.forward(size);
        turtle.backward(size);
    } else {
        turtle.forward(size);
        turtle.left(angle);
        tree(turtle, level - 1, size * scale, angle, scale);
        turtle.right(angle);
        turtle.right(angle);
        tree(turtle, level - 1, size * scale, angle, scale);
        turtle.left(angle);
        turtle.backward(size);
    }
}
Пример #3
0
void drawStar(Turtle& turtle, double size, int sides) {
    for (int i = 0; i < sides; i++) {
        turtle.forward(size);
        turtle.right(360.0 / sides);
        turtle.forward(size);
        turtle.left(2 * 360.0 / sides);
    }
}
Пример #4
0
// Use Koch fractal to draw a "snowflake"
void kochSnowflake(Turtle& turtle, int level, double size) {
    double angle = 60;
    turtle.left(angle);
    koch(turtle, level, size, angle);
    turtle.right(angle);
    turtle.right(angle);
    koch(turtle, level, size, angle);
    turtle.right(angle);
    turtle.right(angle);
    koch(turtle, level, size, angle);
}
Пример #5
0
void symetric_star(int number_of_sides, const int IMAGE_SIZE, std::string file_name){

	Turtle turtle (IMAGE_SIZE/2,IMAGE_SIZE/2,IMAGE_SIZE);
	int angle = 180 - 180/number_of_sides;
	turtle.pendown();
	for (int x = 0; x < number_of_sides; ++x)
	{
		turtle.left(angle);
		turtle.forward(5);
	}
	turtle.save(file_name);
}
Пример #6
0
int ccc_win_main() {
    Turtle t;
    bool running = true;
    while (running == true) {
        double sides = -1;
        while (sides < 1)   {
            sides = t.getInt("Enter number of sides:");
        }
        double length = t.getDouble("Enter length of sides:");

        if (sides > 1) {
            int degrees = DEGREES_IN_CIRCLE / sides;
            t.setHeading(LEFT);
            
            /* 
            Apothem is the distance of the normal of any side of the polygon
            to the centerpoint of the polygon. The following code will
            center the shape in the window.
            */
            double apothem = length / (2 * tan(PI / sides)); 
            t.moveTo(length / 2, -apothem);
            
            int i = 0;
            while (i < sides) {
                t.forward(length);
                t.right(degrees);
                i++;
            }
        }
        if (sides == 1) {
            t.setHeading(0);
            // Creates the upper case letter M.
            t.moveTo(NTHREE,NNINE);
            t.right(TEN);
            t.forward(FORWARD_INC);
            t.right(G_TURN2);
            t.forward(FORWARD_INC);
            t.left(G_TURN2);
            t.forward(FORWARD_INC);
            t.right(G_TURN2);
            t.forward(FORWARD_INC);   

            // Creates the upper case letter G.
            t.moveTo(SEVEN_POINT_FIVE, N_ONE_POINT_FIVE);
            t.left(G_TURN);
            t.forward(2);
            t.backward(2);
            t.right(ONE_THIRTY);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(G_TURN);
            t.forward(2);
            t.left(SMALL_TURN);
            t.forward(1);
            t.left(SMALL_TURN);
            t.forward(1);
            t.left(SMALL_TURN);
            t.forward(1);
            t.left(SMALL_TURN);
            t.forward(1);
            t.backward(2);

            // Creates the upper case letter J.
            t.setHeading(RIGHT_TURN);
            t.moveTo(NSEVEN, FIVE);
            t.forward(2);
            t.right(STRAIGHT);
            t.forward(1);
            t.left(RIGHT_TURN);
            t.forward(2);
            t.right(RIGHT_TURN);
            t.forward(1);

            // Creates the upper case letter W.
            t.moveTo(-FOUR, FIVE);
            t.right(TWO_THIRTY);
            t.forward(W_INC);
            t.left(RIGHT_TURN);
            t.forward(2);
            t.right(RIGHT_TURN);
            t.forward(2);
            t.left(RIGHT_TURN);
            t.forward(W_INC);

            // Creates the upper case letter C.
            t.moveTo(FOUR, FIVE);
            t.right(C_TURN);
            t.forward(2);
            t.right(STRAIGHT);
            t.forward(2);
            t.left(RIGHT_TURN);
            t.forward(2);
            t.left(RIGHT_TURN);
            t.forward(2);
        }

        string repeat = t.getString("Do you wish to continue (y/n)? ");
        if (repeat != "y") running = false;
        else t.clear();
    }

    cout << "Exiting Program.\n";

    exit(0);
    return 0;

}
Пример #7
-2
void drawPolygon(Turtle& turtle, double size, int sides) {
    double angle = 360.0 / sides;
    for (int count = 0; count < sides; count++) {
        turtle.forward(size);
        turtle.left(angle);
    }
}