97

Bioluminescent Orchid Epiphyte

Exotic tropical orchid displaying zygomorphic bilateral floral symmetry, glowing violet dorsal sepals, flared lateral petals, a neon cyan labellum lip, and floating luminous pollen spores.

Playground
60 FPS Canvas 2D
Click + Drag to interact with field
</>

Full Executable Algorithm Code

// 069 - Bioluminescent Orchid Epiphyte (botany)
// 1:1 Original algorithm engine source
function createBioluminescentOrchid() {
  return {
    setup() {
    },
    render(context, timeState, params) {
      const { ctx, width, height } = context;
      const glow = Number(params.luminescence ?? 1);
      const pulseSpeed = Number(params.pulseSpeed ?? 0.5);
      const veinDensity = Math.max(3, Math.min(8, Math.round(Number(params.veinDensity ?? 5))));
      const t = timeState.time * pulseSpeed;
      ctx.fillStyle = "#040308";
      ctx.fillRect(0, 0, width, height);
      const cx = width * 0.5;
      const cy = height * 0.52;
      const maxR = Math.min(width, height) * 0.42;
      ctx.save();
      ctx.translate(cx, cy);
      const cyanHue = 185;
      const violetHue = 285;
      const pulse = 1 + 0.08 * Math.sin(t * 2);
      for (let s = 0; s < 25; s++) {
        const sSeed = s * 99.7;
        const sa = Math.sin(sSeed + t * 0.3) * Math.PI * 2;
        const sr = maxR * 0.2 + s * 37 % Math.floor(maxR * 0.85);
        const px = Math.cos(sa) * sr;
        const py = Math.sin(sa) * sr - Math.sin(t + s) * 15;
        const sAlpha = 0.2 + 0.4 * Math.sin(t * 1.5 + s);
        ctx.fillStyle = hsla(cyanHue + s % 3 * 30, 95, 75, sAlpha * glow);
        ctx.beginPath();
        ctx.arc(px, py, 1.2 + s % 3 * 0.6, 0, Math.PI * 2);
        ctx.fill();
      }
      function drawPetal(ctrl1X, ctrl1Y, tipX, tipY, ctrl2X, ctrl2Y, hue, alpha) {
        ctx.beginPath();
        ctx.moveTo(0, 0);
        ctx.bezierCurveTo(ctrl1X, ctrl1Y, tipX * 0.7, tipY * 0.9, tipX, tipY);
        ctx.bezierCurveTo(tipX * 0.3, tipY * 0.9, ctrl2X, ctrl2Y, 0, 0);
        ctx.fillStyle = hsla(hue, 90, 60, alpha * 0.35 * glow);
        ctx.fill();
        ctx.strokeStyle = hsla(hue + 15, 95, 78, alpha * glow);
        ctx.lineWidth = 1.3;
        ctx.stroke();
        for (let v = 1; v <= veinDensity; v++) {
          const vFrac = v / (veinDensity + 1);
          ctx.beginPath();
          ctx.moveTo(0, 0);
          const vx = tipX * vFrac + (ctrl1X + ctrl2X) * 0.25 * (1 - vFrac);
          const vy = tipY * vFrac;
          ctx.quadraticCurveTo(vx * 0.7, vy * 0.7, vx, vy);
          ctx.strokeStyle = hsla(cyanHue, 100, 85, 0.25 * glow);
          ctx.lineWidth = 0.75;
          ctx.stroke();
        }
      }
      const dLen = maxR * 0.75 * pulse;
      const dWidth = dLen * 0.38;
      drawPetal(-dWidth, -dLen * 0.45, 0, -dLen, dWidth, -dLen * 0.45, violetHue, 0.85);
      const latSepLen = maxR * 0.78 * pulse;
      const latSepWidth = latSepLen * 0.35;
      ctx.save();
      ctx.rotate(Math.PI * 0.38 + Math.sin(t) * 0.03);
      drawPetal(-latSepWidth, latSepLen * 0.45, 0, latSepLen, latSepWidth, latSepLen * 0.45, violetHue + 15, 0.8);
      ctx.restore();
      ctx.save();
      ctx.rotate(-Math.PI * 0.38 - Math.sin(t) * 0.03);
      drawPetal(-latSepWidth, latSepLen * 0.45, 0, latSepLen, latSepWidth, latSepLen * 0.45, violetHue + 15, 0.8);
      ctx.restore();
      const wingLen = maxR * 0.88 * pulse;
      const wingWidth = wingLen * 0.45;
      ctx.save();
      ctx.rotate(Math.PI * 0.58 + Math.sin(t * 1.2) * 0.04);
      drawPetal(-wingWidth * 0.7, -wingLen * 0.3, 0, -wingLen, wingWidth * 0.7, -wingLen * 0.3, violetHue - 15, 0.9);
      ctx.restore();
      ctx.save();
      ctx.rotate(-Math.PI * 0.58 - Math.sin(t * 1.2) * 0.04);
      drawPetal(-wingWidth * 0.7, -wingLen * 0.3, 0, -wingLen, wingWidth * 0.7, -wingLen * 0.3, violetHue - 15, 0.9);
      ctx.restore();
      const lipLen = maxR * 0.55 * pulse;
      const lipWidth = lipLen * 0.65;
      ctx.beginPath();
      ctx.moveTo(0, 0);
      ctx.bezierCurveTo(-lipWidth * 0.8, lipLen * 0.3, -lipWidth, lipLen * 0.8, 0, lipLen);
      ctx.bezierCurveTo(lipWidth, lipLen * 0.8, lipWidth * 0.8, lipLen * 0.3, 0, 0);
      ctx.fillStyle = hsla(cyanHue, 95, 55, 0.45 * glow);
      ctx.fill();
      ctx.strokeStyle = hsla(cyanHue + 15, 100, 85, 0.95 * glow);
      ctx.lineWidth = 1.6;
      ctx.stroke();
      for (let r = 1; r <= 3; r++) {
        ctx.beginPath();
        ctx.ellipse(0, lipLen * 0.45, lipWidth * (0.2 * r), lipLen * (0.15 * r), 0, 0, Math.PI * 2);
        ctx.strokeStyle = hsla(50, 100, 80, 0.5 * glow);
        ctx.lineWidth = 1;
        ctx.stroke();
      }
      ctx.fillStyle = hsla(55, 100, 90, 0.95);
      ctx.beginPath();
      ctx.arc(0, 0, 3.5, 0, Math.PI * 2);
      ctx.fill();
      ctx.fillStyle = hsla(cyanHue, 100, 90, 0.4 * glow);
      ctx.beginPath();
      ctx.arc(0, 0, 9, 0, Math.PI * 2);
      ctx.fill();
      ctx.restore();
    }
  };
}

// Default parameters from content metadata
const defaultParams = [
  {
    "key": "luminescence",
    "label": "Glow Intensity",
    "type": "range",
    "min": 0.4,
    "max": 1.6,
    "step": 0.1,
    "defaultValue": 1,
    "description": "Bioluminescent emission strength"
  },
  {
    "key": "veinDensity",
    "label": "Vein Strands",
    "type": "range",
    "min": 3,
    "max": 8,
    "step": 1,
    "defaultValue": 5,
    "description": "Number of radiant petal vein filaments"
  },
  {
    "key": "pulseSpeed",
    "label": "Pulse Cadence",
    "type": "range",
    "min": 0.2,
    "max": 1.5,
    "step": 0.1,
    "defaultValue": 0.5,
    "description": "Luminous breathing rate"
  }
];

if (!window.__art_instances) window.__art_instances = {};
if (!window.__art_instances['bioluminescent-orchid']) {
  const inst = typeof createBioluminescentOrchid === 'function' ? createBioluminescentOrchid() : null;
  if (inst && inst.setup) {
    inst.setup({ ctx, width, height, dpr: 1, aspectRatio: width / height }, defaultParams);
  }
  window.__art_instances['bioluminescent-orchid'] = inst;
}

const instance = window.__art_instances['bioluminescent-orchid'];
if (instance && instance.render) {
  instance.render(
    { ctx, width, height, dpr: 1, aspectRatio: width / height },
    { time, deltaTime: dt, frameCount: Math.floor(time * 60), fps: 60 },
    defaultParams
  );
}
Edit in Interactive Playground Zero Dependencies • Standalone Canvas 2D
ƒ

Mathematical Formulation

high
Analytical Equation
Bsepal(u)=i=03(3i)(1u)3iuiPi,pleft(x,y)=[xy]right\mathbf{B}_{\text{sepal}}(u) = \sum_{i=0}^3 \binom{3}{i} (1-u)^{3-i} u^i \mathbf{P}_i, \quad \mathbf{p}_{\text{left}}(x, y) = \begin{bmatrix} -x \\ y \end{bmatrix}_{\text{right}}
Click to expand
Compact Formula
dorsal = bezier(base, ctrl, tip), lip = bezier(base, cyan_ctrl, nectar_spur)

Mathematical Tags

#orchid #bioluminescent #flower #botany #neon #cyan #violet #symmetry #exotic
Author: Math Art Core Target: 60 FPS

Export & Embed: Bioluminescent Orchid Epiphyte

4K PNG Snapshot

High-resolution single frame render

WebM Video (5s Loop)

60 FPS browser-captured stream

Standalone JS Script

Complete executable Canvas 2D algorithm

HTML Iframe Embed

<iframe src="https://art.fazleyrabbi.xyz/embed/bioluminescent-orchid" width="500" height="500" frameborder="0" loading="lazy"></iframe>
ESC
↑↓ Navigate Select
101 Mathematical Artworks

Support the Project

Keep mathematical creative coding alive & open source

Or via Direct Payoneer ($0 Fee)
Payoneer Customer ID: $0 Fee Direct
24076084

💡 Payoneer app: Go to Pay → Pay to recipient → Enter ID 24076084.

Thank you for supporting generative mathematical animations! ✨