fogón

← City3D assetfogon/floodlight-stand

Reflector con trípode

by fogonCC02290 blocks
Reflector con trípodeDrag to turn it
// «Reflector con trípode» · propio
// A portable work floodlight on a yellow tripod stand, two square lamps side by side at the top with bright warm faces, a black cable coiled at the foot.

// A portable work floodlight: a yellow tripod, a telescopic pole and two square lamps facing the front. Its cable lies
// coiled by one foot.
const YELLOW = { base: "#f0b81e", light: "#f8cf4a", dark: "#c7920e" };
const BLACK = "#222326", DARK = "#2f3237", GREY = "#474b51", STEEL = "#b9bec4", STEEL_D = "#8b9097";
const LAMP = "#ffe27a", LAMP_CORE = "#fff8d2", LAMP_EDGE = "#ffcf52";

// The tripod: three legs from a hub, a brace to each, rubber feet.
const feet = [[23.5, 8, 0], [37, 32, 0], [10, 32, 0]];
for (const [fx, fy] of feet) {
  line(23.5, 23.5, 18, fx, fy, 1, 1, YELLOW.base);
  const mx = (23.5 + fx) / 2, my = (23.5 + fy) / 2;
  line(23.5, 23.5, 7, mx, my, 9, 0, YELLOW.dark);
  box(Math.round(fx) - 1, Math.round(fy) - 1, 0, Math.round(fx) + 1, Math.round(fy) + 1, 0, BLACK);
}
// Legs lit from above: the topmost block of each column of the legs is lighter.
forEach((x, y, z, c) => {
  if (c === YELLOW.base && !get(x, y, z + 1)) set(x, y, z, YELLOW.light);
});

// The pole: a yellow sleeve, a clamp with its knob and the steel tube that slides out of it.
box(23, 23, 5, 24, 24, 21, YELLOW.base);
box(23, 23, 5, 23, 24, 21, YELLOW.light);
box(22, 22, 17, 25, 25, 19, YELLOW.dark); // the hub the legs hang from
box(22, 22, 6, 25, 25, 7, YELLOW.dark);
box(22, 22, 22, 25, 25, 23, BLACK);
box(26, 23, 22, 27, 23, 23, "#d2452f");
box(23, 23, 24, 24, 24, 31, STEEL);
box(24, 23, 24, 24, 24, 31, STEEL_D);

// The crossbar and the two lamps.
box(11, 23, 31, 36, 24, 32, DARK);
for (const x0 of [11, 26]) {
  const x1 = x0 + 10;
  box(x0, 21, 33, x1, 25, 43, DARK);
  box(x0, 21, 43, x1, 25, 43, GREY);
  box(x0, 20, 33, x1, 20, 43, BLACK); // the bezel
  for (let x = x0 + 1; x < x1; x++)
    for (let z = 34; z <= 42; z++) {
      const d = Math.max(Math.abs(x - (x0 + 5)), Math.abs(z - 38));
      set(x, 20, z, d <= 2 ? LAMP_CORE : d === 3 ? LAMP : LAMP_EDGE);
    }
  for (let z = 34; z <= 42; z += 2) box(x0 + 1, 26, z, x1 - 1, 26, z, GREY); // cooling fins
  set(x0 + 3, 23, 44, BLACK); set(x0 + 7, 23, 44, BLACK); // the handle
  box(x0 + 3, 23, 45, x0 + 7, 23, 45, BLACK);
}

// The cable: down the pole, across the floor and into a coil, with its plug.
for (let z = 20; z <= 30; z++) set(22, 24, z, BLACK);
line(22, 24, 19, 27, 20, 1, 0, BLACK);
line(27, 20, 0, 31, 17, 0, 0, BLACK);
for (let x = 26; x <= 42; x++)
  for (let y = 6; y <= 22; y++) {
    const r = Math.hypot(x - 34, y - 14);
    if (Math.abs(r - 5) <= 1.1) set(x, y, 0, (x + y) % 3 === 0 ? GREY : BLACK);
    if (Math.abs(r - 4.6) <= 0.75) set(x, y, 1, (x + y) % 3 === 1 ? GREY : DARK);
    if (Math.abs(r - 5.2) <= 0.6 && y < 17) set(x, y, 2, BLACK);
  }
box(40, 15, 0, 42, 16, 0, BLACK);
box(43, 15, 0, 44, 16, 0, "#e8892a");