{
const ct = canvas.ct;
const { sin, cos } = Math;
ct.clearRect(0, 0, WIDTH, HEIGHT);
ct.beginPath();
ct.arc(
(A[0] + B[0])/2 + d[1] * cos(α),
(A[1] + B[1])/2 - d[0] * cos(α),
radius, δ+Math.PI, δ + ρ*2
);
ct.strokeStyle = "#666";
ct.stroke();
const l = (d[0]*sin(θ) - d[1]*cos(θ)) / sin(α);
const X = [
B[0] - l*cos(θ+α),
B[1] - l*sin(θ+α),
];
ct.beginPath();
ct.moveTo(X[0] - extent*cos(θ), X[1] - extent*sin(θ));
ct.lineTo(X[0] + extent*cos(θ), X[1] + extent*sin(θ));
ct.moveTo(X[0] - extent*cos(θ+α), X[1] - extent*sin(θ+α));
ct.lineTo(X[0] + extent*cos(θ+α), X[1] + extent*sin(θ+α));
ct.lineWidth = 0.5;
ct.strokeStyle = "#999";
ct.stroke();
ct.beginPath();
ct.arc(X[0], X[1], 2, 0, 7);
ct.fillStyle = "#900";
ct.fill();
ct.beginPath();
ct.moveTo(A[0], A[1]);
ct.lineTo(B[0], B[1]);
ct.lineWidth = 1;
ct.strokeStyle = "blue";
ct.stroke();
ct.beginPath();
ct.arc(A[0], A[1], 5, 0, 7);
ct.arc(B[0], B[1], 5, 0, 7);
ct.fillStyle = "#333";
ct.fill();
return this || html`(<i>the drawing function</i>)`;
}