Простая графика в Java - PullRequest
0 голосов
/ 19 марта 2011

Я пытаюсь создать круг Эйуэлра с написанным мною способом, использующим класс Turtle.

Вот что я написал:

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(?)

}

}}

Я хочу сделать полный круг рисунков Эйлера Две основные проблемы с этим:

Не могу понять, как правильно управлять углами с помощью i и n.

Леонардо Черепаха рисует линии.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

Как насчет этого?

leonardo.turnLeft(360/n);

Конечно, это работает только для делителей 360, но их довольно много (1,2,3,4,5,6,8,9, 10,12,15,18,20 ...).Если ваш метод turnLeft принимает нецелые (то есть double или float) значения, используйте вместо этого

leonardo.turnLeft(360.0/n);

(и он также будет работать для 7, 11, ... - приблизительно.) * +1010 *

0 голосов
/ 19 марта 2011

Вам нужен алгоритм Флери, чтобы найти схему Эйлера на (неориентированном) взвешенном графике.Алгоритм Флери начинается в произвольной позиции с DFS и ищет следующий край, который должен пройти, если этот край не перекрывает график, а это означает, что график состоит из двух частей.Я не уверен, что вы хотите сделать с черепахой и математикой?Можете ли вы уточнить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...