From dcac055f438e2cf7b6e0ca0ad349117bc72f2fb1 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 25 Apr 2022 21:05:51 +0200 Subject: [PATCH] Add antigravity demo --- pyscriptjs/examples/antigravity.html | 73 ++++++++++++++++++++++++++++ pyscriptjs/examples/antigravity.svg | 72 +++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 pyscriptjs/examples/antigravity.html create mode 100644 pyscriptjs/examples/antigravity.svg diff --git a/pyscriptjs/examples/antigravity.html b/pyscriptjs/examples/antigravity.html new file mode 100644 index 0000000..f1be76d --- /dev/null +++ b/pyscriptjs/examples/antigravity.html @@ -0,0 +1,73 @@ + + + Antigravity + + + + + + + + + + + Based on xkcd: antigravity https://xkcd.com/353/. + +
+
+
+
+
+ + +import random + +from js import document, setInterval +from pyodide import create_proxy +from pyodide.http import open_url + +class Antigravity(): + + def __init__(self, node): + self.node = node + self.xoffset, self.yoffset = 0, 0 + setInterval(create_proxy(self.move), 10) + + def move(self): + char = document.getElementById('python') + console.log(char) + char.setAttribute('transform', f'translate({self.xoffset}, {-self.yoffset})') + self.xoffset += random.normalvariate(0, 1)/20 + if self.yoffset < 50: + self.yoffset += 0.1 + else: + self.yoffset += random.normalvariate(0, 1)/20 + + def _repr_svg_(self): + return open_url('./antigravity.svg').read() + +node = document.getElementById('antigravity') +console.log(node) +node.replaceChildren() + +Antigravity(node) + + + + diff --git a/pyscriptjs/examples/antigravity.svg b/pyscriptjs/examples/antigravity.svg new file mode 100644 index 0000000..092a9e7 --- /dev/null +++ b/pyscriptjs/examples/antigravity.svg @@ -0,0 +1,72 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + +