I am trying to recreate:
using CETZ.
Here is my code so far:
#import "@preview/cetz:0.3.1"
#cetz.canvas({
import cetz.draw: *
content=content.with(padding:0.5em)
set-style(
grid:(
stroke:gray,
),
mark: (
fill: black,
scale:0.5,
)
)
scale(175%)
on-xy({
arc((2,0), start: 0deg, stop: 180deg, radius:2, stroke:0.5pt)
})
ortho({
on-xz({
set-style(
line: (stroke:0.5pt )
)
line((-2,2),(2,2))
line((-2,-2),(2,-2))
for i in range(4){
line((-1+i,2.8),(-1+i,-2))
content((-1.5+i,2.3),$x$)
line((-1.7+i,2.3), (-2+i,2.3), mark:(end:">"))
line((-1+i,2.3), (-1.3+i,2.3), mark:(start:">"))
content((-1.5+i,3),numbering("I", i+1))
}
line((-2,2.8),(-2,-2))
line((-2.4,2.4),(2.4,-2.4))
line((-2.4+fsqrt(2),2.4),(1.8+fsqrt(2),-1.8))
circle((0,0),radius:2,stroke:0.5pt)
})
on-yz({
arc((fsqrt(3),0), start: 0deg, stop: 180deg, radius:fsqrt(3))
},x:-1)
on-yz({
arc((fsqrt(3),0), start: 0deg, stop: 180deg, radius:fsqrt(3))
},x:1)
on-yz({
arc((2,0), start: 0deg, stop: 180deg, radius:2)
})
rotate(y:-45deg)
on-yz({
arc((2,0), start: 0deg, stop: 180deg, radius:2)
})
on-yz({
arc((fsqrt(3),0), start: 0deg, stop: 180deg, radius:fsqrt(3))
},x:1)
}, x:40deg, y:34deg)
})]
And the result:
I’m totally stuck on how to make the cross-hatching. Any ideas?