-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecoding-sinsin10.js
127 lines (113 loc) · 2.38 KB
/
recoding-sinsin10.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
function setup() {
noStroke();
noLoop();
createCanvas(800, 800);
radius = 10;
colR = [255,255,254,208,219]
colG = [255,211,202,6 ,94 ]
colB = [255,89 ,254,6 ,219]
colors = [];
nbDots = 80;
nbLines = nbDots;
satprmatrix = [[0.7, 0.3],[0.3, 0.7]];
createLines();
}
function draw() {
background(255);
translate(width / 2, height / 2);
addcolor();
choosePalette();
chooseSaturation();
drawLines();
}
function scaleValue(x, inmin, inmax, outmin, outmax){
return (x-inmin)/(inmax-inmin)*(outmax-outmin)+outmin
}
function colorproba(x, pmin, pmax){
// ymin = 0.2;
// ymax = 0.6;
// return (sin(x)+1)/2*(pmax-pmin)+pmax;
return(sin(x)*sin(5*x))
}
function nextSaturation(currentSat){
val = random();
if (val<satprmatrix[currentSat][0]){
return 2;
}
return 0;
}
function createLines(){
for (let i = 0; i<nbLines; i++){
colors.push([]);
}
}
function addcolor(){
for (let i = 0; i < nbLines; i++) {
for (let ii = 0; ii < nbDots; ii++) {
p = scaleValue(colorproba(scaleValue(ii, 0, nbDots, -PI/2, 3*PI/2), 0.2, 0.6), -1, 1, 0, 1);
r = random();
console.log(r<p);
if (r<p){
colors[i][ii] = 1;
} else {
colors[i][ii] = 0;
}
// text(r, 0, -400+35*ii);
// text(p, 0, -390+35*ii);
// text(p-r, 0, -380+35*ii);
// ellipse(-40*radius+ii*radius, 300*p, radius);
}
}
}
function choosePalette(){
for (let i = 0; i < nbLines; i++) {
for (let ii = 0; ii < nbDots; ii++) {
if (colors[i][ii]){
if(random()<(1-(0.95*(ii>nbDots/2))-(0.05*(ii<nbDots/2)))){
colors[i][ii] = 1;
} else {
colors[i][ii] = 2;
}
}
}
}
}
function chooseSaturation(){
for (let i = 0; i < nbLines; i++) {
for (let ii = 0; ii < nbDots; ii++) {
if (colors[i][ii]){
colors[i][ii] += nextSaturation(getEnvSaturation(i, ii));
}
}
}
}
function getEnvSaturation(x, y){
sat=0;
desat=0;
for (let i=x-1; i<x+2; i++){
for (let j=y-1; j<y+2;j++){
if (i>=0 && j>=0 && i<nbLines && j<nbDots && (i==x && j==y) && colors[i][j]!=0){
if(colors[i][j]>10){
sat += 1;
} else {
desat += 1;
}
}
}
}
if (desat<sat){
return 0;
} else {
return 1;
}
}
function drawLines(){
for (let i = 0; i < nbLines; i++) {
for (let ii = 0; ii < nbDots; ii++) {
val = colors[i][ii];
console.log(val);
fill(colR[val],colG[val],colB[val]);
ellipse((-(nbDots/2)+ii+1/2)*radius, (-(nbDots/2)+i+1/2)*radius, radius);
}
}
}