Published
Edited
Jun 17, 2021
2 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
N = 25
Insert cell
f = x => (x ** 2 * (10 - x)) / 30
Insert cell
coord_strings = d3
.range(0, 2 * Math.PI + 0.1, Math.PI / 8)
.map(T =>
make_coord_string(
(x, t) => [x * Math.cos(t), f(x), x * Math.sin(t)],
[0, 10],
[0, T]
)
)
Insert cell
Insert cell
import { Button, Toggle, Range } from '@observablehq/inputs'
Insert cell
import { create_tube } from "@mcmcclur/space-curves-and-tubes"
Insert cell
import { create_indexedFaceSet, show_x3d } from '@mcmcclur/x3dom-primitives'
Insert cell
import {
create_surface,
make_coord_string
} from "@mcmcclur/parametric-surfaces"
Insert cell
import { create_hollow_cylinder } from "@mcmcclur/hollow-cylinder"
Insert cell
d3 = require("d3-selection@2", "d3-array@2", 'd3-format@2')
Insert cell
html`
<style>
canvas {
outline: none
}
</style>
`
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more