fogón

← Nature3D assetfogon/naranjo

Naranjo

by fogonCC014181 blocks
NaranjoDrag to turn it
// «Naranjo» · gpt-6-sol (medium)
// A small citrus tree: short brown trunk and a dense rounded dark green crown full of bright orange oranges, a few white blossoms too.

// Short, sturdy trunk and spreading roots.
cylinder(24, 24, 0, 4, 6, "#95602f");
cylinder(24, 24, 5, 3, 19, "#a76d35");
for (const [x, y] of [[19, 23], [29, 24], [23, 19], [25, 29]]) {
  line(24, 24, 5, x, y, 0, 1.5, "#875329");
}
line(22, 21, 3, 22, 21, 17, 0, "#704622");
line(26, 21, 6, 26, 21, 19, 0, "#704622");
line(24, 27, 2, 24, 27, 13, 0, "#794b26");
set(26, 21, 12, "#754724");
set(26, 21, 13, "#754724");

// Thick branches peek out beneath the leaves.
line(24, 24, 19, 14, 22, 26, 2, "#92602e");
line(24, 24, 20, 35, 25, 27, 2, "#92602e");
line(24, 24, 21, 24, 14, 27, 2, "#92602e");

// One solid, rounded canopy with gently uneven edges.
ellipsoid(24, 24, 29, 16, 15, 11, "#238c3b");
ellipsoid(13, 23, 26, 7, 8, 8, "#238c3b");
ellipsoid(35, 25, 27, 7, 8, 8, "#238c3b");
ellipsoid(23, 14, 26, 11, 7, 8, "#238c3b");
ellipsoid(26, 33, 28, 11, 7, 8, "#238c3b");
ellipsoid(20, 22, 35, 9, 9, 6, "#238c3b");

// Sunlit tops, shaded undersides, and restrained leafy variation.
forEach((x, y, z, color) => {
  if (color !== "#238c3b") return;
  const n = rand();
  let shade = z < 24 ? "#187332" : z > 34 ? "#39b64b" : "#269642";
  if (n < 0.075) shade = z > 31 ? "#51c95c" : "#32aa47";
  else if (n > 0.93) shade = "#176d32";
  set(x, y, z, shade);
});

// Small rounded clusters break up the canopy silhouette.
for (const [x, y, z, r, c] of [
  [10, 19, 30, 2.5, "#2da044"], [17, 11, 31, 2.6, "#2c9e43"],
  [29, 10, 29, 2.7, "#279440"], [38, 17, 31, 2.5, "#32a748"],
  [39, 29, 27, 2.2, "#248e3c"], [33, 35, 33, 2.6, "#36ae49"],
  [17, 31, 36, 2.5, "#3ab64c"], [26, 21, 40, 1.8, "#49c257"]
]) sphere(x, y, z, r, c);

// Oranges sit on the outer foliage, especially the viewer-facing side.
const fruit = [
  [12, 16, 27, 1.8], [17, 10, 26, 1.8], [22, 8, 28, 2],
  [29, 9, 25, 1.8], [35, 13, 28, 2], [39, 19, 25, 1.7],
  [11, 23, 22, 1.8], [15, 14, 34, 1.7], [22, 12, 34, 1.9],
  [29, 12, 33, 1.8], [36, 20, 34, 1.7], [32, 17, 21, 1.8],
  [23, 14, 20, 1.8], [16, 19, 20, 1.6], [10, 27, 28, 1.7],
  [15, 30, 34, 1.7], [22, 22, 39, 1.7], [30, 27, 38, 1.8],
  [37, 30, 29, 1.8], [27, 36, 30, 1.7], [19, 35, 25, 1.8]
];
for (const [x, y, z, r] of fruit) {
  sphere(x, y, z, r, "#ff9822");
  set(x, y - 1, z, "#ffb238");
  set(x, y, z + 1, "#ffc04a");
  set(x, y, z + 2, "#367e32"); // tiny green calyx
}

// A few crisp white blossoms with warm yellow centers.
for (const [x, y, z] of [
  [14, 12, 29], [26, 9, 31], [33, 11, 25],
  [19, 12, 23], [38, 23, 31], [12, 24, 34],
  [25, 17, 39], [32, 33, 36]
]) {
  const front = y - 1;
  set(x - 1, front, z, "#fff9e9");
  set(x + 1, front, z, "#fff9e9");
  set(x, front, z - 1, "#fffdf2");
  set(x, front, z + 1, "#fffdf2");
  set(x, front - 1, z, "#ffd95e");
}