java中的简单图形

时间:2011-03-19 12:53:16

标签: java math graphics

我正在尝试使用我编写的使用名为Turtle的类的方法创建一个Euelr圈。

这就是我写的:

public class turtleAa {


public static void main(String[] args) {
int number = LineInput.readInt();
euelr(number);

}

public static void euelr(int n){

    Turtle leonardo = new Turtle();
    leonardo.tailDown();
    for (int i=1; i<=n; i++){
    leonardo.moveForward(50);
    leonardo.turnRight(90);
    leonardo.moveForward(50);
    leonardo.turnLeft(135);
    leonardo.moveForward(35);
    leonardo.turnLeft(90);
    leonardo.moveForward(35);
    leonardo.turnLeft(90);
    leonardo.moveForward(70.71067812);
    leonardo.turnLeft(135);
    leonardo.moveForward(50);
    leonardo.turnLeft(135);
    leonardo.moveForward(70.71067812);
    leonardo.turnLeft(135);
    leonardo.moveForward(50);
    leonardo.turnLeft(?)

}

}}

我想整整一圈of Euler drawnings 这有两个主要问题:

无法理解如何正确控制i和n的角度。

莱昂纳多龟正在画线。

谢谢。

2 个答案:

答案 0 :(得分:2)

这个怎么样?

leonardo.turnLeft(360/n);

这当然只适用于360的除数,但其中有相当一部分(1,2,3,4,5,6,8,9,10,12,15,18,20 ... )。如果您的turnLeft方法接受非整数(即doublefloat)值,请使用

leonardo.turnLeft(360.0/n);

相反(它也适用于7,11,...... - 大约。)

答案 1 :(得分:0)

你想要的是Fleury算法在(无向)加权图中找到Euler电路。 Fleury算法从具有DFS的随机位置开始,并且如果该边缘没有桥接图形,则查找下一个要行进的边缘,这意味着将图形分成两部分。我不确定你想用乌龟和数学做什么?你能详细说明吗?