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

Вход на сайт

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

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

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

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

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

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

Построить фрактал Квазиклевер, в котором вместо окружностей за единицу берутся ромбы.
После запуска программы, необходимо нажать на появившееся окно для отрисовки фрактала.

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

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace Fractal_QuasiClever
{
    public partial class Form1 : Form
    {
        public const int cond = 7;
        //должен быть равен количеству итераций(необходим для отрисовки фрактала со всех сторон)
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Graphics g = pictureBox1.CreateGraphics();
            g.Clear(Color.Black);//Зарисовка экрана черным фоном
 
            Draw_Fractal(400, 400, 120, 2, 7);
            //Вызов функции рисования фрактала, со значениями главного ромба
 
        }
        private int Draw_Fractal(int xc, int yc, int rad, int dir, int it)
        //xc, yc - координаты цетра ромба, rad - радиус ромба, 
        //dir - позиция ромба-родителя(0-внизу, 1-слева, 2-сверху, 3-справа)
        //it - количество итераций отрисовки ромбов,
        {
            Graphics g = pictureBox1.CreateGraphics();
 
            //Массив цветов
            Color[] clr = new Color[]
            { 
              Color.Black, Color.Orange, Color.Crimson, Color.Lime, 
              Color.Yellow, Color.Red, Color.Magenta, Color.Blue 
            };
 
            //Объявление цвета закраски ромба
            SolidBrush Romb = new SolidBrush(clr[it]);
 
            //Отрисовка ромба по заданным координатам
            g.FillPolygon(Romb, new Point[]
            { 
                new Point(xc, yc+rad), new Point(xc-rad, yc), 
                new Point(xc, yc-rad), new Point(xc+rad, yc)
            });
 
            if (it == 0) return 0;
            it--;
 
            //Объявление массива с координатами точек - центров ромбов-потомков
            int[] x = new int[4];
            int[] y = new int[4];
 
            //пересчитывания координат центров ромбов-потомков
            x[0] = xc;
            y[0] = yc+((3*rad)/2);    
            x[1] = xc-((3*rad)/2);
            y[1] = yc;
            x[2] = xc;
            y[2] = yc-((3*rad)/2);
            x[3] = xc+((3*rad)/2);
            y[3] = yc;
            rad=rad/2;
 
            //Отрисовка ромбов-потомков
            for (int i = 0; i < 4; i++)
            {
                //
                if((dir==2) && (it+1==cond))
                {
                    Draw_Fractal(x[i], y[i], rad, i, it);
                    continue;
                }
                else
                //
                if ((i - dir == 2) || (i - dir == -2)) { continue; }
                Draw_Fractal(x[i], y[i], rad, i, it);
            }
            return 0;
        }
 
    }
}

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