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

Вход на сайт

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

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

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

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

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

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

Функция drawFractal получает в качестве параметров координаты центра круга, затем радиус, затем индекс, определяющий положение его родителя(для самого первого полагаем, что родитель был "снизу"), а также количество итераций. Рисуем круг со входными данными, далее в случае, если итераций не осталось, заканчиваем отрисовку, иначе - находим координаты всех центров потенциальных кругов-потомком, а затем для каждого, кроме того, чье место занято родителем, вызываем эту же самую функцию с соответствующими параметрами.

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

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            g = pictureBox1.CreateGraphics();            
            S = new SolidBrush(Color.Black);
        }
 
        private Graphics g;
        SolidBrush S;
 
        private void button1_Click(object sender, EventArgs e)
        {
            int x, y, r;
            r = pictureBox1.Height / 6;
            x = pictureBox1.Width / 2;
            y = 3 * pictureBox1.Height / 5;
            int iter = 5;
            drawFractal(x, y, r, 1, iter);
        }
 
        int drawFractal(int x0, int y0, int r, int dir, int iter)
        {
            g.FillEllipse(S, x0 - r, y0 - r, 2 * r, 2 * r);
 
            if (iter == 0)
                return 0;
            int[] x = new int[4];
            int[] y = new int[4];
            int d = 3 * r / 2;
            x[0] = x0 - d;
            y[0] = y0;
            x[1] = x0;
            y[1] = y0 - d;
            x[2] = x0 + d;
            y[2] = y0;
            x[3] = x0;
            y[3] = y0 + d;
 
            for (int i = 0; i < 4; i++)
            { //draw every child except parent direction
                if (i - dir == 2 || i - dir == -2)
                    continue;
                drawFractal(x[i], y[i], r / 2, i, iter - 1);
            }
            return 0;
        }
    }
}

Прикрепленный файлРазмер
hairudinov_fractal_kvaziclever.zip55.07 кб