Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

torrvic, возможно, Вам нужно добавить -lGLU
Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

Счетчики и рейтинг

Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Microsoft Visual Studio 2015
Статья по теме: 

Программа рисующая фрактал-биоморф "Радиолярия", написанная на C# с использованием стандартной графической библиотеки

Код программы: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Biomorph
{
    public partial class Form1 : Form
    {
        public Graphics g; //Графика
        public Bitmap map; //Битмап
        SolidBrush br; //Кисть
        public const int it = 50, max = 100; //Коэффициенты для выхода из основного цикла
        public int n; //Количество итераций
        public int xc, yc; //Координаты центра
        public PointF z, t, c; //Комплексные числа
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //Координаты центра
            xc = pictureBox1.Width / 2;
            yc = pictureBox1.Height / 2;
 
            //Подключение графики
            map = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            g = Graphics.FromImage(map); 
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
 
            //Определяем коэффициент C
            c.X = 0.5f;
            c.Y = 0f;
 
            //Основной цикл по всем точкам комплексной плоскости
            for (float x = -2; x <= 2; x += 0.002f)
            {
                for (float y = -2; y <= 2; y += 0.002f)
                {
                    z.X = x;
                    z.Y = y;
                    n = 0;
 
                    //Итерируем функцию f(z) = z^3 + c
                    while ((Math.Abs(z.X) < max) && (Math.Abs(z.Y) < max) && (n < it))
                    {
                        t.X = z.X;
                        t.Y = z.Y;
                        n++;
                        z.X = t.X * t.X * t.X - 3 * t.X * t.Y * t.Y + c.X;
                        z.Y = 3 * t.X * t.X * t.Y - t.Y * t.Y * t.Y + c.Y;
 
                    }
 
                    //Определяем зоны черного и оранжевого
                    if ((Math.Abs(z.X) >= 300) || (Math.Abs(z.Y) >= 10000))
                    {
                        br = new SolidBrush(Color.Black);
                        int xt = ChangeCoordinates(x, 0);
                        int yt = ChangeCoordinates(y, 1);
                        g.FillRectangle(br, xt, yt, 1, 1);
                        pictureBox1.BackgroundImage = map;
 
                    }
                    else
                    {
                        br = new SolidBrush(Color.Orange);
                        int xt = ChangeCoordinates(x, 0);
                        int yt = ChangeCoordinates(y, 1);
                        g.FillRectangle(br, xt, yt, 1, 1);
                        pictureBox1.BackgroundImage = map; 
                    }
                }
            }
        }
 
        //Перевод координат из реальных в машинные
        public int ChangeCoordinates(double a, int isY)
        {
            if (isY == 1) return (int)(yc - a * 150);
            return (int)(xc + a * 150);
        }
    }
}

Прикрепленный файлРазмер
RadioLaria.zip52.02 кб