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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

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

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 WindowsFormsApplication8
{
    public partial class Form1 : Form
    {        
        Graphics g;
        Bitmap bmp;
        int rh = 210;//длинна стороны шестиугольника
        int cnt = 0;//количество тиков таймера
        int k = 0;//номер вершины шестиугольника
        double ang = (Math.PI) * 2 / 3;//угол на который поворачиваем круги
        Point[] pt=new Point[7];//массив вершин шестиугольника
        Pen lines = new Pen(Color.FromArgb(20,Color.DimGray),2);//для прорисовки всех линий
        int flag = 0;
        public Form1()
        {
            InitializeComponent();
        }
        //вершины шестиугольника
        void Hexagon()
        {
            double ang = 0;
            int x, y;
            pt[0].X = rh;
            pt[0].Y = 0;
            for (int i = 1; i < 7; i++)
            {
                ang += (Math.PI) * 2 / 6;
                x = (int)(Math.Cos(ang) * rh);
                y = (int)(Math.Sin(ang) * rh);
                pt[i].X = x;
                pt[i].Y = y;
 
            }           
        }
        //все дуги
        void DrawArcs()
        {
            int ang = 120;
            for(int i = 0; i < 7; i++)
            {
                for(int r = 30; r <= 210; r += 30)
                {
                    g.DrawArc(lines, pt[i].X - r, pt[i].Y - r, 2 * r, 2 * r, ang, 120);                    
                }
                ang += 60;
            }
 
        }
        void Circle(int x,int y,int r,Color col)
        {
            g.FillEllipse(new SolidBrush(col), x - r, y - r, 2 * r, 2 * r);
        }
        //8 кругов вокруг точки pt
        void DrawCircles(Point pt,double ang)
        {
            int r = 0;
            int x, y;
 
            for(int i = 0; i < 8; i++)
            {
                x = (int)(Math.Cos(ang) * r + pt.X);
                y = (int)(Math.Sin(ang) * r + pt.Y);
                Circle(x, y, 5,Color.FromArgb(255,255-r,0+r,150));
                r += 30;
 
            }
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (flag == 0)
            {
                Hexagon();//просчитываем вершины шестиугольника
                flag = 1;
            }
            //Создаем bitmap и графику из bitmap
            bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            g = Graphics.FromImage(bmp);
 
            g.TranslateTransform(pictureBox1.Width / 2, pictureBox1.Height / 2);//перемещаем начало координат в центр
            g.Clear(Color.Black);//заливаем фон
            g.DrawPolygon(lines, pt);//рисуем шестиугольник
            DrawArcs();//рисуем все дуги
            DrawCircles(pt[6-k], ang);//круги вокруг точки pt[6-k]
            pictureBox1.Image = bmp;//отображаем bitmap на PictureBox 
 
            ang += (Math.PI) /15;
            cnt++;
            //если точки перешли на другую сторону,меняем угол и точку,вокруг которой будут вращаться точки
            if (cnt % 10 == 0)
            {
                ang -= (Math.PI);
                k++;
                k %= 6;
            }            
        }       
    }
}

Прикрепленный файлРазмер
Sherfedinova_hexagon.zip6.05 кб