int angle = 0; //глобальная переменная
int const pi = 3.14159; //глобальная константа
void Paint(void)
{
Rotate(60); //предполагается, что поворот
// осуществляется против часовой стрелки, на ang градусов
//черепаха находится в левом нижнем углу экрана, смотрит вправо
Draw(333, 6);//рисовать на 333 единицы, глубина итерации 6
Rotate(-120);
Draw(333, 6);//рисовать на 333 единицы, глубина итерации 6
Rotate(-120);
Draw(333, 6);//рисовать на 333 единицы, глубина итерации 6
}
void Rotate(int ang)
{
angle += ang + 360;
angle %= 360;
}
void Draw(int dist, int depth)
{
if(depth > 0)
{
Draw(dist/3, depth-1)
Rotate(60);
Draw(dist/3, depth-1)
Rotate(-120);
Draw(dist/3, depth-1)
Rotate(60);
Draw(dist/3, depth-1)
}
else
{
//Здесь функции рисования, зависят от того на чём и под что пишешь
//декартовы координаты вычисляются как cos(angle*pi/180)*dist и sin(angle*pi/180)*dist;
}
}
Построение геометрического фрактала "Снежинка Коха"
Извините за неточность изложения. Надеюсь кто-то понял.
"черепашью графику" - тогда проблем с лишней точкой не будет.
(Т.е. рисовать, задавая угол поворота и длину отрезка, который надо вывести)
В этом случае, если Rotate(int ang) - функция поворота, а
Draw(int dist, int depth) - рисования, то код будет примерно такой:
Код:
В результате должна получиться снежинка с глубиной итерации 6.
PS:код приведён для С++, но структура легко переносится практически на что угодно...
Основной код реализован в классе CTort, рисование начинается с OnPaint.