# Singular

#### D.2.4.14 locusto

Procedure from library `grobcov.lib` (see grobcov_lib).

Usage:
locusto(L);
The argument must be the output of locus or locusdg or envelop or envelopdg.
It transforms the output into a string in standard form readable in many languages (Geogebra).

Return:
The locus in string standard form

Note:
It can only be called after computing either
- locus(grobcov(F)) -> locusto( locus(grobcov(F)) ) - locusdg(locus(grobcov(F))) -> locusto( locusdg(locus(grobcov(F))) ) - envelop(F,C) -> locusto( envelop(F,C) ) -envelopdg(envelop(F,C)) -> locusto( envelopdg(envelop(F,C)) )

Example:
 ```LIB "grobcov.lib"; ring R=(0,x,y),(x1,y1),dp; short=0; ideal S=x1^2+y1^2-4,(y-2)*x1-x*y1+2*x,(x-x1)^2+(y-y1)^2-1; locusto(locus(grobcov(S))); ==> [[[(x^4+2*x^2*y^2-9*x^2+y^4-9*y^2+4*y+12)],[[1]]],[Normal],1]],[[(x^2+y^2\ -4*y+3)],[[1]]],[[Special],[y1-2,x1]],1]]] locusto(locusdg(locus(grobcov(S)))); ==> [[[(x^4+2*x^2*y^2-9*x^2+y^4-9*y^2+4*y+12)],[[1]]],[Relevant],1]]] kill R; "********************************************"; ==> ******************************************** // 1. Take a fixed line l: x1-y1=0 and consider // the family F of a lines parallel to l passing through the mover point M // 2. Consider a circle x1^2+x2^2-25, and a mover point M(x1,x2) on it. // 3. Compute the envelop of the family of lines. ring R=(0,x,y),(x1,y1),lp; poly F=(y-y1)-(x-x1); ideal C=x1^2+y1^2-25; short=0; // Curves Family F= F; ==> x1-y1+(-x+y) // Conditions C= C; ==> C[1]=x1^2+y1^2-25 locusto(envelop(F,C)); ==> [[[(x^2-2*x*y+y^2-50)],[[1]]],[[Special],[2*y1^2-25,x1+y1],[1]],1]]] locusto(envelopdg(envelop(F,C))); ==> [[[(x^2-2*x*y+y^2-50)],[[1]]],[Relevant],1]]] kill R; "********************************************"; ==> ******************************************** // Steiner Deltoid // 1. Consider the circle x1^2+y1^2-1=0, and a mover point M(x1,y1) on it. // 2. Consider the triangle A(0,1), B(-1,0), C(1,0). // 3. Consider lines passing through M perpendicular to two sides of ABC triangle. // 4. Obtain the envelop of the lines above. ring R=(0,x,y),(x1,y1,x2,y2),lp; ideal C=(x1)^2+(y1)^2-1, x2+y2-1, x2-y2-x1+y1; matrix M[3][3]=x,y,1,x2,y2,1,x1,0,1; poly F=det(M); short=0; // Curves Family F= F; ==> -x1*y2+(y)*x1+(-y)*x2+(x)*y2 // Conditions C= C; ==> C[1]=x1^2+y1^2-1 ==> C[2]=x2+y2-1 ==> C[3]=-x1+y1+x2-y2 locusto(envelop(F,C)); ==> [[[(x^4+2*x^2*y^2+10*x^2*y-x^2+y^4-6*y^3+12*y^2-8*y)],[[1]]],[Normal],1]]\ ,[[(x+y-1)],[[1]]],[[Special],[y2,x2-1,y1,x1-1],[0]],1]]] locusto(envelopdg(envelop(F,C))); ==> [[[(x^4+2*x^2*y^2+10*x^2*y-x^2+y^4-6*y^3+12*y^2-8*y)],[[1]]],[Relevant],1\ ]]] ```