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

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

Построения
на плоскости (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 Яндекс.Метрика
Язык программирования: 
Java
Среда программирования: 
Processing

float circle_x = 0;
float circle_y = 0;
float circle_diam = 20;
int state = 0;
float colors[] = {120, 0, 200, 213, 15, 121, 35, 95, 67};
// how much to move the circle on each frame
float move_x = 2;
float move_y = -2;
int i=0;
float j=0.1f;
int k=0;
int x_shift = 60;
int y_shift = 60;
int stroke_weight = 4;
int stroke_weight_2 = stroke_weight+1;
 
void setup() {
  size(500, 500);
  background(0);
  noStroke();
  while(circle_y < height){
 
    //заполняем наши круги различными цветами. Как только заполнили нужный круг цветом, переходим к
    //следующей тройке rgb в нашем массиве colors[]
    fill(colors[i], colors[i+1], colors[i+2]);
    i+=3;
    if(i>8)
    {
      i=0;
    }
 
    //отрисовываем круги, сдвигаясь каждый раз на определенное расстояние x_shift
    //до тех пор, пока не дойдем до края окна
    ellipse(circle_x, circle_y, circle_diam, circle_diam);
    circle_x+=x_shift;
 
    if(circle_x > width+circle_diam/2){
      //если дошли до края окна, то сдвигаем координату y на y_shift
      circle_y+=y_shift;
      // сдвигаясь, начинаем рисовать с третьего цвета, сдвигаемся с начала координат вправо
      // на половину x_shift для большей красоты демосцена
      // меняем значение переменной state на 1, дабы в следующий раз рисовать окружности, как
      // в первое линии
      if(state==0){
        i=6;
        circle_x=x_shift/2;
        state=1;
      }
      else{
        i=0;
        circle_x=0;
        state=0;
      }
    }
  }
 
  // устанавливаем значения координат центром наших будущих окружностей-пульсаций перед
  // функцией draw(), чтобы значения не устанавливались каждый раз в 0 с новым обновлением
  circle_x=0;
  circle_y=0;
  state=1;
}
void draw() {
  //пульсацией будут незаполненные окружности
  noFill();
 
  //здесь мы отрисовываем те окружности, что в дальнейшем станут пульсацией. Их цвет
  //выбирается тем же способом, что и в функции setup()
  strokeWeight(stroke_weight);
  stroke(colors[k], colors[k+1], colors[k+2]);
  // в цикле рисуем пульсацию для каждой окружности определенного цвета
  // в этом цикле рисуем для нечетных строк
  for(i=0; i<=height; i+=120){
    for(j=0; j<=width; j+=180){
    ellipse(circle_x+j, circle_y+i, circle_diam+10, circle_diam+10);
    }
  }
  // в этом для четных
  for(i=y_shift; i<=height; i+=120){
    for(j=x_shift+x_shift/2; j<=width; j+=180){
    ellipse(circle_x+j, circle_y+i, circle_diam+10, circle_diam+10);
    }
  }
 
  // повторяем то же самое, только теперь делаем нашу окружность с толстыми черными стенками
  // эти окружности будут выполнять роль своего рода ластика, затирающего предыдущие цветные
  // пульсации
  stroke(0);
  strokeWeight(stroke_weight_2);
  for(i=0; i<=height; i+=120){
    for(j=0; j<=width; j+=180){
    ellipse(circle_x+j, circle_y+i, circle_diam+6, circle_diam+6);
    }
  }
  for(i=y_shift; i<=height; i+=120){
    for(j=x_shift+x_shift/2; j<=width; j+=180){
    ellipse(circle_x+j, circle_y+i, circle_diam+6, circle_diam+6);
    }
  }
 
  // пульсация первого столбца зеленого цвета
  if(circle_x == 120){
  strokeWeight(stroke_weight);
  stroke(colors[k], colors[k+1], colors[k+2]);
  for(i=y_shift; i<=height; i+=120){
    ellipse(x_shift/2, circle_y+i, circle_diam+10, circle_diam+10);
  }
 
  stroke(0);
  strokeWeight(stroke_weight_2);
  for(i=y_shift; i<=height; i+=120){
    ellipse(x_shift/2, circle_y+i, circle_diam+6, circle_diam+6);
  }
  }
 
  // увеличиваем радиус пульсации, от значения на которое увеличиваем радиус зависит скорость
  // пульсации
  circle_diam+=1.5f;
 
  // проверяем, если наша пульсация достигла кружков друго цвета
  if(circle_diam > x_shift+18)
  {
 
    // затираем остатки пульсации
    for(i=0; i<=height; i+=120){
      for(j=0; j<=width; j+=180){
      ellipse(circle_x+j, circle_y+i, circle_diam+10, circle_diam+10);
      }
    }
    for(i=60; i<=height; i+=120){
      for(j=90; j<=width; j+=180){
        ellipse(circle_x+j, circle_y+i, circle_diam+10, circle_diam+10);
      }
    }
 
    // пульсация первого столбца зеленого цвета
    if (circle_x == 120){
       for(i=y_shift; i<=height; i+=120){
          ellipse(x_shift/2, circle_y+i, circle_diam+10, circle_diam+10);
       }     
    }
 
    //вовзращаемся к изначальному диаметру
    circle_diam = 20;
    //если мы еще не прошли все цветные кружки, переходим к следоющему цвету
    if(circle_x < 120){
      circle_x+=60;
        k+=3;
    }
    //иначе возвращаемся в начало
    else{
      circle_x = 0;
      k=0;
    }
 
  }
}

Прикрепленный файлРазмер
demoscene_mesnhykov_1.pde_.zip1.92 кб