## 13579 Reputation

13 years, 105 days

## A 'point'...

as far as polygonplot() is concerned is just a list of two points - corresponding to just the coordinates() of the entity defined by geometry:-point().

see the attached

 > restart:   with(geometry):   with(plots):   _EnvHorizontalName = 'x':   _EnvVerticalName = 'y':    R := 5:    circle(cir, [point(OO, [0, 0]), R]):    ang := [3/4*Pi, -(3*Pi)/4, -Pi/6, 4*Pi/9]:    seq    ( point      ( `||`(P, i),        [ R*cos(ang[i]), R*sin(ang[i])]      ),      i = 1 .. 4    ):    trpts:=combinat:-choose([P1, P2, P3, P4], 3):    for j from 1 by 1 to numelems(trpts) do        triangle        ( `||`( Tr, j),          trpts[j]        ):        EulerCircle        ( `||`(Elc, j),          `||`(Tr, j),          'centername'=`||`(o, j)        ):    od:    display    ( [ draw        ( [ seq            ( [ `||`(P, j)(color = black, symbol = solidcircle, symbolsize = 12),                `||`(o, j)(color = black, symbol = solidcircle, symbolsize = 12),                `||`(Tr, j)(color = green),                `||`(Elc, j)              ][],              j=1..4            ),            cir(color = blue)          ]        ),        polygonplot        ( [ [ seq              ( coordinates                ( `||`(P, j)                ),                j=1..4              )            ],            [ seq              ( coordinates                ( `||`(o, j)                ),                j=1..4              )            ]          ],          color = [blue, red],          filled=true,          transparency = 0.7        ),        textplot        ( [ seq            ( [ [ coordinates(`||`(P, i))[],                  convert(`||`(P, i), string)                ],                [ coordinates(`||`(o, i))[],                  convert(`||`(o, i), string)                ]              ][],              i=1..4            )          ],            align=[above, right]        )      ],      axes=none    );;
 >

## With more corrections...

and getting rid of more code you really don't need.

See the attached

 > restart:   with(geometry):   with(plots):   _EnvHorizontalName = 'x':   _EnvVerticalName = 'y':    R := 5:    circle(cir, [point(OO, [0, 0]), R]):    ang := [3/4*Pi, -(3*Pi)/4, -Pi/6, 4*Pi/9]:    seq    ( point      ( `||`(P, i),        [ R*cos(ang[i]), R*sin(ang[i])]      ),      i = 1 .. 4    ):    trpts:=combinat:-choose([P1, P2, P3, P4], 3):    for j from 1 by 1 to numelems(trpts) do        triangle        ( `||`( Tr, j),          trpts[j]        ):        EulerCircle        ( `||`(Elc, j),          `||`(Tr, j),          'centername'=`||`(o, j)        ):    od:    display    ( [ draw        ( [ seq            ( [ `||`(P, j)(color = black, symbol = solidcircle, symbolsize = 12),                `||`(o, j)(color = black, symbol = solidcircle, symbolsize = 12),                `||`(Tr, j)(color = green),                `||`(Elc, j)              ][],              j=1..4            ),            cir(color = blue)          ]        ),        textplot        ( [ seq            ( [ [ coordinates(`||`(P, i))[],                  convert(`||`(P, i), string)                ],                [ coordinates(`||`(o, i))[],                  convert(`||`(o, i), string)                ]              ][],              i=1..4            )          ],            align=[above, right]        )      ],      axes=none    );;
 >
 >

## As supplied...

solve works perfectly, see the attached.

 > restart;   solve({x = 1 + 5*t, y = 1 + 3*t, 5*x + 3*y + 1 = 0}, {t, x, y});
 (1)
 >

However the Error mesage you are getting is "solving for expressions other than names or functions" implies that somewhere else in you worksheet (at least) one of 'x', 'y' or 't' has been assigned to something else.

Obviously if you had uploaded a worksheet, this would be trivial to fix. Since you absolutely refuse to upload worksheets here, I guess you will have to find/fix it yourself. No-one here can debug a worksheet which they cannot see!!

## Or...

with the geometry package

 > restart:   with(geometry):   _EnvHorizontalName:='x':   _EnvVerticalName='y':   point(A, [1, -2]):   point(B, [-2, 3]):   point(C, [1, 1]):   line(l1, [A,B]):   projection(P, C, l1):   coordinates(P);   simplify(distance(C,P));
 (1)
 >

## Really doesn't help...

I said in my original response that I have absolutely no idea what construction you are trying to produc. Your latest comment is equally confusing.

For example, you state

leave fixed the circumscribed triangle P1P2P2

This makes no sense. There is no such thing as a "circumscribed triangle" in geometry. You can define a triangle P1P2P3 and then a "circumscribed circle", which is the circle that passes through the points P1, P2, P3. This is the green circle in my first answer

You further state

make mobile the triangle inscribed AM2 M3

This makes no sense. There is no such thing as a "inscribed triangle" in geometry.. You can define a triangle AM1M2 and then an "inscribed circle", which is the circle tangent to all three edges of that triangle.This is the blue circle in my first answer

Since I still have no idea what construction you are trying to produce, and you are incapable of explaining what you want, I have added a "stationary" triangle to my previous answer, (and relabelled some points)

 > restart;   with(geometry):   with(plots):   _EnvHorizontalName='x':   _EnvVerticalName='y':   R := 5.0:   ang := evalf~([2/3*Pi, -3*Pi*1/4, -Pi*1/6]):   seq( point( `||`(P, i),               [ R*cos(ang[i]),                 R*sin(ang[i])               ]             ),        i = 1 .. 3      ):   triangle( T1,             [seq(`||`(P, j), j=1..3)]           ):   incircle(C1, T1):   circumcircle(C2, T1):   porism:= proc(t)                 local theta:=ang[1]+t,                       A, M1, M2, L, II, T2,j;               #               # local point A is somewhere on the (global)               # circumcircle C2               #                 point( A,                        [ R*cos(theta),                          R*sin(theta)                        ]                      ):               #               # Get the tangent lines from (local) A to               # the (global) incircle C1               #                 TangentLine(L, A, C1):               #               # Find the intersection of these tangent lines               # with the (global) circumcircle C2. Note that               # each tangent line, intersects C2 at two points,               # one of which is (local) point(A). So for               # both tangent lines, determine the intersection               # point whihc isn't A               #                 intersection(II, L[1], C2):                 if   distance(II[1], A) > distance(II[2], A)                 then point( M1,                             coordinates(II[1])                           );                 else point( M1,                             coordinates(II[2])                           );                 fi:                 intersection( 'II', L[2], C2):                 if   distance(II[1], A) > distance(II[2], A)                 then point( M2,                             coordinates(II[1])                           );                 else point( M2,                             coordinates(II[2])                           );                 fi:                 triangle( T2,                           [A, M1, M2]                         ):                 display                 ( [ draw                     ( [ P1(color=black, symbol=solidcircle, symbolsize = 12),                         P2(color=black, symbol=solidcircle, symbolsize = 12),                         P3(color=black, symbol=solidcircle, symbolsize = 12),                         A(color=black, symbol=solidcircle, symbolsize = 12),                         M1(color=black, symbol=solidcircle, symbolsize = 12),                         M2(color=black, symbol=solidcircle, symbolsize = 12),                         T1(color=black, thickness=4),                         T2(color=red),                         C1(color=blue),                         C2(color=green)                       ]                     ),                     textplot                     ( [ [ coordinates(A)[], "A", align=[above, right], color=red],                         [ coordinates(M1)[], "M1", align=[above, right], color=red],                         [ coordinates(M2)[], "M2", align=[above, right], color=red],                         [ coordinates(P1)[], "P1", align=[below, left]],                         [ coordinates(P2)[], "P2", align=[below, left]],                         [ coordinates(P3)[], "P3", align=[below, left]]                       ],                       align=[above, right]                     )                   ],                   axes=none                 );         end proc:   nf:=60:   display   ( [ seq       ( porism(j),         j=0..evalf(2*Pi), evalf(2*Pi/nf)       )     ],     insequence=true   );
 >

## And...

So

It is one line with two simple commands.

is better than one line with one simple command

## Interesting...

So you want to

1. read a file containing maple code, converting that code to a string
2. parse the string to reproduce/execute the maple code

rather than

1. read/execute a file containing Maple code

I guess if you like doing things the hard way..........

## Still no worksheet!!??...

You cannot 'assign' to a procedure parameter within the procedure. A procedure parameter is supplied with arguments when the procedure is called. so in the code snip you provided, the following statements are invalid

```A:= <x1,y1>;
B:= <x2,y2>;
P :=<x3, y3>; ```

You also appear to have forwardquotes, rather than backquotes around H in the final line of the procedure - tricky to tell from a cut-and-paste, which is another reason for posting a worksheet.

If you do want to write you own routine to get the projection of a point on a line, then a functional version of your code is shown in the attached. Note that this does no error-checking for whether the projection is possible. You might want to consider when the calculation will fail!

It is also possible to perform the same calculation using te geometry() package as shown in the attached

 > restart;   ProjPL:= proc(P, A, B)                 local H, t:                 H:= A+t*(B-A);                 solve( (P-H)^+ . (B-A), t );                 return eval( H, t=% );            end:   ProjPL( <1, 1>, <2, 3>, <4, 5>);
 (1)
 > restart:   _EnvHorizontalName:='x':   _EnvVerticalName:='y':   ProjPL:= proc( P, A, B)                  uses geometry:                  local P0, P1, P2, l, q:                  point(P0, P[1], P[2]):                  point(P1, A[1], A[2]):                  point(P2, B[1], B[2]):                  line(l, [P1, P2]);                  projection(Q, P0, l);                  return coordinates(Q);            end proc:   ProjPL( <1, 1>, <2, 3>, <4, 5>);
 (2)
 >

## Not sure...

I understand the problem. Supplied code seems to execute - see the attached.

Might be better if you upload a worksheet which illustrates your problem using the big green up-arrow in the Mapleprimes toolbar

 > restart;   A:= ;   B:= ;   P :=;   H:=A+t*(B-A);   solve( (P-H)^+ . (B-A), t );   'H'=eval(H, t=`%` );
 (1)
 >
 >

## This produces...

pretty much the same construction, but uses the geometry() package

 > restart;   with(geometry):   with(plots):   _EnvHorizontalName='x':   _EnvVerticalName='y':   R := 3:   ang := [0, (1/3)*Pi, 3*Pi*(1/4)+2/10, 7*Pi*(1/6)+4/10, 8*Pi*(1/5), 13*Pi*(1/7)]:   seq( point( `||`(P,i), [R*cos(ang[i]), R*sin(ang[i])]), i=1..6):   circle(cir, [ point(OO, [0,0]), 3]):   seq( TangentLine( `||`(tang, i), `||`(P, i), cir), i=1..6):   seq(intersection(`||`(Q, i), `||`(tang, i), `||`(tang, irem(i, 6)+1)), i=1..6):   seq(segment(`||`(S, i), `||`(Q, i), `||`(Q, irem(i, 6)+1)), i=1..6):   seq(line(`||`(L, i), [`||`(P, i), `||`(P, irem(i, 6)+1)]), i=1..6):   seq(line(`||`(L, 6+i), [`||`(Q, i), `||`(Q, i+3)]), i=1..3):   seq(intersection(`||`(P, i+6), `||`(L, i), `||`(L, i+3)), i=1..3):   line(L10, [P7,P9]):   display( [ draw( [P1(symbol=solidcircle, symbolsize=8, color=blue),                     P2(symbol=solidcircle, symbolsize=8, color=blue),                     P3(symbol=solidcircle, symbolsize=8, color=blue),                     P4(symbol=solidcircle, symbolsize=8, color=blue),                     P5(symbol=solidcircle, symbolsize=8, color=blue),                     P6(symbol=solidcircle, symbolsize=8, color=blue),                     P7(symbol=solidcircle, symbolsize=8, color=red),                     P8(symbol=solidcircle, symbolsize=8, color=red),                     P9(symbol=solidcircle, symbolsize=8, color=red),                     S1( color=green, thickness=4),                     S2( color=green, thickness=4),                     S3( color=green, thickness=4),                     S4( color=green, thickness=4),                     S5( color=green, thickness=4),                     S6( color=green, thickness=4),                     Q1(symbol=solidcircle, symbolsize=8, color=black),                     Q2(symbol=solidcircle, symbolsize=8, color=black),                     Q3(symbol=solidcircle, symbolsize=8, color=black),                     Q4(symbol=solidcircle, symbolsize=8, color=black),                     Q5(symbol=solidcircle, symbolsize=8, color=black),                     Q6(symbol=solidcircle, symbolsize=8, color=black),                     L1( color=magenta, linestyle=dash),                     L2( color=magenta, linestyle=dash),                     L3( color=magenta, linestyle=dash),                     L4( color=magenta, linestyle=dash),                     L5( color=magenta, linestyle=dash),                     L6( color=magenta, linestyle=dash),                     L7( color=orange),                     L8( color=orange),                     L9( color=orange),                     L10( color=blue, thickness=4),                     cir                   ]                 ),              textplot( [seq( [ coordinates(`||`(P, i))[], convert(`||`(P, i), string)],                              i=1..6                            )                        ],                        'align' = {'above', 'left'}                      ),              textplot( [seq( [ coordinates(`||`(Q, i))[], convert(`||`(Q, i), string)],                              i=1..6                            )                        ],                        'align' = {'above', 'left'}                      ),              textplot( [ [ coordinates( P7)[], "beta"],                          [ coordinates( P8)[], "gamma"],                          [ coordinates( P9)[], "alpha"]                        ],                        'align' = {'above', 'right'}                      )            ],            view=[-6..10,-15..6],            scaling=constrained,            size=[800,800],            axes=none        )
 >
 >

## "Indexed variable names"

fooled me. If you jut want suffixed names where the suffix may (or may not) be an inert subscript then as others have stated you need Maple's concatenation operators - either cat(), or ||.

When using the latter, I generally prefer to do so in prefix form - consider the "toy" examples in the attached

 > seq( `||`(R, i)=i^2, i=1..10);   seq( cat(R, i)=i^2, i=1..10);   seq( `||`(R__, i)=i^2, i=1..10);   seq( cat(R__, i)=i^2, i=1..10);
 (1)
 >

## It may be worth...

checking the "backup" files which Maple produces about every 15minutes (by default).

On a windows machine, these backup files are usually stored in C:/Users/yourUserName/maple/Backup/ where you can browse for likely possibilities, either by file name or creation time. If you find any likely candidates, you can restore from the menus with File->RestoreBackup

## Fairly obviously...

the point T lies on another ellipse withe equation x^2/121 + y^2/81 - 2 = 0, as shown in the attached.

 > restart:   with(plots):   with(geometry):   _EnvHorizontalName := 'x':   _EnvVerticalName := 'y':   a := 11:   b := 9:   ellipse(el, x^2/a^2 + y^2/b^2 - 1):      tg1:=(x*a*cos(t)/a^2 + y*b*sin(t)/b^2)^2 = 1:   tg2:=(x*a*cos(t+Pi/2)/a^2 + y*b*sin(t+Pi/2)/b^2)^2 = 1:   ellipse( e2, simplify(tg1+tg2)):   Equation(e2);   point(F1, coordinates~(foci(el))[1]):   point(F2, coordinates~(foci(el))[2]):   Fig:= proc(t)              global a, b, el, e2, F1, F2;              local t1 := t,                    t2 := t+Pi/2,                    M1, M2, L1, L2, L3, L4,                    tag1, tang2, T, c1;              uses geometry, plots:              point(M1, a*cos(t1), b*sin(t1)):              point(M2, a*cos(t2), b*sin(t2)):              line(L1, [F1, M1]):              line(L2, [F2, M2]):              line(L3, [F1, M2]):              line(L4, [F2, M1]):              line( tang1, x*a*cos(t1)/a^2 + y*b*sin(t1)/b^2 = 1):              line( tang2, x*a*cos(t2)/a^2 + y*b*sin(t2)/b^2 = 1):              intersection(T, tang1, tang2):              circle( c1, [T, distance(T, L4) ] ):              display( [ textplot                         ( [ [ coordinates(F1)[], "F1"],                             [ coordinates(F2)[], "F2"] ,                                                      [ coordinates(M1)[], "M1"],                                                       [ coordinates(M2)[], "M2"],                             [ coordinates(T)[],  "T"]                           ],                           align={"above",'right'}                         ),                         draw                         ( [ c1(color=blue),                             el(color=red),                             e2(color=red, linestyle=dash),                             M1(color=black, symbol=solidcircle, symbolsize=16),                             M2(color=black, symbol=solidcircle, symbolsize=16),                             T(color=black, symbol=solidcircle, symbolsize=16),                                        L1(color=black),                             L2(color=green),                             L3(color=black),                             L4(color=green),                             tang1(color=blue),                             tang2(color=blue),                             F1(color=blue, symbol=solidcircle, symbolsize=16),                                                 F2(color=red, symbol=solidcircle, symbolsize=16)                           ]                         )                      ],                      scaling=constrained,                      axes=none                    );             end proc:   nFig := 60:   Figs := seq(Fig(2*Pi*i/nFig), i = 0 .. nFig):   display(Figs, insequence = true);
 >

## This time...

you do not upload the relevant worksheet, instead you cut and paste a few random commands. Am I supposed to be able to work out what this pile of garbage is expected to do?

If it is anything other than a simple animation of the construction which I prtoduced earlier ell.mw  here - then you are out of luck because the attached is based on the former

 > restart:   with(plots):   with(geometry):   _EnvHorizontalName := 'x':   _EnvVerticalName := 'y':   a := 11:   b := 9:   ellipse(el, x^2/a^2 + y^2/b^2 - 1):   point(F1, coordinates~(foci(el))[1]):   point(F2, coordinates~(foci(el))[2]):   Fig:= proc(t)              global a, b, el, F1, F2;              local t1 := t,                    t2 := t+Pi/2,                    M1, M2, L1, L2, L3, L4,                    tag1, tang2, T, c1;              uses geometry, plots:              point(M1, a*cos(t1), b*sin(t1)):              point(M2, a*cos(t2), b*sin(t2)):              line(L1, [F1, M1]):              line(L2, [F2, M2]):              line(L3, [F1, M2]):              line(L4, [F2, M1]):              line( tang1, x*a*cos(t1)/a^2 + y*b*sin(t1)/b^2 = 1):              line( tang2, x*a*cos(t2)/a^2 + y*b*sin(t2)/b^2 = 1):              intersection(T, tang1, tang2):              circle( c1, [T, distance(T, L4) ] ):              display( [ textplot                         ( [ [ coordinates(F1)[], "F1"],                             [ coordinates(F2)[], "F2"] ,                                                      [ coordinates(M1)[], "M1"],                                                       [ coordinates(M2)[], "M2"],                             [ coordinates(T)[],  "T"]                           ],                           align={"above",'right'}                         ),                         draw                         ( [ c1(color=blue),                             el(color=red),                             M1(color=black, symbol=solidcircle, symbolsize=16),                             M2(color=black, symbol=solidcircle, symbolsize=16),                             T(color=black, symbol=solidcircle, symbolsize=16),                                        L1(color=black),                             L2(color=green),                             L3(color=black),                             L4(color=green),                             tang1(color=blue),                             tang2(color=blue),                             F1(color=blue, symbol=solidcircle, symbolsize=16),                                                 F2(color=red, symbol=solidcircle, symbolsize=16)                           ]                         )                      ],                      scaling=constrained,                      axes=none                    );             end proc:   nFig := 60:   Figs := seq(Fig(2*Pi*i/nFig), i = 0 .. nFig):   display(Figs, insequence = true);
 >