Différences entre versions de « Catégorie:Communauté »
De wikilab
| Ligne 1 : | Ligne 1 : | ||
| − | <processingjs> | + | <processingjs> // All Examples Written by Casey Reas and Ben Fry |
| − | + | // unless otherwise stated. | |
| − | + | // center point | |
| − | |||
| − | + | float centerX = 0, centerY = 0; | |
| − | background(0); | + | |
| − | + | float radius = 45, rotAngle = -90; | |
| + | |||
| + | float accelX, accelY; | ||
| + | |||
| + | float springing = .0085, damping = .98; | ||
| + | |||
| + | |||
| + | //corner nodes | ||
| + | |||
| + | int nodes = 5; | ||
| + | |||
| + | float nodeStartX[] = new float[nodes]; | ||
| + | |||
| + | float nodeStartY[] = new float[nodes]; | ||
| + | |||
| + | float[]nodeX = new float[nodes]; | ||
| + | |||
| + | float[]nodeY = new float[nodes]; | ||
| + | |||
| + | float[]angle = new float[nodes]; | ||
| + | |||
| + | float[]frequency = new float[nodes]; | ||
| + | |||
| + | |||
| + | // soft-body dynamics | ||
| + | |||
| + | float organicConstant = 1; | ||
| + | |||
| + | |||
| + | void setup() { | ||
| + | |||
| + | size(800, 600); | ||
| + | |||
| + | //center shape in window | ||
| + | |||
| + | centerX = width/2; | ||
| + | |||
| + | centerY = height/2; | ||
| + | |||
| + | // iniitalize frequencies for corner nodes | ||
| + | |||
| + | for (int i=0; i<nodes; i++){ | ||
| + | |||
| + | frequency[i] = random(5, 12); | ||
| + | |||
| + | } | ||
| + | |||
| + | noStroke(); | ||
| + | |||
| + | smooth(); | ||
| + | |||
| + | frameRate(30); | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | void draw() { | ||
| + | |||
| + | //fade background | ||
| + | |||
| + | fill(0, 100); | ||
| + | |||
| + | rect(0,0,width, height); | ||
| + | |||
| + | drawShape(); | ||
| + | |||
| + | moveShape(); | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | void drawShape() { | ||
| + | |||
| + | // calculate node starting locations | ||
| + | |||
| + | for (int i=0; i<nodes; i++){ | ||
| + | |||
| + | nodeStartX[i] = centerX+cos(radians(rotAngle))*radius; | ||
| + | |||
| + | nodeStartY[i] = centerY+sin(radians(rotAngle))*radius; | ||
| + | |||
| + | rotAngle += 360.0/nodes; | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | // draw polygon | ||
| + | |||
| + | curveTightness(organicConstant); | ||
| + | |||
| + | fill(255); | ||
| + | |||
| + | beginShape(); | ||
| + | |||
| + | for (int i=0; i<nodes; i++){ | ||
| + | |||
| + | curveVertex(nodeX[i], nodeY[i]); | ||
| + | |||
| + | } | ||
| + | |||
| + | for (int i=0; i<nodes-1; i++){ | ||
| + | |||
| + | curveVertex(nodeX[i], nodeY[i]); | ||
| + | |||
| + | } | ||
| + | |||
| + | endShape(CLOSE); | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | void moveShape() { | ||
| + | |||
| + | //move center point | ||
| + | |||
| + | float deltaX = mouseX-centerX; | ||
| + | |||
| + | float deltaY = mouseY-centerY; | ||
| + | |||
| + | |||
| + | // create springing effect | ||
| + | |||
| + | deltaX *= springing; | ||
| + | |||
| + | deltaY *= springing; | ||
| + | |||
| + | accelX += deltaX; | ||
| + | |||
| + | accelY += deltaY; | ||
| + | |||
| + | |||
| + | // move predator's center | ||
| + | |||
| + | centerX += accelX; | ||
| + | |||
| + | centerY += accelY; | ||
| + | |||
| + | |||
| + | // slow down springing | ||
| + | |||
| + | accelX *= damping; | ||
| + | |||
| + | accelY *= damping; | ||
| + | |||
| + | |||
| + | // change curve tightness | ||
| + | |||
| + | organicConstant = 1-((abs(accelX)+abs(accelY))*.1); | ||
| + | |||
| + | |||
| + | //move nodes | ||
| + | |||
| + | for (int i=0; i<nodes; i++){ | ||
| + | |||
| + | nodeX[i] = nodeStartX[i]+sin(radians(angle[i]))*(accelX*2); | ||
| + | |||
| + | nodeY[i] = nodeStartY[i]+sin(radians(angle[i]))*(accelY*2); | ||
| + | |||
| + | angle[i]+=frequency[i]; | ||
| + | |||
| + | } | ||
} | } | ||
</processingjs> | </processingjs> | ||
Version du 25 novembre 2019 à 20:32
<processingjs> // All Examples Written by Casey Reas and Ben Fry
// unless otherwise stated.
// center point
float centerX = 0, centerY = 0;
float radius = 45, rotAngle = -90;
float accelX, accelY;
float springing = .0085, damping = .98;
//corner nodes
int nodes = 5;
float nodeStartX[] = new float[nodes];
float nodeStartY[] = new float[nodes];
float[]nodeX = new float[nodes];
float[]nodeY = new float[nodes];
float[]angle = new float[nodes];
float[]frequency = new float[nodes];
// soft-body dynamics
float organicConstant = 1;
void setup() {
size(800, 600);
//center shape in window
centerX = width/2;
centerY = height/2;
// iniitalize frequencies for corner nodes
for (int i=0; i<nodes; i++){
frequency[i] = random(5, 12);
}
noStroke();
smooth();
frameRate(30);
}
void draw() {
//fade background
fill(0, 100);
rect(0,0,width, height);
drawShape();
moveShape();
}
void drawShape() {
// calculate node starting locations
for (int i=0; i<nodes; i++){
nodeStartX[i] = centerX+cos(radians(rotAngle))*radius;
nodeStartY[i] = centerY+sin(radians(rotAngle))*radius;
rotAngle += 360.0/nodes;
}
// draw polygon
curveTightness(organicConstant);
fill(255);
beginShape();
for (int i=0; i<nodes; i++){
curveVertex(nodeX[i], nodeY[i]);
}
for (int i=0; i<nodes-1; i++){
curveVertex(nodeX[i], nodeY[i]);
}
endShape(CLOSE);
}
void moveShape() {
//move center point
float deltaX = mouseX-centerX;
float deltaY = mouseY-centerY;
// create springing effect
deltaX *= springing;
deltaY *= springing;
accelX += deltaX;
accelY += deltaY;
// move predator's center
centerX += accelX;
centerY += accelY;
// slow down springing
accelX *= damping;
accelY *= damping;
// change curve tightness
organicConstant = 1-((abs(accelX)+abs(accelY))*.1);
//move nodes
for (int i=0; i<nodes; i++){
nodeX[i] = nodeStartX[i]+sin(radians(angle[i]))*(accelX*2);
nodeY[i] = nodeStartY[i]+sin(radians(angle[i]))*(accelY*2);
angle[i]+=frequency[i];
}
}
</processingjs>
Cette catégorie ne contient actuellement aucune page ni fichier multimédia.