smartDrawing(300, (rac, shared) => {
const A = rac.Point(89, 132);
const S = rac.Point(140, 118);
const p = rac.Point(48, 90);
const p2 = rac.Point(260, 72);
let rayp = p.rayToPoint(p2);
const calibration = rac
.Composite([
markPoint(rac, S, "S", rac.Text.Format.bc),
markPoint(rac, A, "A", rac.Text.Format.cr),
p.text("p", rac.Text.Format.rb),
rayp
])
.draw();
let rayAS = A.rayToPoint(S);
let DistancAS = A.distanceToPoint(S);
let arck = S.arc(DistancAS);
let C = arck.intersectionChordWithRay(rayAS).endPoint();
let D1 = arck.intersectionChordWithRay(rayp).startPoint();
let D2 = arck.intersectionChordWithRay(rayp).endPoint();
let rayD1S = D1.rayToPoint(S);
let B2 = arck.intersectionChordWithRay(rayD1S).endPoint();
let rayD2S = D2.rayToPoint(S);
let B1 = arck.intersectionChordWithRay(rayD2S).endPoint();
const reseni = rac
.Composite([
rayAS,
arck,
markPoint(rac, C, "C", rac.Text.Format.cl),
markPoint(rac, D1, "D1", rac.Text.Format.br),
markPoint(rac, D2, "D2", rac.Text.Format.bl),
rayD1S,
markPoint(rac, B2, "B2", rac.Text.Format.tc),
rayD2S,
markPoint(rac, B1, "B1", rac.Text.Format.tc)
])
.draw(shared.secondary);
polygon(rac, [A, B2, C, D2]).draw(shared.primary);
polygon(rac, [A, B1, C, D1]).draw(shared.primary);
})