example.turtlelogo.Hearts   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 33
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A arc(Turtle,double,double) 0 4 2
A main(String[]) 0 10 1
heart 0 13 ?
A heart(Turtle,double) 0 13 1
1
package example.turtlelogo;
2
3
import org.gannacademy.cdf.turtlelogo.Turtle;
4
import org.gannacademy.cdf.turtlelogo.docs.SavableTerrarium;
5
6
public class Hearts {
7
    public static void arc(Turtle turtle, double radius, double arcLength) {
8
        for (int i = 0; i < arcLength; i++) {
9
            turtle.rt(1);
10
            turtle.fd(2.0 * Math.PI * radius / 360.0);
11
        }
12
    }
13
14
    public static void heart(Turtle turtle, double size) {
15
        double heading = turtle.getHeadingInDegrees();
16
        double  radius = size / 4.0,
17
                side = size / 2.0 - (radius - Math.cos(Math.PI / 4.0) * radius),
18
                diagonal = Math.sqrt(2 * Math.pow(side, 2));
19
        turtle.lt(45);
20
        arc(turtle, radius, 225);
21
        turtle.head(heading);
22
        arc(turtle, radius, 225);
23
        turtle.fd(diagonal);
24
        turtle.rt(90);
25
        turtle.fd(diagonal);
26
        turtle.head(heading);
27
    }
28
29
    public static void main(String[] args) {
30
        SavableTerrarium terrarium = new SavableTerrarium();
31
        Turtle clarence = new Turtle(terrarium);
32
        clarence.head(Turtle.NORTH);
33
        heart(clarence, 100);
34
        clarence.tp(100, 100);
35
        heart(clarence, 50);
36
        clarence.tp(200, 150);
37
        heart(clarence, 300);
38
        terrarium.drawTo("hearts.png");
39
    }
40
}
41