Skip to content

Instantly share code, notes, and snippets.

@youz
Last active September 29, 2021 08:05
Show Gist options
  • Save youz/d31fd00895d34821797ccde8f94169fe to your computer and use it in GitHub Desktop.
Save youz/d31fd00895d34821797ccde8f94169fe to your computer and use it in GitHub Desktop.
new.db
WITH consts AS (
SELECT
8 AS n, -- number of iterations
500 AS l, -- width & height of image
0.7265425280053609 AS tan36, -- tan(π/5)
0.6180339887498948 AS d -- 1/φ
), tiles (p, i, t, px, py, qx, qy, rx, ry, sx, sy, tx, ty) AS (
SELECT 0, n, 1, -l/tan36, 0, 0, l, l/tan36, 0, 0, 0, 0, 0 FROM consts
UNION ALL SELECT 1, i-1, t, px, py, qx, qy, rx, ry, (qx-px)*d+px, (qy-py)*d+py, (rx-px)*d+px, (ry-py)*d+py
FROM tiles, consts WHERE p = 0 and i > 0
UNION ALL SELECT 0, i, 0, rx, ry, sx, sy, qx, qy, 0, 0, 0, 0 FROM tiles, consts WHERE p = 1 and t = 0
UNION ALL SELECT 0, i, 1, rx, ry, sx, sy, px, py, 0, 0, 0, 0 FROM tiles, consts WHERE p = 1 and t = 0
UNION ALL SELECT 0, i, 1, tx, ty, sx, sy, px, py, 0, 0, 0, 0 FROM tiles, consts WHERE p = 1 and t = 1
UNION ALL SELECT 0, i, 0, tx, ty, sx, sy, qx, qy, 0, 0, 0, 0 FROM tiles, consts WHERE p = 1 and t = 1
UNION ALL SELECT 0, i, 1, rx, ry, tx, ty, qx, qy, 0, 0, 0, 0 FROM tiles, consts WHERE p = 1 and t = 1
)
SELECT (SELECT printf('<'||'svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="%d" height="%d" viewBox="%d %d %d %d"><'||'g id="t">', l, l, -l/2, -l/2, l, l) FROM consts)
||(SELECT group_concat(g, char(10)) FROM
(SELECT printf('<'||'g stroke="#044a64" stroke-width="0.3" stroke-linejoin="bevel" fill="%s">%s<'||'/g>',
CASE t WHEN 0 THEN '#044a64' ELSE '#fff' END,
group_concat(printf('<'||'path d="M%f %fL%f %fL%f %fz"/>', px, py, qx, qy, rx, ry), char(10))
) as g
FROM tiles WHERE p = 0 and i = 0 GROUP BY t)
)||'<'||'/g><'||'use xlink:href="#t" transform="scale(1 -1)"/><'||'/svg>'
as svg;
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BEGIN TRANSACTION;
PRAGMA writable_schema=ON;
PRAGMA writable_schema=OFF;
COMMIT;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment