about summary refs log tree commit diff stats
path: root/509bezier.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-05-16 15:29:53 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-05-16 15:29:53 -0700
commit444227b3c413c544f357f2b8b7e9394a59a7d839 (patch)
tree52056c7435a2621de87d3dc6e7248c1319887bf8 /509bezier.mu
parentc3eddb915403cc92832dcb5373bd6e9af6affcc0 (diff)
downloadmu-444227b3c413c544f357f2b8b7e9394a59a7d839.tar.gz
first bit of animation
Diffstat (limited to '509bezier.mu')
-rw-r--r--509bezier.mu21
1 files changed, 21 insertions, 0 deletions
diff --git a/509bezier.mu b/509bezier.mu
index c915bbbb..5cbf23a6 100644
--- a/509bezier.mu
+++ b/509bezier.mu
@@ -293,3 +293,24 @@ fn draw-monotonic-bezier screen: (addr screen), x0: int, y0: int, x1: int, y1: i
   # plot the remaining straight line
   draw-line screen, x y, x2 y2, color
 }
+
+# 0 <= u <= 1
+fn bezier-point u: float, x0: int, x1: int, x2: int -> _/eax: int {
+  var one/eax: int <- copy 1
+  var u-prime/xmm0: float <- convert one
+  u-prime <- subtract u
+  var result/xmm1: float <- convert x0
+  result <- multiply u-prime
+  result <- multiply u-prime
+  var term2/xmm2: float <- convert x1
+  term2 <- multiply u
+  term2 <- multiply u-prime
+  result <- add term2
+  result <- add term2
+  var term3/xmm2: float <- convert x2
+  term3 <- multiply u
+  term3 <- multiply u
+  result <- add term3
+  var result/eax: int <- convert result
+  return result
+}