J'apprends à utiliser Processing, et j'ai modifié l'un des exemples pour créer this applet. J'ai deux questions:Pourquoi mon application de traitement ne fonctionne-t-elle pas?
- Pourquoi les sphères sont oblates? Les sphères de l'exemple que j'ai découvert étaient belles et rondes.
- Pourquoi la lumière est-elle visible sur les bords extérieurs des sphères, lorsque la source ponctuelle se trouve entre elles?
Voici la source de ce petit programme:
int radius = 40;
int spheredist = 320;
int maxlevel = 7;
float ecc = 0.28;
int x1, x2, y1, y2;
void setup() {
size(640, 360, P3D);
fill(204);
//smooth(); // makes spheres ugly
translate(width/2, height/2, 0);
x1 = -spheredist/2+radius;
x2 = spheredist/2-radius;
y1 =
y2 = 0;
}
void drawLightning(int x1_,int y1_,int x2_,int y2_,int lvl){
if (lvl < maxlevel){
int midx = (x1_ + x2_)/2;
int midy = (y1_ + y2_)/2;
float d = dist(x1_, y1_, x2_, y2_);
d *= ecc;
midx += random(-d, d);
midy += random(-d, d);
drawLightning(x1_, y1_, midx, midy, lvl+1);
drawLightning(midx, midy, x2_, y2_, lvl+1);
} else {
strokeWeight(10);
stroke(60,100,255,100);
line(x1_,y1_,x2_,y2_);
strokeWeight(1);
stroke(255);
line(x1_,y1_,x2_,y2_);
}
}
void draw() {
background(0);
noStroke();
int brt = 200;
pointLight(brt/2, brt/2, brt/2, spheredist/2, -spheredist, spheredist);
ambientLight(brt/8,brt/8,brt/8);
if ((mouseX > width/4 && mouseX < width*3/4) &&
(mouseY > height/2-radius && mouseY < height/2+radius)) {
pushMatrix();
translate(width/2, height/2, 0);
pointLight(100, 100, 255, 0, 0, 0);
popMatrix();
}
pushMatrix();
translate(width/2 - spheredist/2, height/2, 0);
sphere(radius);
translate(spheredist, 0, 0);
sphere(radius);
popMatrix();
if ((mouseX > width/4 && mouseX < width*3/4) &&
(mouseY > height/2-radius && mouseY < height/2+radius)) {
pushMatrix();
translate(width/2, height/2, 0);
drawLightning(x1,y1,x2,y2,0);
popMatrix();
}
}
Je ne vois pas comment quelqu'un peut dire sans voir votre code. –
@Bart: Désolé, je m'habitue toujours à Processing. La page de l'applet génère un lien de code source, que je pensais afficher la source, et que je pensais être la convention pour publier ses croquis. Je vais modifier la question pour l'inclure ici. – PaulMcG
@Paul McGuire: Merci. Je ne savais pas qu'un lien vers la source était là. Je n'ai pas essayé d'exécuter l'applet car les applets de traitement ne peuvent pas être exécutées avec le plugin Java IcedTea pour Firefox sur ma machine Linux 64 bits, malheureusement. Je regarderai le code plus tard. –