2015-11-03 2 views
0

Мне интересно, как нарисовать случайные (нормальные или изогнутые) линии внутри круга, то есть линии НЕ пройдут границы круга.Как нарисовать случайные линии в определенной области. (Обработка)

Вот код, который рисует круг:

size(900, 900); 
background(80, 89, 81); 
int n = 50; // aantal (element count) 
for (int i = 0; i <n; i++) { 
    float x1 = 20*i; 
    float x2 =-10+20*i; 
    float x3 =x2+20; 
    float x11 = 10+20*i; 
    float x22 = x1; 
    float x33= x22+20; 
    for (int j = 0; j < n; j++) { 
    float y1 = 30+30*j; 
    float y2 = 30*j; 
    float y3 = y2; 
    float y11 = y2; 
    float y22 = y1; 
    float y33 = y1; 
    float a = random(10, 90); 
    if (j%2==0) { 
     noStroke(); 
     fill(0);  
     triangle(x1, y1, x2, y2, x3, y3); 
     fill(255, 255, 255, a); 
     triangle(x11, y11, x22, y22, x33, y33); 
    } else { 
     noStroke(); 
     fill(255, 255, 255, a);  
     triangle(x1, y1, x2, y2, x3, y3); 
     fill(0); 
     triangle(x11, y11, x22, y22, x33, y33); 
    } 
    } 
} 

for (int t=0; t<40; t++) { 

    ellipse(450, 450, 800-20*t, 800-20*t); 
    fill(0+t*2, 0+t*2, 0+t*2); 
} 

Этот код создает это изображение:

enter image description here

ответ

1

Если вы знаете центр круга, и вы знаете радиус круг, то вы можете использовать базовый триггер для получения точек внутри этого круга. Что-то вроде этого:

float circleX = 100; 
float circleY = 100; 
float circleR = 50; 

void setup() { 
    size(200, 200); 
    ellipseMode(RADIUS); 
} 

void draw() { 
    background(0); 
    ellipse(circleX, circleY, circleR, circleR); 

    stroke(0); 
    for (int i = 0; i < 10; i++) { 
    float x1 = circleX + cos(random(2*PI)) * random(circleR); 
    float y1 = circleY + sin(random(2*PI)) * random(circleR); 
    float x2 = circleX + cos(random(2*PI)) * random(circleR); 
    float y2 = circleY + sin(random(2*PI)) * random(circleR); 

    line(x1, y1, x2, y2); 
    } 
} 

enter image description here

+0

Хорошо! я попробую. Спасибо за ответ. – Nathan

Смежные вопросы