Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/146: Рейтинг темы: голосов - 146, средняя оценка - 4.82
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 319
1

Нарисовать фрактал Dragon Curve

01.03.2017, 15:41. Показов 26539. Ответов 4

Author24 — интернет-сервис помощи студентам
Прошу помочь. Проект прикреплен снизу. Вот сам текст задачи:
"Алгоритм построения фрактала читайте в комментариях в классе DragonFractalTask.
Как генерировать случайные числа?
Для этого в пространстве имен System есть класс Random. Работать с ним нужно так:

1. Создание нового генератора последовательности случайных чисел:
var random = new Random(seed);
seed — число полностью определяющее все последовательность псевдослучайных чисел этого генератора.​

2. Получение очередного псевдослучайного числа от 0 до 9:

var nextNumber = random.Next(10);
Если при инициализации генератора случайных чисел не указывать seed, то используется текущее время компьютера с точностью до миллисекунд. Поэтому если вы создадите два генератора подряд, то с большой вероятностью они проинициализируются одинаково и будут выдавать одну и ту же последовательность.

Типичная ошибка начинающих — поместить обе операции внутрь цикла, тогда как правильно вынести создание генератора за пределы цикла, оставив внутри только получение следующего числа."
Вложения
Тип файла: rar Dragon_Fractals.rar (38.0 Кб, 146 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2017, 15:41
Ответы с готовыми решениями:

Нарисовать разноцветный круговой фрактал с кнопкой "рисовать"
нужно нарисовать разноцветный круговой фрактал с кнопкой "рисовать", однако по графике в делфи...

Как нарисовать фрактал "Крест Ньютона"?
Здравствуйте. По заданию мне нужно нарисовать Крест Ньютона, который выглядит примерно та У меня...

Нарисовать фрактал "Множество Кантора"
Здравствуйте. Никто не подскажет, как нарисовать на форме фрактал Множество Кантора? Спасибо.

WPF и Curve график
Коллеги, подскажите пожалуйста. Нужно построить график по нескольким точкам. В WFA есть такая шняга...

4
1 / 1 / 0
Регистрация: 28.03.2013
Сообщений: 6
03.03.2017, 06:15 2
C#
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
public static void DrawDragonFractal(Pixels pixels, int iterationsCount, int seed)
        {
            /*
            Начните с точки (1, 0)
            Создайте генератор рандомных чисел с сидом seed
            
            На каждой итерации:
 
            1. Выберите случайно одно из следующих преобразований и примените его к текущей точке:
 
                Преобразование 1. (поворот на 45° и сжатие в sqrt(2) раз):
                x' = (x · cos(45°) - y · sin(45°)) / sqrt(2)
                y' = (x · sin(45°) + y · cos(45°)) / sqrt(2)
 
                Преобразование 2. (поворот на 135°, сжатие в sqrt(2) раз, сдвиг по X на единицу):
                x' = (x · cos(135°) - y · sin(135°)) / sqrt(2) + 1
                y' = (x · sin(135°) + y · cos(135°)) / sqrt(2)
        
            2. Нарисуйте текущую точку методом pixels.SetPixel(x, y)
 
            */
            var x = 1.0;
            var y = 0.0;
            var angle45 = Math.PI * 45 / 180;
            var angle135 = Math.PI * 135 / 180;
            var random = new Random(seed);
            for (int i = 0; i < iterationsCount; i++)
            {
                var nextNumber = random.Next(1,3);
                if (nextNumber == 1)
                {
                    x = (x * Math.Cos(angle45) - y * Math.Sin(angle45)) / Math.Sqrt(2);
                    y = (x * Math.Sin(angle45) + y * Math.Cos(angle45)) / Math.Sqrt(2);
                }
                if (nextNumber == 2)
                {
                    x = (x * Math.Cos(angle135) - y * Math.Sin(angle135)) / Math.Sqrt(2) + 1;
                    y = (x * Math.Sin(angle135) + y * Math.Cos(angle135)) / Math.Sqrt(2);
                }
                pixels.SetPixel(x, y);
            }
сделал вот так, но выводит какую-то ерунду, может кто доработает?
1
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 758
03.03.2017, 11:30 3
Лучший ответ Сообщение было отмечено Mnemonik39 как решение

Решение

aki295a,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var x = 1.0;
var y = 0.0;
var angle45 = Math.PI * 45 / 180;
var angle135 = Math.PI * 135 / 180;
var random = new Random(seed);
for (int i = 0; i < iterationsCount; i++)
{
    var nextNumber = random.Next(1, 3);
    if (nextNumber == 1)
    {
        var x1 = (x * Math.Cos(angle45) - y * Math.Sin(angle45)) / Math.Sqrt(2);
        var y1 = (x * Math.Sin(angle45) + y * Math.Cos(angle45)) / Math.Sqrt(2);
        x = x1; // !!!
        y = y1; // !!!
    }
    if (nextNumber == 2)
    {
        var x1 = (x * Math.Cos(angle135) - y * Math.Sin(angle135)) / Math.Sqrt(2) + 1;
        var y1 = (x * Math.Sin(angle135) + y * Math.Cos(angle135)) / Math.Sqrt(2);
        x = x1; // !!!
        y = y1; // !!!
    }
    pixels.SetPixel(x, y);
3
1 / 1 / 0
Регистрация: 28.03.2013
Сообщений: 6
03.03.2017, 11:58 4
Не догадался что x' другая переменная, понятно
0
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 3
10.11.2019, 17:58 5
А в чем собственно разница?

Добавлено через 12 минут
Хотя уже понял, немного тупой быввю
0
10.11.2019, 17:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2019, 17:58
Помогаю со студенческими работами здесь

Шифрование Elliptic Curve DSA
RSA алгоритм (класс RSACryptoServiceProvider в Net) позволяет шифровать массивы байт , а вот...

Вписывание кривой (best fit curve)
Очень нужна программа для вписывания дуги чрез точки: В качестве исходных данных имеется массив...

Построение графика функции с использованием Curve
Народ, можете скинуть код программы, где используется Curve (построение кривой линии по точкам,...

Процедура Curve() для построения графика
Кто-нибудь использовал ее для построения графиков? Если не жалко, скиньте пример использования.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru