half_moon = show_x3d(
[
create_surface(
(r, t) => [
r * cos(t),
r * sin(t),
(1 - (2 * r * cos(t) + r * sin(t))) / 4
],
[0, 2],
[0, pi],
{ color: d3.color(d3.schemeCategory10[1]).brighter(), show_mesh: false }
),
create_surface(
(z, t) => [
2 * cos(t),
2 * sin(t),
(z * (1 - (2 * 2 * cos(t) + 2 * sin(t)))) / 4
],
[0, 1],
[0, pi],
{ show_mesh: false, transparency: 0.6, color: "gray" }
),
create_indexedFaceSet(
[
[
[-2, -1, 0],
[2, -1, 0],
[2, 2, 0],
[-2, 2, 0]
]
],
{ transparency: 0.5 }
)
],
{ width: 800 }
)