Public
Edited
Apr 12
1 fork
Insert cell
Insert cell
mdPlus`${questionsA25[9].content()}`
Insert cell
smartDrawing(300, (rac, shared) => {
const P1 = rac.Point(282, 30);
const P2 = rac.Point(322, 268);
const Q1 = rac.Point(315, 17);
const Q2 = rac.Point(207, 274);
const B = rac.Point(435, 190);

const p = P1.rayToPoint(P2);
const q = Q1.rayToPoint(Q2);

const C = p.pointAtIntersection(q);

const calibration = rac
.Composite([
p,
q,
markPoint(rac, B, "B", rac.Text.Format.tc),
q.text("q").upright(),
p.text("p").upright(),
markPoint(rac, C, "C", rac.Text.Format.cl)
])
.draw();

// const C = p.pointAtIntersection(q);
// const k = C.arc(50, 6/10,1);

// const S1 = k.intersectionChordWithRay(p).startPoint();
// const S2 = k.intersectionChordWithRay(q).startPoint();
// const S = S1.pointAtBisector(S2);
// const o = C.rayToPoint(S)

const BA = B.rayToProjectionInRay(p);
const S = BA.pointAtIntersection(q);
const A = BA.pointAtDistance(S.distanceToPoint(B) * 2);
// const M = MN.pointAtIntersection(p);
// const N = MN.pointAtIntersection(q);

// const NK = N.rayToProjectionInRay(MN);
// const K = NK.pointAtIntersection(p);

// const ML = M.rayToProjectionInRay(MN);
// const L = ML.pointAtIntersection(q);

const steps = rac
.Composite([
BA,
markPoint(rac, S, "S", rac.Text.Format.tc),
markPoint(rac, A, "A", rac.Text.Format.tc),
polygon(rac, [A, B, C])
])
.draw();
})
Insert cell
smartDrawing(300, (rac, shared) => {
const Q2 = rac.Point(353,279)
const Q1 = rac.Point(98,21)
const P1 = rac.Point(452,106)
const P2 = rac.Point(53,209)
const R = rac.Point(207,84)
const p = P1.rayToPoint(P2)
const q = Q1.rayToPoint(Q2)

const calibration = rac
.Composite([
p,
q,
markPoint(rac, R, "R", rac.Text.Format.bc),
q.text("q"),
p.text("p").upright()
])
.draw();

const C = p.pointAtIntersection(q);
const k = C.arc(50, 6/10,1);
const S1 = k.intersectionChordWithRay(p).startPoint();
const S2 = k.intersectionChordWithRay(q).startPoint();
const S = S1.pointAtBisector(S2);
const o = C.rayToPoint(S)
const MN = R.rayToProjectionInRay(o).translateToDistance(-100);
const M = MN.pointAtIntersection(p);
const N = MN.pointAtIntersection(q);
const NK = N.rayToProjectionInRay(MN);
const K = NK.pointAtIntersection(p);
const ML = M.rayToProjectionInRay(MN);
const L = ML.pointAtIntersection(q);
const steps = rac.Composite([
markPoint(rac, C, "C", rac.Text.Format.tr),
k,
markPoint(rac, S1, "S1", rac.Text.Format.tr),
markPoint(rac, S2, "S2", rac.Text.Format.tr),
o,
o.pointAtCanvasEdge().text("o"),
MN,
markPoint(rac, M, "M", rac.Text.Format.tr),
markPoint(rac, N, "N", rac.Text.Format.tr),
NK,
markPoint(rac, K, "K", rac.Text.Format.tr),
ML,
markPoint(rac, L, "L", rac.Text.Format.tr),
polygon(rac, [K,L,M,N])
]).draw();
})
Insert cell
Insert cell
smartDrawing(300, (rac, shared) => {
// Colors from the shared object
let white = shared.palette.white;
let black = shared.palette.black;

//let dashedStyle = new rac.StyleContainer(rac, [white.stroke(), black.fill()])
const C = rac.Point(199, 86);
const S = rac.Point(292, 184);
const CS = C.segmentToPoint(S).draw(white);
const p = CS.perpendicular().draw();
// const radius = S.distanceToPoint(A);
// const k = S.arc(radius, 5 / 8, 5 / 8);

const calibration = rac
.Composite([
markPoint(rac, S, "S", rac.Text.Format.tc),
//markPoint(rac, E, "E", rac.Text.Format.bl),
markPoint(rac, C, "C", rac.Text.Format.bc)
// k,
// k.text("k")
])
.draw();

// const rAS = A.rayToPoint(S);
// const C = k.intersectionChordEndWithRay(rAS);
// const rCE = C.rayToPoint(E);
// const B = rCE.pointAtDistance(C.distanceToPoint(E) * 2);
// const rBA = B.rayToPoint(A);
// const rAD = A.ray(rBA.perpendicular().angle);
// const D = k.intersectionChordEndWithRay(rAD);

// const steps = rac.Composite([
// rAS,
// markPoint(rac, C, "C", rac.Text.Format.bl),
// rCE,
// markPoint(rac, B, "B", rac.Text.Format.bl),
// rBA,
// rAD,
// markPoint(rac, D, "D", rac.Text.Format.br),
// polygon(rac, [A, B, C, D])
// ]);
})
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
point.map((d,i)=> `const p${i+1} = rac.Point(${d[0]},${Math.round(d[1])})`).join("\n")
Insert cell
viewof point = imagePointPicker({imageUrl:'https://www.eforms.cz/math/4/M9A-2025/image-4.png', height: 300})
Insert cell
questionsA = getQuestions("M9A-2024");
Insert cell
Insert cell
questionsA25= getQuestions("M9A-2025");
Insert cell
async function getQuestions(code){
const url = `https://www.eforms.cz/math/4/${code}`;
const response = await fetch(`${url}/index.md`);
const quiz = await response.text();
return parseQuestions(normalizeImageUrlsToAbsoluteUrls(quiz,[url]))
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more