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

Вход на сайт

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

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

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

Рекурсия присутствует?
И где эти прикрепленные файлы?
Я код на C++ набрал сам. Строил кривую Безье, но "прилипал" к нулю. То есть я задаю точки далеко от нуля, а он строил из нуля, а потом только обходил предложенные точки. Потом я нашёл Ваш сайт и эту статью. Оказалось, что я забыл возвести t в...
просто я не так понял, здесь мы вращаем точки куба что вращает сам куб. Мне нужно вращать просто 3д объект , данный способ не подходит
Задавайте объект в мировых координатах. Вращайте его относительно мировой системы координат. А при отрисовке преобразуйте в экранные координаты. Посмотрите пример преобразования в экранные координаты.

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

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

Программа, рисующая фрактал Висекка, написанная на C# с использованием стандартной графической библиотеки. Рекурсивный алгоритм рисует изображение с небольшой задержкой с целью получения красивого эффекта.
Для рисования требуется нажать кнопки:
Draw I-Type - отрисуется фрактал, образованный с удалением угловых
квадратов,
Draw II-Type - с удержанием угловых квадратов,
Combine - для получения наложения.

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

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace ViscekFractal
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Pen myRedPen = new Pen(Color.Red, 3);
        Pen myWhitePen = new Pen(Color.White, 3);
 
        // Функция рисует фрактал с центром в точке (x, y) фрактал 1-го типа 
        // degree - количество итераций
        private void DrawFractal(int degree, int x, int y, Pen myPen)
        {
            Graphics g = this.CreateGraphics();
            if (degree == 1)
            {
                // Достигли центра
                g.DrawRectangle(myPen, x, y, 1, 1);
            }
            else
            {
                int dist = (int)Math.Pow(3, degree - 1);
                // Рассчитываем центры для ветвей
                System.Threading.Thread.Sleep(10);
                // Задержка
                DrawFractal(degree - 1, x, y,               myPen);
                DrawFractal(degree - 1, x - dist, y - dist, myPen);
                DrawFractal(degree - 1, x - dist, y + dist, myPen);
                DrawFractal(degree - 1, x + dist, y - dist, myPen);
                DrawFractal(degree - 1, x + dist, y + dist, myPen);
            }
        }
        // Функция рисует фрактал с центром в точке (x, y) фрактал 2-го типа 
        private void DrawSimilarFractal(int degree, int x, int y, Pen myPen)
        {
            Graphics g = this.CreateGraphics();
            if (degree == 1)
            {
                g.DrawRectangle(myPen, x, y, 1, 1);
            }
            else
            {
                int dist = (int)Math.Pow(3, degree - 1);
                System.Threading.Thread.Sleep(10);
                DrawSimilarFractal(degree - 1, x,           y,          myPen);
                DrawSimilarFractal(degree - 1, x + dist,    y,          myPen);
                DrawSimilarFractal(degree - 1, x - dist,    y,          myPen);
                DrawSimilarFractal(degree - 1, x,           y - dist,   myPen);
                DrawSimilarFractal(degree - 1, x,           y + dist,   myPen);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            DrawFractal(5, 150, 200, myWhitePen);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            DrawSimilarFractal(5, 800, 200, myWhitePen);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            DrawFractal(5, 475, 200, myWhitePen);
            DrawSimilarFractal(5, 475, 200, myRedPen);
        }
    }
}

Прикрепленный файлРазмер
Ametov_ViscekFractal.zip53.64 кб