demo_canvas API

Luna-Flow/geometry3d/demo_canvas 是面向 js 目标的浏览器可执行程序。它不导出任何 MoonBit 项;它的接口是它所需要的 HTML 页面,以及它用 Canvas 后端绘制的场景。

构建与服务

just canvas-build   # moon build src/demo_canvas --target js, then copy files
just canvas-serve   # build, then serve target/canvas-demo on http://localhost:8080

canvas-build 把 src/demo_canvas/index.html 和编译得到的 demo_canvas.js(重命名为 demo.js)复制到 target/canvas-demo/。

页面约定

geometry3d-canvas

页面必须包含一个 <canvas id="geometry3d-canvas">。程序把它的 width 和 height 属性设为 640 × 480,并在其 2D 上下文中绘制。如果缺少该元素或上下文,程序会在启动时中止。

demo-select

页面必须包含一个 <select id="demo-select">。其值为 dolly 时选择滑动变焦场景;其他任何值选择圆环。程序在启动时以及每次 change 事件时读取该值。

场景

圆环

圆环场景显示一个半径为 1.7 和 0.58(32 × 18 分段)的圆环,按动画时间戳每毫秒 0.00060.0006 rad 的速度、以 0.7:1:0.250.7 : 1 : 0.25 的比例绕 xx、yy、zz 旋转。相机距离 6.2 个单位,在全画幅传感器上使用 35 mm 镜头。

滑动变焦

滑动变焦场景就是终端演示 --dolly 模式的场景,帧号由动画时间戳按每秒 30 帧换算得到。