Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Кривая Серпинского

09.02.2018, 17:00. Показов 1205. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
uses GraphABC;
 
type
  TPoint = auto class
    X, Y: real;
  end;
 
procedure RLine(x, y, x1, y1: real) := Line(Round(x), Round(y), Round(x1), Round(y1)); 
 
procedure Draw(pA, pB: TPoint; invert: boolean; angle: integer);
var
  p1, p2: TPoint;
 
begin
  var r := Sqrt(Sqr(pB.X - pA.X) + Sqr(pB.Y - pA.Y)) / 2;
  var v := 1 - 2 * Ord(invert);
  var ang1 := DegToRad(angle - 60 * v);
  p1 := new TPoint(pA.X + r * Cos(ang1), pA.Y + r * Sin(ang1));
  
  var ang2 := DegToRad(angle - 120 * v);
  p2 := new TPoint(pB.X + r * Cos(ang2), pB.Y + r * Sin(ang2));
  
  if r < 10 then
  begin
    RLine(pA.X, pA.Y, p1.X, p1.Y);
    RLine(p1.X, p1.Y, p2.X, p2.Y);
    RLine(p2.X, p2.Y, pB.X, pB.Y);
  end
  else
  begin
    Draw(pA, p1, not invert, angle - 60);
    Draw(p1, p2, invert, angle);
    Draw(p2, pB, not invert, angle + 60);
  end;
end;
 
begin
  Draw(new TPoint(100, 300), new TPoint(500, 300), false, 0); // Изначально в качестве угла передается 0.
end.
Где ошибка в коде?

Добавлено через 3 часа 14 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses GraphABC;
 
procedure RLine(x, y, x1, y1: real) := Line(Round(x), Round(y), Round(x1), Round(y1)); 
 
function GetAngle(x, y, x2, y2: real): real;
begin
  var angle := Abs(RadToDeg(ArcTan((y2 - y) / (x2 - x))));
  if (x2 = x) and (y2 = y) then
    Result := 0
  else
    if x2 > x then
      if y2 > y then Result := angle else Result := 360 - angle
    else
      if y2 > y then Result := 180 - angle else Result := 180 + angle;
end;
 
procedure Draw(x, y, x1, y1: real; inverted: boolean);
begin
  var angle := GetAngle(x, y, x1, y1);
  var s := 1 - 2 * Ord(inverted);
  var r := Sqrt(Sqr(x1 - x) + Sqr(y1 - y)) / 2;
  
  var ang1 := DegToRad(angle - 60 * s);
  var xA := x + r * Cos(ang1);
  var yA := y + r * Sin(ang1);
  
  var ang2 := DegToRad(angle - 120 * s);
  var xB := x1 + r * Cos(ang2);
  var yB := y1 + r * Sin(ang2);
  
  if 2 * r < 8 then
  begin
    RLine(x, y, xA, yA);
    RLine(xA, yA, xB, yB);
    RLine(xB, yB, x1, y1);
  end
  else
  begin
    Draw(x, y, xA, yA, not inverted);
    Draw(xA, yA, xB, yB, inverted);
    Draw(xB, yB, x1, y1, not inverted);
  end;
end;
 
begin
  Draw(100, 100, 400, 450, false);
end.
Проблема решена
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2018, 17:00
Ответы с готовыми решениями:

Изобразить салфетку Серпинского
делать салфетку серпинского.Написать программу получения следующего изображения. Предусмотрите введение пользователем числа N-порядка.

Фрактальная графика: ковер Серпинского
Помогите написать программу, которая реализует ковер Серпинского на Pascal, используя рекурсивную функцию. Количество разбиений вводить с...

Разработать программу построения прокладки Серпинского TV-го порядка.
На рисунке изображены прокладки Серпинского 1 и 2-го уровня. Разработать программу построения прокладки Серпинского TV-го порядка.

2
09.02.2018, 17:06

Не по теме:

Красиво, ничего не скажешь

0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
09.02.2018, 17:44  [ТС]
Цитата Сообщение от Hitoku Посмотреть сообщение
Красиво, ничего не скажешь

Не по теме:

Спасибо, мне приятно :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2018, 17:44
Помогаю со студенческими работами здесь

Ковёр Серпинского: Подобрать координаты, чтобы закрашивались квадраты зелёным цветом
Помогите пожалуйста в предпредпоследней строчке,подобрать правильно координаты чтоб закрашивались квадраты зелёным цветом,а то у меня...

Кривая Минковского
Друзья, помогите! Нужно кривую Минковского сделать в паскале, вроде все как надо пишу, а совсем не то получилось. Где ошибка может быть? ...

Кривая Дракона
uses SmallTurtle; const Angle = 90; StringWay = '1101100111001001110110001100100111001100111001000110110001100100'; n = 20; ...

Кривая астроида
помогите кто сможет: 1. Кривая астроида определяется следующим уравнением в параметрической форме: x=Rcos^3(φ),...

Кривая Коха
Во время реализации встал вопрос. Как вычислять координаты точки C? Координаты P1, P2 - известны. Координаты A и B - вычислил по следующей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru