# Equation Art Studio > Turn math into art: parametric, polar, Lissajous, rose and spirograph curves. Type x(t) and y(t), or r(θ), or start from a preset (Lissajous, rose, spirograph, butterfly, heart), add rotational symmetry and a colour palette, and get a crisp SVG artwork plus a PNG download. Expressions are parsed safely (no code execution) and support + − × ÷ ^, sin, cos, tan, sqrt, abs, exp, log, pi and e. Part of usefulweb.site (https://usefulweb.site/). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://equationartstudio.usefulweb.site/ (interactive tool at https://equationartstudio.usefulweb.site/tool) - JSON API: POST https://equationartstudio.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://equationartstudio.usefulweb.site/api/v1/tool) - OpenAPI: https://equationartstudio.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://equationartstudio.usefulweb.site/mcp - tool `equation_art_studio` ## Inputs - curve (select): Curve - xExpr (text): x(t) - Used for “my own parametric curve”. Variables: t, a, b, c, d. Implicit multiplication works: 2t, 3sin(t). - yExpr (text): y(t) - rExpr (text): r(θ) - Used for “my own polar curve”. Write θ as theta or t. - tMin (text): t from - A number or constant expression such as 0 or -pi. Empty = preset default (0). - tMax (text): t to - E.g. 2*pi. Empty = preset default (2π, or a full period for roses and spirographs). - a (number): a - Parameter for presets and your expressions. Empty = preset default. - b (number): b - c (number): c - d (number): d - samples (integer): Samples - More samples = smoother curves. Samples × symmetry copies is limited to 24,000. - symmetry (integer): Rotational symmetry (copies) - palette (select): Palette - strokeWidth (number): Line width - png (boolean): Also render a PNG download ## Method - Expressions are tokenised and parsed by a small recursive-descent parser into a syntax tree, which is compiled into plain arithmetic closures — no eval or Function, and only the listed functions, constants and variables are accepted. - Polar curves are converted with x = r(θ)·cos θ, y = r(θ)·sin θ. Presets: Lissajous x = sin(a·t + d), y = sin(b·t); rose r = cos(a/b·θ); spirograph (hypotrochoid) x = (a−b)cos t + c·cos((a−b)/b·t), y = (a−b)sin t − c·sin((a−b)/b·t); Temple Fay’s butterfly; the classic 16 sin³t heart. Roses and spirographs with whole-number a, b run exactly one full period. - t is sampled evenly from start to end. Undefined samples (division by zero, sqrt of a negative number) leave gaps, and very large jumps (asymptotes) are not connected. - The drawing is fitted into a 600 × 600 square with equal x/y scale, optionally rotated into k symmetric copies, and coloured along t with a gradient from the palette. Points closer than 0.3 px are dropped to keep the SVG small. - The SVG uses only plain shapes (no scripts or styles). The PNG is rendered from the same SVG with ImageMagick when it is installed; both downloads stay available for about 2 hours.