| 78 | return (si.lambda == infinity ? -g : 0); |
| 79 | } |
| 80 | Scene create(int level, Vec c, double r) { |
| 81 | Sphere sphere = new Sphere(c, r); |
| 82 | if (level == 1) return sphere; |
| 83 | Group group = new Group(new Sphere(c, 3*r)); |
| 84 | group.objs.addLast(sphere); |
| 85 | double rn = 3*r/Math.sqrt(12); |
| 86 | for (int dz=-1; dz<=1; dz+=2) |
| 87 | for (int dx=-1; dx<=1; dx+=2) { |
| 88 | Vec c2 = new Vec(c.x+dx*rn, c.y+rn, c.z+dz*rn); |
| 89 | group.objs.addLast(create(level-1, c2, r/2)); |
| 90 | } |
| 91 | return group; |
| 92 | } |
| 93 | void run(int n, int level, int ss) { |
| 94 | Scene scene = create(level, new Vec(0, -1, 0), 1); |
| 95 | System.out.print("P5\n"+n+" "+n+"\n255\n"); |