Řešení konstrukčních úloh

Řešení konstrukčních úloh

K vytvoření gemoetrických konstrukcí je použita knihovna RAC - Ruler and Compass.

Konstrukční úloha je rozdělena na části

Každá část je vykreslena jinou barvou. Řešení je rozděleno na jednotlivé kroky, aby bylo možno vykreslovat po krocích. Toto řešení umožňuje generovat vysvětlující videa.

Jak je to uděláno?


smartDrawing(300, (rac, shared) => {  

    //calibration
    const S = rac.Point(116, 159);
    const E = rac.Point(218, 144);
    const A = rac.Point(59, 211);

    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.tl),
        markPoint(rac, E, "E", rac.Text.Format.bl),
        markPoint(rac, A, "A"),
        k,
        k.text("k")
      ])
      .draw(); // draw input

    //solution steps
    const rAS = A.rayToPoint(S); // 1. ↦AS
    const C = k.intersectionChordEndWithRay(rAS); // 2. C;C∈k∩↦AS
    const rCE = C.rayToPoint(E); // 3. ↦E
    const B = rCE.pointAtDistance(C.distanceToPoint(E) * 2); // 4. B;B∈↦CE;∣CE∣=∣BE∣    
    const rBA = B.rayToPoint(A); // 5. ↦BA
    const rAD = A.ray(rBA.perpendicular().angle); // 6. ↦A;↦A⊥↦BA
    const D = k.intersectionChordEndWithRay(rAD); // 7. D;D∈k∩↦A

    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),
      result
    ])
    .draw(shared.secondary); // draw solution steps

    
    polygon(rac, [A, B, C, D]) //final construction -  □ABCD
    .draw(shared.primary) // draw final polygon
})

Příklady

Další příklady řešení konstrukční úloh lze nalézt zde.