iconEuler Examples

Apian's Problem and Rational geometry

by R. Grothmann

The following problem seems to go back to Phillip Apian (1531-1589), a
German geometer:

"Search the point on a line such that a given line segment appears at
a maximal angle.

http://de.wikipedia.org/wiki/Philipp_Apian

In poetic form, he asked at what distance a man sees most of his
beloved standing on a balcony. That is a special case where the line
is orthogonal to the segment.

Apian Problem

The sketch shows the solution in the given situation, and it also
shows the idea of the general solution. The circle is constructed such
that it goes through the endpoints of the segment, and touches the
line. The construction has been done by C.a.R.

The angle of the segment is the same for all points on the circle,
larger for points inside the circle, and less for points outside the
circle. Thus it is clear why the circle touching the line provides the
optimal angle.

Can you see the construction of this circle, indicated in the sketch?
>load geometry;
We solve a special case analytically, neglecting the geometric
solution we already have.

The file geometry.e contains commands for analytic geometry, both
numerically, and symbolically.

First we set the points in Euler, and in Maxima.
>A &:= [0,1]; B &:= [1,3];
Now we set the plot range.
>setPlotRange(-3,3,-3,3);
The plot commands in geometry always add elements to the plot.

We add the two points, and the segment through these points.
>plotPoint(A,"A"); plotPoint(B,"B"); plotSegment(A,B);
Then we define a line in Euler and Maxima, and add it to the plot.
>l&:=lineWithDirection([0,0],[2,1]); plotLine(l); insimg;

Apian Problem

Maxima can extract the equation of the line from the line vector.
>le &= getLineEquation(l,x,y)
                             2 y - x = 0

In the next step, we compute the quadrances of the segment, and the
distance from a point [x,y] to A and B. Quadrances are distances
squared. These terms are explained in the example notebook about
"Rational Geometry" (search the internet for Normal Wildberger).
>s&=quad(A,B), a&=quad([x,y],A), b&=quad([x,y],B)
                                  5


                                   2    2
                            (1 - y)  + x


                                2          2
                         (3 - y)  + (1 - x)

The spread of the angle at [x,y] satisfies the "crosslaw", a
translation of the cosine law into rational geometry. The spread of an
angle t is defined as sin(t)^2. Maxima can be used to setup the
equation of the crosslaw for our situation, and it can solve the
equation fot this spread.

We create a function w(x,y), which returns the spread for each point
[x,y].
>&crosslaw(s,a,b,w), &solve(%,w); function w(x,y) &= factor(rhs(%[1]))
               2          2    2          2     2
       ((3 - y)  + (1 - y)  + x  + (1 - x)  - 5)  = 
                                         2    2          2          2
                       4 (1 - w) ((1 - y)  + x ) ((3 - y)  + (1 - x) )


                                         2
                            (y - 2 x - 1)
            ----------------------------------------------
              2          2               2          2
            (y  - 6 y + x  - 2 x + 10) (y  - 2 y + x  + 1)

This is a nasty function.

Apian Problem

It is in fact the square of the sine of the angle at [x,y] at which
the segment appears.

We now wish to maximize w(x,y) under the condition that [x,y] is on
our line. We use the lagrange formula for this, but we could just as
well substitute y=x/2. Surprisingly, Maxima finds all solutions.
>sol &= solvelagrange(w(x,y),lhs(le),[x,y])
                                              3/2
                          sqrt(6) I + 3      2    sqrt(3) I + 6
        [[lambda = 0, y = -------------, x = ------------------], 
                                5                    5
                                         3/2
                 3 - sqrt(6) I      6 - 2    sqrt(3) I
[lambda = 0, y = -------------, x = ------------------], 
                       5                    5
                 9/2  5/2
           7209 2    5    - 9298800        sqrt(10) - 1
[lambda = ---------------------------, y = ------------, 
                15/2  9/2                       3
          2611 2     5    - 661422500
     3/2                                9/2  5/2
    2    sqrt(5) - 2              7209 2    5    + 9298800
x = ----------------], [lambda = ---------------------------, 
           3                           15/2  9/2
                                 2611 2     5    + 661422500
                           3/2
    - sqrt(10) - 1      - 2    sqrt(5) - 2
y = --------------, x = ------------------], 
          3                     3
                   1        2
[lambda = 0, y = - -, x = - -]]
                   3        3

Now we extract the real solutions to Euler. The result are three
points.
>P1 := &at([x,y],sol[3])(), plotPoint(P1,"P1"); ...
[ 1.44151844011  0.720759220056 ]
>P2:="::at([x,y],sol[4])"(), plotPoint(P2,"P2"); ...
[ -2.77485177345  -1.38742588672 ]
>P3:="::at([x,y],sol[5])"(), plotPoint(P3,"P3"); ...
[ -0.666666666667  -0.333333333333 ]
>insimg;

Apian Problem

In fact, these points are local extrema. Two of them are solutions of
touching circles, and one is the intersection of the line through AB
with the given line.
>color(4); ...
>plotCircle(circleThrough(A,B,P1)); ...
>plotCircle(circleThrough(A,B,P2)); ...
>plotLine(lineThrough(A,B)); ...
>color(1); ...
>insimg;

Apian Problem

Note that P3 is an extrema, since our spreads are always positive,
and the angle is 0 there.

Let us plot the function w(x,y), when [x,y] walks along the line.
First we make a function w1(x).
>&solve(le,y); function w1(x) &= factor(w(x,at(y,%)))
                                       2
                            4 (3 x + 2)
                  ---------------------------------
                      2                2
                  5 (x  - 4 x + 8) (5 x  - 4 x + 4)

Then we plot it.
>plot2d("w1(x)",-5,5); ...
>t=[P1[1],P2[1],P3[1]]; plot2d(t,"w1(t)"(),points=1,add=1); insimg;

Apian Problem

We can see the three local extrema. Of course, P1 is the point, we
are looking for.

Examples Homepage