7
$\begingroup$

I'm trying to solve the following problem with GeometricScene

What is the shortest circular arc of which the altitude above its chord is one?

enter image description here

I have the following code:

GeometricScene[
    {
        {a -> {0, 0}, b -> {0, r}, c -> {0, r - 1}, d}, 
        {r, l}
    },
    {
        GeometricAssertion[{Line[{b, c}], Line[{c, d}]}, "Perpendicular"],
        GeometricAssertion[{Circle[a, r], Line[{c, d}]}, {"Concurrent", d}],
        l == 2 r PlanarAngle[a -> {c, d}]
    }
]

from which I get random instances like this

enter image description here

Is there any way to get a formula for l in terms of r? I know that I can substitute values of r into the scene and then use l /. RandomInstance[scene]["Quantities"] to get a numeric answer, but can this be done symbolically?

Obviously one can do the geometry by hand, but referring specifically to GeometricScene, does it have these capabilities?

$\endgroup$
3
  • 1
    $\begingroup$ There's currently no way to express l in terms of r through GeometricScene. Under the hood it finds instances of a scene through numerical methods. $\endgroup$
    – Greg Hurst
    Commented Jun 16, 2019 at 19:06
  • $\begingroup$ @Chip Hurst ah okay, that's a little disappointing but maybe it's something the developers are working on. At the very least it'd be nice to get some kind of numeric function object out of GeometricScene for things like this so that passing it to one of the optimization functions could be easier/more efficient. $\endgroup$
    – ccosm
    Commented Jun 16, 2019 at 23:04
  • $\begingroup$ seems like a good idea. I’ll pass this along to the development team. $\endgroup$
    – Greg Hurst
    Commented Jun 17, 2019 at 1:02

2 Answers 2

5
$\begingroup$
ResourceFunction["GeometricSolve"][
 GeometricScene[{{a -> {0, 0}, b -> {0, r}, c -> {0, r - 1}, d}, {r, 
    l}}, {GeometricAssertion[{Line[{b, c}], Line[{c, d}]}, 
    "Perpendicular"], 
   GeometricAssertion[{Circle[a, r], Line[{c, d}]}, {"Concurrent", 
     d}]}], 2 r PlanarAngle[a -> {c, d}]]

enter image description here

$\endgroup$
0
$\begingroup$

This is a much simpler problem than for GeometricScene.

Here my solution with Manipulate.

Manipulate[
 With[{alp := ArcSin[(d - 1)/d]}, 
  Graphics[{{White, Circle[{0, 0}, 5]}, Circle[{0, 0}, d], 
    Point[{0, d Sin[alp]}], 
    Point[{0, d}], {EdgeForm[Thick], White, 
     Triangle[{{0, 0}, {-d Cos[alp], d Sin[alp]}, {d Cos[alp], 
        d Sin[alp]}}]}, Line[{{0, d Sin[alp]}, {0, d}}], 
    Text[Style[1, 16], {-0.15, d - 0.5}], {EdgeForm[Thick], Red, 
     Circle[{0, 0}, 
      d, {alp - \[Pi]/2 + \[Pi]/2, -alp + \[Pi]}]}}]], {d, 1, 5}]

There is only one parameter-free. The restriction makes this two-dimensional appearing problem one-dimensional.

graphics

Every equivalent to Manipulate creates the video or gif or animation.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.