Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448

Кто объяснит алгоритм программы?

29.09.2017, 12:53. Показов 1535. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эта программа рисует множество соприкасающихся окружностей
могу предположить, что используется теорема Декарта (геометрия)
Но как все это происходит?

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
48
49
50
51
52
53
54
55
uses CRT, GraphABC; 
var
   x, y, a, b: Real;
   r: Real;
   a0, b0: Real;
   a1, b1, a2, b2: Real;
   f1x, f1y: Real;
   x1, y1: Real;
BEGIN
setwindowcaption('Фракталы: Множество Апполона');
   setwindowsize(650, 500);
   clearwindow;
   x := 0.2;
   y := 0.3;
   a := 0;
   b := 0;
   Randomize;
   r := Sqrt(3);
   while not KeyPressed do
      begin
         a := Random;
         a0 := 3*(1+r-x)/(sqr(1+r-x)+sqr(y))-(1+r)/(2+r);
         b0 := 3*y/(sqr(1+r-x)+sqr(y));
 
         if (a <= 1/3) and (a>=0) then
            begin
              x1 := a0;
              y1 := b0;
            end;
 
         a1 := -1/2;
         b1 := r/2;
         a2 := -1/2;
         b2 := -r/2;
         f1x := a0/(sqr(a0)+sqr(b0));
         f1y := -b0/(sqr(a0)+sqr(b0));
 
         if (a <= 2/3) and (a > 1/3) then
             begin
               x1 := f1x*a1-f1y*b1;
               y1 := f1x*b1+f1y*a1;
             end;
 
          if (a <= 3/3) and (a > 2/3) then
              begin
                x1 := f1x*a2-f1y*b2;
                y1 := f1x*b2+f1y*a2;
              end;
 
             x := x1;
             y := y1;
     PutPixel(320+Round(x*50), 240+Round(y*50), clRed);
 end;
 ReadKey 
END.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2017, 12:53
Ответы с готовыми решениями:

Кто объяснит mb_preg_match_all
Да я в курсе что всем mb_ штуки предназначены для работы с мультибайтовыми кодировками. Но как их на практике использовать? Просто замена...

Кто объяснит поведение Яндекса ?
Наблюдаю такую хронику событий. 28 мая - сайт попадает под раздачу (в индексе ноль страниц) :( 28 мая - 02 июня - с Яндекса на сайт...

кто объяснит сей фэнОмэн?
http://www.yandex.ru/yandsearch?text=%D1%E...ED%FB&amp;stype=www 2 -ая и 3-я позиции соответственно... ...

7
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
29.09.2017, 16:29
Лучший ответ Сообщение было отмечено йот как решение

Решение

Фракталы: Множество Апполона
1
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
29.09.2017, 17:05  [ТС]
Shamil1,
Спасибо, было очень интересно посмотреть и уже виденную программу
и другую. Но я не нашел объяснения к тому - как они написаны. Мне бы
к коду нужен комментарий. А так... эти программы и у меня работают...
...
программа тогда становится моей, когда я ее сумею сам написать, а здесь
в трех словах общий алгоритм. Что я и так знал. Этого явно мало...
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
29.09.2017, 21:09
Лучший ответ Сообщение было отмечено йот как решение

Решение

Вот тут подробно написано:
Как построить фрактал множество Аполлона
2
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
30.09.2017, 08:44  [ТС]
Shamil1,
СПАСИБО!!
0
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
20.10.2017, 11:22  [ТС]
Уважаемый Shamil1,
я постарался изучить весь материал по данной теме.
Информация, которая была предоставлена вами мне,
очень интересная. Но алгоритм программы СОВЕРШЕННО
ИНОЙ.
1. Задается случайная точка на интервале (0; 1)
2. И вычисляются две вспомогательные переменные a0 и b0
ИМЕННО ОНИ ПРЕДСТАВЛЯЮТ НАИБОЛЬШИЙ ИНТЕРЕС.
3. Далее (в цикле) с помощью случайной переменной каким
то невероятным способом вычисляются две координаты,
которые принадлежат "ПРОИЗВОЛЬНОЙ ОКРУЖНОСТИ"
4. Итак строятся точки... Одна точка принадлежит одной
окружности... Другая - другой... А рисунок - как циркулем...
5. В общем я не понял алгоритма...
6. Перевел эту программу еще на QBASIC. Может кому интересно будет...
7. Мне крайне интересно понять алгоритм...

QBasic/QuickBASIC
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
CLS
SCREEN 11
WINDOW (-6, 4.5)-(6, -4.5)
x = .2
y = .3
a = 0
b = 0
RANDOMIZE TIMER
r = SQR(3)
 
DO
   a = RND
   a0 = 3 * (1 + r - x) / ((1 + r - x) ^ 2 + y ^ 2) - (1 + r) / (2 + r)
   b0 = 3 * y / ((1 + r - x) ^ 2 + y ^ 2)
 
   IF a <= 1 / 3 AND a >= 0 THEN
      x1 = a0
      y1 = b0
   END IF
 
   a1 = -1 / 2
   b1 = r / 2
   a2 = -1 / 2
   b2 = -r / 2
   f1x = a0 / (a0 ^ 2 + b0 ^ 2)
   f1y = -b0 / (a0 ^ 2 + b0 ^ 2)
 
   IF a <= 2 / 3 AND a > 1 / 3 THEN
      x1 = f1x * a1 - f1y * b1
      y1 = f1x * b1 + f1y * a1
   END IF
 
   IF a <= 1 AND a > 2 / 3 THEN
      x1 = f1x * a2 - f1y * b2
      y1 = f1x * b2 + f1y * a2
   END IF
 
   x = x1
   y = y1
   PSET (x, y)
LOOP
END
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.10.2017, 16:29
Лучший ответ Сообщение было отмечено йот как решение

Решение

Я так понял тут нужны две функции:
1) поиск радиуса четвертой окружности зная радиусы трех используя уравнение теоремы Декарта
2)поиск пересечения двух окружностей
Или соединить их в одну. Дальше записать массивы окружностей и продумать какие брать…Это позволит получать такие:
1
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
20.10.2017, 18:05  [ТС]
Excalibur921,
спасибо... Только вот никаких массивов в этой программе не
используется. Найти радиус четвертой окружности несложно...
А далее... ?...?...? а далее стоят знаки вопросов...
1. Здесь, в коде, своя изюминка... какая?
2. Случайное число делится на ТРИ ИНТЕРВАЛА... зачем?
3. Может тут решение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2017, 18:05
Помогаю со студенческими работами здесь

Непонятная ошибка, кто объяснит?
Наткнулся на непонятную ошибку. Раньше код компилировался, теперь выдает ошибку. Для примера приведу небольшой тестовый вариант. ...

Кто объяснит такой прикол?!
вот только что столкнулся! Итак... Input - Delphi 7 - Win XP SP3 - avast ver 7.0 Process создаю новый проект....

Кто объяснит 2 блока вместе
&lt;div id=&quot;container&quot;&gt; &lt;header&gt; &lt;/header&gt; &lt;div class=&quot;menu&quot;&gt; &lt;/div&gt; &lt;nav class=&quot;leftsmenu&quot;&gt; &lt;ul&gt; ...

Кто объяснит про коллекции
Всем привет. Изучаю Java и на данный момент дошёл до изучения коллекций. Написал пару примеров е ине не совсем понятен вывод этих...

Кто объяснит почему не работает валидация?
есть валидатор для boolean я его тестирую и специально посылаю туда текст.мало ли что может быть. Чтобы весь валидатор не кидать,кину...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru