Sergei Sokolov (chaka) wrote,
Sergei Sokolov
chaka

Перспектива

treees
Баловство c Processing'ом. На этот раз рекурсивные функции: каждая палочка рисует две самих себя поменьше и потоньше, под углом туда и сюда. Ну ещё параметр перспективы, делающий цвет светлее и линии тоньше.
Этот вариант экспортирует картинку в векторе в PDF.
Каждый запуск программы даёт слегка разные результаты, т.к. используется шум Перлина для разнообразия веток.
import processing.pdf.*;
void setup() 
{
  size(800, 270, PDF, "treees#.pdf");
  background(212);
  smooth();
  noLoop();
}

void draw() 
{
  drawLine(650, 238, 15, 0.1, 8, 90);  
  drawLine(580, 242, 25, -0.06, 10, 80);  
  drawLine(130, 245, 25, 0.06, 10, 80);  
  drawLine(280, 260, 50, 0.02, 10, 0);
}

void drawLine(float x, float y, float L, float azimuth, int level, int pers) 
// x,y - start point, L length, azimuth - direction, iteration number, perspective (0...100, 100 - farmost)
{                    
  L *= 0.7+0.6*noise(x/2,y/2);
  azimuth *= 0.9+0.2*noise(x/2,y/2);
  float kLength = 0.8, kDist = 0.025, angle = PI/6;
  strokeWeight(level*(100-pers)/100);
  stroke(20+100*pers/100);
  line(x,y,x+L*sin(azimuth),y-L*cos(azimuth));
  if(level > 1) {
    level = level - 1;
    float startX1 = x+L*sin(azimuth)+L*kDist*sin(azimuth+angle);
    float startY1 = y-L*cos(azimuth)-L*kDist*cos(azimuth+angle);
    float startX2 = x+L*sin(azimuth)+L*kDist*sin(azimuth-angle);
    float startY2 = y-L*cos(azimuth)-L*kDist*cos(azimuth-angle);
    drawLine(startX1, startY1, L*kLength, azimuth+angle, level, pers);
    drawLine(startX2, startY2, L*kLength, azimuth-angle, level, pers);
  }
}
Tags: illustrations, processing
Subscribe

  • Волосы шевелятся

    Придумал, как строить в Процессинге перпендикуляр к любой точке кривой, как строить гармонично-случайные кривые Безье на основе шума Перлина,…

  • С Новым Годом

  • три волосатых мячика

    Баловство в processing. Кстати, такса так и не разгрызла пока теннистный мячик, который ей подарили. Исходник – по клику по картинке.

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments