This commit is contained in:
parent
9dcaefe7c9
commit
7863c6d7a8
2 changed files with 442 additions and 40 deletions
447
slides/icons.typ
447
slides/icons.typ
|
|
@ -414,8 +414,8 @@
|
|||
head_fdw_in.at(1) -= head_width
|
||||
|
||||
box(
|
||||
width: 200pt,
|
||||
height: 200pt,
|
||||
width: length,
|
||||
height: 2*head_rad,
|
||||
//stroke: black,
|
||||
place(left+horizon, {
|
||||
|
||||
|
|
@ -464,23 +464,6 @@
|
|||
}))
|
||||
}
|
||||
|
||||
#let transfo(height: 200pt) = {
|
||||
box(width: height, height: height, {
|
||||
place(
|
||||
left+bottom,
|
||||
dx: height / 12,
|
||||
dy: - height * 3 / 12,
|
||||
gear(out-rad: height/3)
|
||||
)
|
||||
place(
|
||||
left+bottom,
|
||||
dx: height * 2 / 5,
|
||||
dy: 0pt,
|
||||
wrench(length: height*7/8)
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
#let loop(height: 100pt) = image("imgs/ico/loop.svg", height: height)
|
||||
|
||||
#let analyse(height: 200pt) = {
|
||||
|
|
@ -1308,7 +1291,431 @@
|
|||
place(dx: height * 6 / 10, dy: height / 10, apk(height: height))
|
||||
}
|
||||
|
||||
#report(height: 200pt)
|
||||
#let machinery(height: 200pt) = context {
|
||||
let gear_rad = height * 2 / 5
|
||||
let gear = gear(out-rad: gear_rad)
|
||||
let width = height
|
||||
let wrench_h = height * 4 / 5
|
||||
let wrench_angle = -45deg
|
||||
let aura_wrench = 9pt
|
||||
let wrench_0 = rotate(wrench_angle, wrench(
|
||||
length: wrench_h,
|
||||
stroke: aura_wrench+white,
|
||||
))
|
||||
let wrench_0_size = measure(wrench_0)
|
||||
let wrench_1 = rotate(wrench_angle, wrench(
|
||||
length: wrench_h,
|
||||
stroke: 3pt+black,
|
||||
))
|
||||
let wrench_1_size = measure(wrench_1)
|
||||
let wrench_center = (
|
||||
width * 2 / 3 - aura_wrench/2,
|
||||
height * 1 / 3 + aura_wrench/2,
|
||||
)
|
||||
box(
|
||||
height: height,
|
||||
width: height,
|
||||
//stroke: black,
|
||||
{
|
||||
place(
|
||||
left+bottom,
|
||||
dx: 0pt,//width / 2 - gear_raad,
|
||||
dy: -height + 2*gear_rad,
|
||||
gear
|
||||
)
|
||||
place(
|
||||
left+bottom,
|
||||
dx: wrench_center.at(0) - wrench_0_size.width / 2,
|
||||
dy: -wrench_center.at(1) + wrench_0_size.height / 2,
|
||||
wrench_0
|
||||
)
|
||||
place(
|
||||
left+bottom,
|
||||
dx: wrench_center.at(0) - wrench_1_size.width / 2,
|
||||
dy: -wrench_center.at(1) + wrench_1_size.height / 2,
|
||||
wrench_1
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
#let circle-arrows(
|
||||
out-rad: 100pt,
|
||||
in-rad: none,
|
||||
nb-arrows: 2,
|
||||
tail-width: none,
|
||||
point-angle: none,
|
||||
gap-angle: none,
|
||||
fill: green,
|
||||
stroke: 3pt+black,
|
||||
) = {
|
||||
let in-rad = if in-rad == none { out-rad / 2 } else { in-rad }
|
||||
let tail-width = if tail-width == none { (out-rad - in-rad)/2 } else { tail-width }
|
||||
let gap-angle = if gap-angle == none { 360deg / nb-arrows / 10 } else { gap-angle }
|
||||
let point-angle = if point-angle == none { 360deg / nb-arrows * 0.15} else { point-angle }
|
||||
|
||||
let th0 = -180deg
|
||||
let center = (out-rad, out-rad)
|
||||
let center-rad = (out-rad + in-rad) / 2
|
||||
let out-tail-rad = center-rad + tail-width / 2
|
||||
let in-tail-rad = center-rad - tail-width / 2
|
||||
let arrow-angle = 360deg / nb-arrows
|
||||
|
||||
box(
|
||||
width: out-rad * 2,
|
||||
height: out-rad * 2,
|
||||
//stroke: black,
|
||||
place(left+top, curve(
|
||||
fill: fill,
|
||||
stroke: stroke,
|
||||
..for i in range(nb-arrows) {
|
||||
let (
|
||||
p0,
|
||||
q0,
|
||||
q1,
|
||||
p1
|
||||
) = arc(
|
||||
center: center,
|
||||
r: out-tail-rad,
|
||||
th0: th0 + gap-angle,
|
||||
th1: th0 + arrow-angle - point-angle,
|
||||
)
|
||||
let p2 = polar(
|
||||
origin: center,
|
||||
r: out-rad,
|
||||
th: th0 + arrow-angle - point-angle
|
||||
)
|
||||
let c3 = polar(
|
||||
origin: center,
|
||||
r: center-rad,
|
||||
th: th0 + arrow-angle - point-angle
|
||||
)
|
||||
let p3 = polar(
|
||||
origin: c3,
|
||||
r: center-rad * calc.tan(-point-angle),
|
||||
th: th0 + arrow-angle - point-angle - 90deg
|
||||
)
|
||||
let p4 = polar(
|
||||
origin: center,
|
||||
r: in-rad,
|
||||
th: th0 + arrow-angle - point-angle
|
||||
)
|
||||
|
||||
let (
|
||||
p5,
|
||||
q5,
|
||||
q6,
|
||||
p6
|
||||
) = arc(
|
||||
center: center,
|
||||
r: in-tail-rad,
|
||||
th0: th0 + arrow-angle - point-angle,
|
||||
th1: th0 + gap-angle,
|
||||
)
|
||||
th0 += arrow-angle
|
||||
(
|
||||
curve.move(p0),
|
||||
curve.cubic(q0, q1, p1),
|
||||
curve.line(p2),
|
||||
curve.line(p3),
|
||||
curve.line(p4),
|
||||
curve.line(p5),
|
||||
curve.cubic(q5, q6, p6),
|
||||
curve.close(mode: "straight")
|
||||
)
|
||||
}
|
||||
))
|
||||
)
|
||||
}
|
||||
|
||||
#let analyse(
|
||||
height: 200pt,
|
||||
stroke: 3pt + black,
|
||||
node_fill: white,
|
||||
fill: gray,
|
||||
) = {
|
||||
let width = height
|
||||
let loop_out_rad = height / 4
|
||||
let loop_in_rad = height * 0.17
|
||||
let loop_width = height / 10
|
||||
let loop_len = height
|
||||
let angle = 60deg
|
||||
|
||||
let text_line_height = height * 0.03
|
||||
let text_line_width = width * 0.2
|
||||
let text_line_delta = text_line_height * 2
|
||||
|
||||
let inter_center = loop_len - loop_width / 2 - loop_out_rad
|
||||
|
||||
let hangle_delta_angle = calc.asin(loop_width / 2 / loop_out_rad)
|
||||
|
||||
let center_handle = (
|
||||
width - inter_center * calc.cos(angle) - loop_out_rad,
|
||||
height - loop_width / 2
|
||||
)
|
||||
let center_loop = polar(
|
||||
origin: center_handle,
|
||||
r: inter_center,
|
||||
th: - angle
|
||||
)
|
||||
|
||||
let node_rad = loop_in_rad / 5
|
||||
let line_width = node_rad * 2 / 3
|
||||
|
||||
let node_1_center = (
|
||||
center_loop.at(0) + loop_in_rad * 0.2,
|
||||
center_loop.at(1) - loop_in_rad * 0.4
|
||||
)
|
||||
let node_2_center = (
|
||||
width * 1 / 4,
|
||||
node_1_center.at(1) - loop_in_rad * 0.3
|
||||
)
|
||||
let bend_nodes_12 = (
|
||||
width * 0.3,
|
||||
center_loop.at(1) - loop_in_rad * 0.4
|
||||
)
|
||||
|
||||
let node_3_center = (
|
||||
center_loop.at(0) - loop_in_rad * 0.3,
|
||||
center_loop.at(1) + loop_in_rad * 0.4
|
||||
)
|
||||
let node_4_center = (
|
||||
width* 0.2,
|
||||
node_3_center.at(1) + loop_in_rad / 2,
|
||||
)
|
||||
let bend_nodes_34 = (
|
||||
width * 0.35,
|
||||
node_3_center.at(1)
|
||||
)
|
||||
|
||||
|
||||
let (
|
||||
p0,
|
||||
q0,
|
||||
q1_0,
|
||||
p1
|
||||
) = arc(
|
||||
center: center_handle,
|
||||
r: loop_width / 2,
|
||||
th0: 270deg - angle,
|
||||
th1: 180deg - angle
|
||||
)
|
||||
let (
|
||||
_,
|
||||
q1_1,
|
||||
q2,
|
||||
p2
|
||||
) = arc(
|
||||
center: center_handle,
|
||||
r: loop_width / 2,
|
||||
th0: 180deg - angle,
|
||||
th1: 90deg - angle
|
||||
)
|
||||
let (
|
||||
p3,
|
||||
q3,
|
||||
q4_0,
|
||||
p4
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_out_rad,
|
||||
th0: (90deg - angle) + 90deg - hangle_delta_angle,
|
||||
th1: 90deg
|
||||
)
|
||||
let (
|
||||
_,
|
||||
q4_1,
|
||||
q5_0,
|
||||
p5
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_out_rad,
|
||||
th0: 90deg,
|
||||
th1: 0deg
|
||||
)
|
||||
let (
|
||||
_,
|
||||
q5_1,
|
||||
q6_0,
|
||||
p6
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_out_rad,
|
||||
th0: 0deg,
|
||||
th1: -90deg
|
||||
)
|
||||
let (
|
||||
_,
|
||||
q6_1,
|
||||
q7_0,
|
||||
p7
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_out_rad,
|
||||
th0: -90deg,
|
||||
th1: -180deg
|
||||
)
|
||||
let (
|
||||
_,
|
||||
q7_1,
|
||||
q8_0,
|
||||
p8
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_out_rad,
|
||||
th0: -180deg,
|
||||
th1: -270deg + (90deg - angle) + hangle_delta_angle
|
||||
)
|
||||
|
||||
let (
|
||||
lp0,
|
||||
lq0,
|
||||
lq1_0,
|
||||
lp1
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_in_rad,
|
||||
th0: 0deg,
|
||||
th1: 90deg,
|
||||
)
|
||||
let (
|
||||
_,
|
||||
lq1_1,
|
||||
lq2_0,
|
||||
lp2
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_in_rad,
|
||||
th0: 90deg,
|
||||
th1: 180deg,
|
||||
)
|
||||
let (
|
||||
_,
|
||||
lq2_1,
|
||||
lq3_0,
|
||||
lp3
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_in_rad,
|
||||
th0: 180deg,
|
||||
th1: 270deg,
|
||||
)
|
||||
let (
|
||||
_,
|
||||
lq3_1,
|
||||
lq4,
|
||||
lp4
|
||||
) = arc(
|
||||
center: center_loop,
|
||||
r: loop_in_rad,
|
||||
th0: 270deg,
|
||||
th1: 360deg,
|
||||
)
|
||||
|
||||
|
||||
box(
|
||||
height: height,
|
||||
width: width,
|
||||
//stroke: black,
|
||||
{
|
||||
place(top+left,curve(
|
||||
fill: fill,
|
||||
stroke: stroke,
|
||||
curve.move(p0),
|
||||
curve.cubic(q0, q1_0, p1),
|
||||
curve.cubic(q1_1, q2, p2),
|
||||
curve.line(p3),
|
||||
curve.cubic(q3, q4_0, p4),
|
||||
curve.cubic(q4_1, q5_0, p5),
|
||||
curve.cubic(q5_1, q6_0, p6),
|
||||
curve.cubic(q6_1, q7_0, p7),
|
||||
curve.cubic(q7_1, q8_0, p8),
|
||||
curve.close(mode: "straight"),
|
||||
|
||||
curve.move(lp0),
|
||||
curve.cubic(lq0, lq1_0, lp1),
|
||||
curve.cubic(lq1_1, lq2_0, lp2),
|
||||
curve.cubic(lq2_1, lq3_0, lp3),
|
||||
curve.cubic(lq3_1, lq4, lp4),
|
||||
curve.close(mode: "straight"),
|
||||
|
||||
))
|
||||
|
||||
for (st, nd) in (
|
||||
(node_1_center, bend_nodes_12),
|
||||
(bend_nodes_12, node_2_center),
|
||||
(node_3_center, bend_nodes_34),
|
||||
(bend_nodes_34, node_4_center),
|
||||
) {
|
||||
place(top+left, line(start: st, end: nd, stroke: line_width))
|
||||
}
|
||||
|
||||
for i in range(3) {
|
||||
let y = node_2_center.at(1) - (i+0.75) * text_line_delta - node_rad
|
||||
let st = (
|
||||
node_2_center.at(0) - text_line_width,
|
||||
y
|
||||
)
|
||||
let nd = (
|
||||
node_2_center.at(0),
|
||||
y
|
||||
)
|
||||
place(
|
||||
top+left,
|
||||
line(
|
||||
start: st,
|
||||
end: nd,
|
||||
stroke: std.stroke(
|
||||
thickness: text_line_height,
|
||||
cap: "round",
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
for i in range(4) {
|
||||
let y = node_4_center.at(1) + (i+0.75) * text_line_delta + node_rad
|
||||
let st = (
|
||||
node_4_center.at(0) - text_line_width / 2,
|
||||
y
|
||||
)
|
||||
let nd = (
|
||||
node_4_center.at(0) + text_line_width / 2,
|
||||
y
|
||||
)
|
||||
place(
|
||||
top+left,
|
||||
line(
|
||||
start: st,
|
||||
end: nd,
|
||||
stroke: std.stroke(
|
||||
thickness: text_line_height,
|
||||
cap: "round",
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
for bend in (bend_nodes_12, bend_nodes_34) {
|
||||
place(
|
||||
top+left,
|
||||
dx: bend.at(0) - line_width / 2,
|
||||
dy: bend.at(1) - line_width / 2,
|
||||
circle(radius: line_width/2, fill: black, stroke: none)
|
||||
)
|
||||
}
|
||||
for node in (node_1_center, node_2_center, node_3_center, node_4_center) {
|
||||
place(top+left,
|
||||
dx: node.at(0) - node_rad,
|
||||
dy: node.at(1) - node_rad,
|
||||
circle(radius: node_rad, fill: node_fill, stroke: stroke)
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
//#report(height: 200pt)
|
||||
|
||||
//#gear()
|
||||
//#phone(body: [Hello World!])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue