id='cleanNOG()' algoritmo='sí' expresión='1' local='k' inicio='k=0' hacer='OBGRA[NOG,k]=0;k=k+1' mientras='k<OBGRA.filas' tipo='función' 
id='newP(name,subix,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=point;OBGRA[NOG,_name]=name;OBGRA[NOG,_subix]=subix;OBGRA[NOG,_x]=0;OBGRA[NOG,_y]=0;OBGRA[NOG,_z]=0;OBGRA[NOG,_w]=1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_invisible]=0;OBGRA[NOG,_invalid]=0;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;&squot;;OBGRA[NOG,_constr]=&squot;P_&squot;+NOG+&squot;:=newP(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=recta;;NOG=NOG+1;' tipo='función' info='newP, crea puntos' 
id='newL()' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=segment;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_isLine]=1;OBGRA[NOG,_cnstool_]=recta;OBGRA[NOG,_is2P]=1;NOG=NOG+1' tipo='función' 
id='newLine2D(n0,n1,c,w,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=segment;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_1]=n0;OBGRA[NOG,_2]=n1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_invisible]=0;OBGRA[NOG,_invalid]=0;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_isLine]=1;OBGRA[NOG,_cnstool_]=recta;OBGRA[NOG,_is2P]=1;OBGRA[NOG,_func]=&squot;calcLine(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;L_&squot;+NOG+&squot;:=newLine2D(P_&squot;+n0+&squot;,P_&squot;+n1+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;NOG=NOG+1' tipo='función' 
id='newIntersection(mx,my,Obj1,Obj2,s)' algoritmo='sí' expresión='n' local='n,isL1,isL2,isC1,isC2,isEq1,isEq2,isT1,isT2,laEne' inicio='n=-1' hacer='isL1=(OBGRA[Obj1,_type]==segment);isL2=(OBGRA[Obj2,_type]==segment);;n=((n<0)&isL1&isL2&coplanarLL(Obj1,Obj2))?newMeetLL2D(&squot;&squot;,&squot;&squot;,Obj1,Obj2,s):n;;isC1=(OBGRA[Obj1,_type]==circle);isC2=(OBGRA[Obj2,_type]==circle);n=(show_E2&(n<0)&isC1&isC2&(Obj1<Obj2))?newMeetCC2D(mx,my,Obj1,Obj2,s):n;n=(show_E2&(n<0)&isC1&isC2&(Obj2<Obj1))?newMeetCC2D(mx,my,Obj2,Obj1,s):n;;isEq1=isC1|(OBGRA[Obj1,_type]==conic5pts)|((OBGRA[Obj1,_type]==curve)&(OBGRA[Obj1,_Eq_]!=&squot;&squot;))|(OBGRA[Obj1,_type]==cubic9pts);isEq2=isC2|(OBGRA[Obj2,_type]==conic5pts)|((OBGRA[Obj2,_type]==curve)&(OBGRA[Obj2,_Eq_]!=&squot;&squot;))|(OBGRA[Obj2,_type]==cubic9pts);;n=((n<0)&isL1&isEq2)?newMeetLEq(mx,my,Obj1,Obj2,&squot;&squot;,-1,s):n;n=((n<0)&isEq1&isL2)?newMeetLEq(mx,my,Obj2,Obj1,&squot;&squot;,-1,s):n;n=(show_E2&(n<0)&isEq1&isEq2)?newMeetEqEq(mx,my,Obj1,Obj2):n;;isT1=((OBGRA[Obj1,_type]==triangle)|(OBGRA[Obj1,_type]==plane));isT2=((OBGRA[Obj2,_type]==triangle)|(OBGRA[Obj2,_type]==plane));;n=((n<0)&isT2&isL1)?newMeetLT(&squot;&squot;,&squot;&squot;,Obj1,Obj2,s):n;n=((n<0)&isT1&isL2)?newMeetLT(&squot;&squot;,&squot;&squot;,Obj2,Obj1,s):n;n=((n<0)&isT1&isT2)?newMeetTT(&squot;&squot;,&squot;&squot;,Obj1,Obj2,s):n;n=((n<0)&isC1&isT2)?newMeetCT(Obj1,Obj2,s):n;n=((n<0)&isT1&isC2)?newMeetCT(Obj2,Obj1,s):n;n=(show_E3&isC1&isC2)?newMeetCC(Obj1,Obj2,s):n;OBGRA[n,_cnstool_]=intersection;' tipo='función' 
id='newMeetLL2D(name,subix,E,F,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=E;OBGRA[p,_p2]=F;OBGRA[p,_func]=&squot;calcMeetLL(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newMeetLL2D(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,L_&squot;+E+&squot;,L_&squot;+F+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection' tipo='función' 
id='newPerpLL(L1,L2)' algoritmo='sí' expresión='NOG-1' local='p' hacer='cleanNOG();OBGRA[NOG,_type]=segment;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_isLine]=1;OBGRA[NOG,_p1]=L1;OBGRA[NOG,_p2]=L2;OBGRA[NOG,_func]=&squot;calcPerpLL(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;L_&squot;+NOG+&squot;:=newPerpLL(L_&squot;+L1+&squot;,L_&squot;+L2+&squot;)&squot;;OBGRA[NOG,_cnstool_]=perpendicular;NOG=NOG+1' tipo='función' 
id='newS(n0,n1,c,w,s)' algoritmo='sí' expresión='NOG-1' local='p1,p2' hacer='cleanNOG() ;OBGRA[NOG,_type]=segment;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_1]=n0;OBGRA[NOG,_2]=n1;OBGRA[NOG,_vsL]=-1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_isLine]=0;OBGRA[NOG,_cnstool_]=segmento;OBGRA[NOG,_is2P]=1;OBGRA[NOG,_func]=&squot;calcLine(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;L_&squot;+NOG+&squot;:=newS(P_&squot;+n0+&squot;,P_&squot;+n1+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;NOG=NOG+1;' tipo='función' 
id='newSvsL(n0,n1,L,c,w,s)' algoritmo='sí' expresión='p' local='p,p1,p2' hacer='p=newS(n0,n1,c,w,s);OBGRA[p,_vsL]=L;prefix=(OBGRA[L,_type]==segment)?&squot;L&squot;:&squot;T&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newSvsL(P_&squot;+n0+&squot;,P_&squot;+n1+&squot;,&squot;+prefix+&squot;_&squot;+L+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;' tipo='función' 
id='newCircle2D(c,rstr,col,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p2]=-1;OBGRA[NOG,_centro]=c;OBGRA[NOG,_radio]=rstr;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcCircle2D(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newCircle2D(P_&squot;+c+&squot;,OBGRA[p,_r],&squot;+COL[color,_colname]+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=circuloRC;NOG=NOG+1;' tipo='función' 
id='newCircleCP2D(p1,p2,c,w,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_centro]=p1;OBGRA[NOG,_p2]=p2;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcCircleCP2D(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newCircleCP2D(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=circuloRC;NOG=NOG+1;' tipo='función' 
id='newCircleSC2D(p1,p2,c,w,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_centro]=p2;OBGRA[NOG,_p2]=p1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcCircleSC2D(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newCircleSC2D(L_&squot;+p1+&squot;,P_&squot;+p2+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=circuloRC;NOG=NOG+1' tipo='función' 
id='newMeetLEq(mx,my,L,Eq,side,P,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newP(&squot;&squot;,&squot;&squot;,&squot;&squot;);set_Point(p,mx,my,0);OBGRA[p,_p1]=L;OBGRA[p,_p2]=Eq;OBGRA[p,_side]=side;OBGRA[p,_otherP]=P;calcMeetLEq(p);OBGRA[p,_func]=&squot;calcMeetLEq(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newMeetLEq(\u0027&squot;+OBGRA[p,_name]+&squot;\u0027,\u0027&squot;+OBGRA[p,_subix]+&squot;\u0027,L_&squot;+L+&squot;,C_&squot;+Eq+&squot;,&squot;+OBGRA[p,_side]+&squot;,&squot;+OBGRA[p,_otherP]+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection' tipo='función' 
id='newMeetLC2D(mx,my,L,C,s)' algoritmo='no' expresión='newMeetLEq(mx,my,L,C,&squot;&squot;,-1,&squot;&squot;)' tipo='función' 
id='newMeetEqEq(mx,my,C1,C2)' algoritmo='sí' expresión='p' local='p' hacer='p=newP(&squot;&squot;,&squot;&squot;,&squot;&squot;);set_Point(p,mx,my,0);OBGRA[p,_p1]=C1;OBGRA[p,_p2]=C2;OBGRA[p,_func]=&squot;calcMeetEqEq(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newMeetEqEq(&squot;+X2(p)+&squot;,&squot;+Y2(p)+&squot;,C_&squot;+C1+&squot;,C_&squot;+C2+&squot;)&squot;;OBGRA[p,_cnstool_]=intersection' tipo='función' 
id='newHarmonicReflection(Ob1,Ob2,Ob3,s)' algoritmo='sí' expresión='NOG-1' local='prefix,change' hacer='cleanNOG();OBGRA[NOG,_type]=(OBGRA[Ob1,_type]==segment)?segment:point;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_p1]=Ob1;change=(OBGRA[Ob2,_type]!=point)&(OBGRA[Ob2,_type]!=control);OBGRA[NOG,_p2]=(change)?Ob3:Ob2;OBGRA[NOG,_p3]=(change)?Ob2:Ob3;OBGRA[NOG,_func]=(OBGRA[NOG,_type]==point)?&squot;calcPointReflexion(&squot;+NOG+&squot;)&squot;:OBGRA[NOG,_func];OBGRA[NOG,_func]=(OBGRA[NOG,_type]==segment)?&squot;calcLineReflexion(&squot;+NOG+&squot;)&squot;:OBGRA[NOG,_func];OBGRA[NOG,_constr]=&squot;_&squot;+NOG+&squot;:=newHarmonicReflection(&squot;+OBGRA[NOG,_p1]+&squot;,&squot;+OBGRA[NOG,_p2]+&squot;,&squot;+OBGRA[NOG,_p3]+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_constr]=(OBGRA[NOG,_type]==segment)?&squot;L&squot;+OBGRA[NOG,_constr]:&squot;P&squot;+OBGRA[NOG,_constr];OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newReflection(LoT,P)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=point;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_p1]=LoT;OBGRA[NOG,_p2]=P;OBGRA[NOG,_func]=&squot;calcReflection(&squot;+NOG+&squot;)&squot;;prefix=(OBGRA[LoT,_type]==segment)?&squot;L_&squot;:&squot;T_&squot;;OBGRA[NOG,_constr]=&squot;P_&squot;+NOG+&squot;:=newReflection(&squot;+prefix+LoT+&squot;,P_&squot;+P+&squot;)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newCnstrGCtrl3D(id,subix,x,y,z,constriction,c,w,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=control;OBGRA[NOG,_name]=id;OBGRA[NOG,_subix]=subix;set_Point(NOG,x,y,z);OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_prprtn]=&squot;&squot;;OBGRA[NOG,_dirx]=&squot;&squot;;OBGRA[NOG,_diry]=&squot;&squot;;OBGRA[NOG,_dirz]=&squot;&squot;;OBGRA[NOG,_cnstr]=constriction;OBGRA[NOG,_func]=(constriction!=&squot;&squot;)?&squot;calcCnstrGCtrl(&squot;+NOG+&squot;)&squot;:&squot;calcFreeCtrl(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_invalid]=0;OBGRA[NOG,_invisible]=0;OBGRA[NOG,_cnstool_]=recta;NOG=NOG+1;' tipo='función' 
id='newCnstrGCtrl(id,subix,x,y,constriction,c,w,s)' algoritmo='no' expresión='newCnstrGCtrl3D(id,subix,x,y,0,constriction,c,w,s)' tipo='función' 
id='newGCtrl(id,subix,x,y,c,w,s)' algoritmo='no' expresión='newCnstrGCtrl3D(id,subix,x,y,0,&squot;&squot;,c,w,s)' hacer=';;' tipo='función' 
id='newInversePoint(name,subix,P,CoS,s)' algoritmo='sí' expresión='NOG-1' local='prefix' hacer='cleanNOG();OBGRA[NOG,_type]=point;OBGRA[NOG,_name]=name;OBGRA[NOG,_subix]=subix;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_p1]=P;OBGRA[NOG,_p2]=CoS;OBGRA[NOG,_func]=&squot;calcInversePoint(&squot;+NOG+&squot;)&squot;;prefix=(OBGRA[CoS,_type]==circle)?&squot;C&squot;:&squot;L&squot;;OBGRA[NOG,_constr]=&squot;P_&squot;+NOG+&squot;:=newInversePoint(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,P_&squot;+P+&squot;,&squot;+prefix+&squot;_&squot;+CoS+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newAuxCtrl(mx,my,cnstrctn)' algoritmo='sí' expresión='n' local='n,Obj1,Obj2,Eq1,pxthr0,paralelas' inicio='Obj1=-1;Obj2=-1' hacer='pxthr0=pxthr;pxthr=pxthr0/2;selLorC(mx,my);pxthr=pxthr0;Obj1=(_distLC0_<=_distLC1_)?_selLoC0_:Obj1;Obj1=(_distLC0_>_distLC1_)?_selLoC1_:Obj1;Obj2=(_distLC0_<=_distLC1_)?_selLoC1_:Obj2;Obj2=(_distLC0_>_distLC1_)?_selLoC0_:Obj2;Obj1=((Obj1<0)&show_E2)?selEq(mx,my):Obj1;Obj2=((Obj2<0)&show_E2)?selEq(mx,my):Obj2;;paralelas=(OBGRA[Obj1,_type]==segment)&(OBGRA[Obj2,_type]==segment)&almostParalell(Obj1,Obj2);;n=((Obj1>=0)&(Obj2>=0)&(Obj1!=Obj2)&(!paralelas))?newIntersection(mx,my,Obj1,Obj2,desdeAquí):-1;Obj1=((n<0)&show_E3)?selE3OB(mx,my):Obj1;n=((n<0)&(status!=intersection)&(Obj1>=0)&((Obj2<0)|(Obj2==Obj1)|paralelas))?newCnstrGCtrl(&squot;&squot;,&squot;&squot;,mx,my,Obj1,color,ancho,desdeAquí):n;n=((n<0)&_allowFreePoints_)?newCnstrGCtrl(&squot;&squot;,&squot;&squot;,mx,my,&squot;&squot;,color,ancho,desdeAquí):n;(n>=0)?_Eval_(OBGRA[n,_func]):&squot;&squot;;' tipo='función' 
id='newFirstMeetCC2D(name,subix,C1,C2,s)' algoritmo='sí' expresión='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=C1;OBGRA[p,_p2]=C2;OBGRA[p,_p9]=0 //para el signo de q;OBGRA[p,_func]=&squot;calcFirstMeetCC2D(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newFirstMeetCC2D(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,C_&squot;+C1+&squot;,C_&squot;+C2+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection;' tipo='función' 
id='newSecondMeetCC2D(name,subix,C1,C2,s)' algoritmo='sí' expresión='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=C1;OBGRA[p,_p2]=C2;OBGRA[p,_p9]=0 //para el signo de q;OBGRA[p,_func]=&squot;calcSecondMeetCC2D(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newSecondMeetCC2D(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,C_&squot;+C1+&squot;,C_&squot;+C2+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection;' tipo='función' 
id='newOtherMeetCC2D(name,subix,C1,C2,pnt,s)' algoritmo='sí' expresión='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=C1;OBGRA[p,_p2]=C2;OBGRA[p,_p3]=pnt;OBGRA[p,_func]=&squot;calcOtherMeetCC2D(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newOtherMeetCC2D(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,C_&squot;+C1+&squot;,C_&squot;+C2+&squot;,P_&squot;+pnt+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection;;' tipo='función' 
id='findOtherMeet(xm,ym,xp,yp)' algoritmo='sí' expresión='p' local='p,n' inicio='p=-1;n=0' hacer='p=(((OBGRA[n,_type]==point)|(OBGRA[n,_type]==control))&((sqrt((xm-X2(n))^2+(ym-Y2(n))^2)<=0.001)|(sqrt((xp-X2(n))^2+(yp-Y2(n))^2)<=0.001)))?n:p;n=n+1' mientras='(p<0)&(n<NOG)' tipo='función' 
id='newMeetCC2D(mx,my,C1,C2,s)' algoritmo='sí' expresión='p' local='r1,r2,O1,O2,d,q,ux,uy,u,v2,v,vx,vy,xm,ym,xp,yp,dm,dp,p' hacer='r1=OBGRA[C1,_r];O1=OBGRA[C1,_centro];r2=OBGRA[C2,_r];O2=OBGRA[C2,_centro];d=dist2D(O1,O2);q=(d^2+r1^2-r2^2)/(2*d^2);ux=q*(X2(O2)-X2(O1));uy=q*(Y2(O2)-Y2(O1));u=sqrt(ux^2+uy^2);v2=r1^2-ux^2-uy^2;v=sqrt(v2);vx=-v*uy/u;vy= v*ux/u;xm=X2(O1)+ux-vx;ym=Y2(O1)+uy-vy;xp=X2(O1)+ux+vx;yp=Y2(O1)+uy+vy;dm=sqrt((xm-mx)^2+(ym-my)^2);dp=sqrt((xp-mx)^2+(yp-my)^2);p=findOtherMeet(xm,ym,xp,yp);p=(p>=0)?newOtherMeetCC2D(&squot;&squot;,&squot;&squot;,C1,C2,p,show):p;p=((p<0)&(v2>=0)&(dm<=dp))?newFirstMeetCC2D(&squot;&squot;,&squot;&squot;,C1,C2,show):p;p=((p<0)&(v2>=0)&(dm>dp))?newSecondMeetCC2D(&squot;&squot;,&squot;&squot;,C1,C2,show):p;;' tipo='función' 
id='newMidPoint(name,subix,A,B,s)' algoritmo='sí' expresión='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=A;OBGRA[p,_p2]=B;OBGRA[p,_func]=&squot;calcMidPoint(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newMidPoint(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,P_&squot;+A+&squot;,P_&squot;+B+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=puntoMedio;' tipo='función' 
id='newT(A,B,C,c,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=triangle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=A;OBGRA[NOG,_p2]=B;OBGRA[NOG,_p3]=C;OBGRA[NOG,_vsP]=-1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcT(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;T_&squot;+NOG+&squot;:=newT(P_&squot;+A+&squot;,P_&squot;+B+&squot;,P_&squot;+C+&squot;,&squot;+COL[color,_colname]+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=plano;NOG=NOG+1;' tipo='función' info='newT, crea triángulos' 
id='newTvsP(A,B,C,P,c,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=triangle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=A;OBGRA[NOG,_p2]=B;OBGRA[NOG,_p3]=C;OBGRA[NOG,_vsP]=P;OBGRA[NOG,_p5]=num_polys;num_polys=num_polys+2;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcTvsP(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;T_&squot;+NOG+&squot;:=newTvsP(P_&squot;+A+&squot;,P_&squot;+B+&squot;,P_&squot;+C+&squot;,T_&squot;+P+&squot;,&squot;+COL[color,_colname]+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=plano;NOG=NOG+1;' tipo='función' info='newT, crea triángulos' 
id='newTvsL(A,B,C,L,c,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=triangle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=A;OBGRA[NOG,_p2]=B;OBGRA[NOG,_p3]=C;OBGRA[NOG,_p4]=L;OBGRA[NOG,_p5]=num_polys;num_polys=num_polys+2;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcTvsL(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;T_&squot;+NOG+&squot;:=newTvsL(P_&squot;+A+&squot;,P_&squot;+B+&squot;,P_&squot;+C+&squot;,L_&squot;+L+&squot;,&squot;+COL[color,_colname]+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=plano;NOG=NOG+1;' tipo='función' info='newT, crea triángulos' 
id='newMeetTT(name,subix,T1,T2,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=segment;OBGRA[NOG,_name]=name;OBGRA[NOG,_subix]=subix;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_isLine]=1;OBGRA[NOG,_p1]=T1;OBGRA[NOG,_p2]=T2;OBGRA[NOG,_is2P]=0;OBGRA[NOG,_func]=&squot;calcMeetTT(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;L_&squot;+NOG+&squot;:=newMeetTT(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,T_&squot;+T1+&squot;,T_&squot;+T2+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=intersection;NOG=NOG+1;' tipo='función' 
id='newCurve(p1,p2,s)' algoritmo='sí' expresión='NOG-1' local='prefix' inicio='NOGP=NOG;countCurvasYReglados()' hacer='cleanNOG();OBGRA[NOG,_type]=curve;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=p1;OBGRA[NOG,_p2]=p2;OBGRA[NOG,_es_reglado_]=(OBGRA[p1,_type]==segment);OBGRA[NOG,_p3]=(OBGRA[NOG,_es_reglado_])?num_reglados:num_curvas;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcCurve(&squot;+NOG+&squot;)&squot;;prefix=(OBGRA[NOG,_es_reglado_])?&squot;L&squot;:&squot;P&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newCurve(&squot;+prefix+&squot;_&squot;+p1+&squot;,P_&squot;+p2+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=curva;NOG=NOG+1;' tipo='función' 
id='newMeetCT(C,T)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=circ3D;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=C;OBGRA[NOG,_p2]=T;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcMeetCT(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newMeetCT(C_&squot;+C+&squot;,T_&squot;+T+&squot;)&squot;;OBGRA[NOG,_cnstool_]=intersection;NOG=NOG+1;' tipo='función' 
id='newMeetCC(C1,C2)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=circ3D;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=C1;OBGRA[NOG,_p2]=C2;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcMeetCC(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newMeetCC(C_&squot;+C1+&squot;,C_&squot;+C2+&squot;)&squot;;OBGRA[NOG,_cnstool_]=intersection;NOG=NOG+1;' tipo='función' 
id='newMeetLT(name,subix,L,T,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newP(name,subix,s);OBGRA[p,_p1]=L;OBGRA[p,_p2]=T;OBGRA[p,_col]=color;OBGRA[p,_wdth]=ancho;OBGRA[p,_func]=&squot;calcMeetLT(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newMeetLT(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,L_&squot;+L+&squot;,T_&squot;+T+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=intersection;' tipo='función' 
id='newFootLP(L,A)' algoritmo='sí' expresión='p' hacer='p=newP(&squot;&squot;,&squot;&squot;,&squot;&squot;);OBGRA[p,_p1]=L;OBGRA[p,_p2]=A;OBGRA[p,_func]=&squot;calcFoot(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newFootLP(L_&squot;+L+&squot;,P_&squot;+A+&squot;)&squot;;OBGRA[p,_cnstool_]=pie;' tipo='función' 
id='newFootTP(T,A)' algoritmo='sí' expresión='p' hacer='p=newP(&squot;&squot;,&squot;&squot;,&squot;&squot;);OBGRA[p,_p1]=T;OBGRA[p,_p2]=A;OBGRA[p,_func]=&squot;calcFoot(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;P_&squot;+p+&squot;:=newFootTP(T_&squot;+T+&squot;,P_&squot;+A+&squot;)&squot;;OBGRA[p,_cnstool_]=pie;' tipo='función' 
id='newParal2D(ele,pe,c,w,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newLine2D(-1,-1,c,w,s);OBGRA[p,_p1]=ele;OBGRA[p,_p2]=pe;OBGRA[p,_is2P]=0;OBGRA[p,_func]=&squot;calcParal(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newParal2D(L_&squot;+ele+&squot;,P_&squot;+pe+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=paralela;' tipo='función' 
id='newPerp2D(ele,pe,c,w,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newLine2D(-1,-1,c,w,s);OBGRA[p,_p1]=ele;OBGRA[p,_p2]=pe;OBGRA[p,_is2P]=0;OBGRA[p,_func]=&squot;calcPerp2D(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newPerp2D(L_&squot;+ele+&squot;,P_&squot;+pe+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=perpendicular;' tipo='función' 
id='newPerp3D(LoT,pe,c,w,s)' algoritmo='sí' expresión='p' local='p,prefix' hacer='p=newLine2D(-1,-1,c,w,s);OBGRA[p,_p1]=LoT;OBGRA[p,_p2]=pe;OBGRA[p,_is2P]=0;OBGRA[p,_func]=(OBGRA[LoT,_type]==segment)?&squot;calcPerp3D_toL(&squot;+p+&squot;)&squot;:&squot;calcPerp3D_toT(&squot;+p+&squot;)&squot;;prefix=(OBGRA[LoT,_type]==segment)?&squot;L_&squot;:&squot;T_&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newPerp3D(&squot;+prefix+LoT+&squot;,P_&squot;+pe+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=perpendicular;' tipo='función' 
id='newMediatrix2D(p1,p2,c,w,s)' algoritmo='sí' expresión='ele' local='ele' hacer='ele=newLine2D(p1,p2,c,w,s);OBGRA[ele,_is2P]=0;OBGRA[ele,_func]=&squot;calcMediatrix2D(&squot;+ele+&squot;)&squot;;OBGRA[ele,_constr]=&squot;L_&squot;+ele+&squot;:=newMediatrix2D(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[ele,_cnstool_]=mediatriz;' tipo='función' 
id='newAng(name,subix,p1,p2,p3,c,s)' algoritmo='sí' expresión='NOG-1' hacer='p=newP(name,subix,show);OBGRA[p,_p1]=p1;OBGRA[p,_p2]=p2;OBGRA[p,_p3]=p3;OBGRA[p,_type]=angle;OBGRA[p,_func]=&squot;calcAng3P(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;A_&squot;+p+&squot;:=newAng(\u0027&squot;+name+&squot;\u0027,\u0027&squot;+subix+&squot;\u0027,P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,P_&squot;+p3+&squot;,&squot;+COL[color,_colname]+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=angulo' tipo='función' 
id='calcAngleWhich()' algoritmo='sí' expresión='which' local='which,x0,y0,z0,u1x,u1y,u1z,u2x,u2y,u2z,U1x,U1y,U2x,U2y,dot1,dot2' hacer='meetLL(l1,l2);x0=_PX_/_PW_;y0=_PY_/_PW_;z0=_PZ_/_PW_;u1x=OBGRA[l1,_L_ux];u1y=OBGRA[l1,_L_uy];u1z=OBGRA[l1,_L_uz];u2x=OBGRA[l2,_L_ux];u2y=OBGRA[l2,_L_uy];u2z=OBGRA[l2,_L_uz];;X0=(show_E3)?X32(x0,y0,z0):x0;Y0=(show_E3)?Y32(x0,y0,z0):y0;U1x=(show_E3)?X32(u1x,u1y,u1z):u1x;U1y=(show_E3)?Y32(u1x,u1y,u1z):u1y;U2x=(show_E3)?X32(u2x,u2y,u2z):u2x;U2y=(show_E3)?Y32(u2x,u2y,u2z):u2y;;dot1=(U1x*(X2(E2.MD)-X0)+U1y*(Y2(E2.MD)-Y0));dot2=(U2x*(mx-X0)+U2y*(my-Y0));;which=((dot1>=0)&(dot2>=0))?0:which;which=((dot1< 0)&(dot2>=0))?1:which;which=((dot1< 0)&(dot2< 0))?2:which;which=((dot1>=0)&(dot2< 0))?3:which;' tipo='función' 
id='newAngle(l1,l2,which)' algoritmo='sí' expresión='p' local='p,calcIt' hacer='p=newP(&squot;&squot;,&squot;&squot;,&squot;&squot;);OBGRA[p,_p1]=l1;OBGRA[p,_p2]=l2;OBGRA[p,_type]=angle;which=(which==&squot;&squot;)?calcAngleWhich():which;OBGRA[p,_which]=which;OBGRA[p,_func]=&squot;calcAngLL(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;A_&squot;+p+&squot;:=newAngle(L_&squot;+l1+&squot;,L_&squot;+l2+&squot;,&squot;+which+&squot;)&squot;;OBGRA[p,_cnstool_]=angulo;' tipo='función' 
id='newBisector2D(p1,p2,p3,c,w,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newLine2D(-1,-1,c,w,s);OBGRA[p,_p1]=p1;OBGRA[p,_p2]=p2;OBGRA[p,_p3]=p3;OBGRA[p,_is2P]=0;OBGRA[p,_func]=&squot;calcBisector2D(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newBisector2D(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,P_&squot;+p3+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=bisectriz;' tipo='función' 
id='newBisector(l1,l2,which)' algoritmo='sí' expresión='p' local='p,calcIt,cross' hacer='p=newLine2D(-1,-1,color,ancho,&squot;&squot;);OBGRA[p,_p1]=l1;OBGRA[p,_p2]=l2;OBGRA[p,_is2P]=0;OBGRA[p,_func]=&squot;calcBisector(&squot;+p+&squot;)&squot;;which=(which==&squot;&squot;)?1-2*(calcAngleWhich()%2):which;OBGRA[p,_which]=which;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newBisector(L_&squot;+l1+&squot;,L_&squot;+l2+&squot;,&squot;+which+&squot;)&squot;;OBGRA[p,_cnstool_]=bisectriz;' tipo='función' 
id='newInverseCircle(O,C,c,w,s)' algoritmo='sí' expresión='NOG-1' local='c' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_radio]=&squot;1&squot;;OBGRA[_buffer_,_type]=point;OBGRA[_buffer_,_show]=nunca;OBGRA[NOG,_centro]=_buffer_;_buffer_=_buffer_+1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_p1]=O;OBGRA[NOG,_p2]=C;OBGRA[NOG,_func]=&squot;calcInverseCircle(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newInverseCircle(C_&squot;+O+&squot;,C_&squot;+C+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newInverseLine(L,C,c,a,s)' algoritmo='sí' expresión='NOG' local='c' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_radio]=&squot;1&squot;;OBGRA[_buffer_,_type]=point;OBGRA[_buffer_,_show]=nunca;OBGRA[NOG,_centro]=_buffer_;_buffer_=_buffer_+1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_p1]=C;OBGRA[NOG,_p2]=L;OBGRA[NOG,_func]=&squot;calcInverseLine(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newInverseLine(L_&squot;+L+&squot;,C_&squot;+C+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newInversePlane(T,C,c,a,s)' algoritmo='sí' expresión='NOG' local='c' hacer='cleanNOG();OBGRA[NOG,_type]=circle;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_radio]=&squot;1&squot;;OBGRA[_buffer_,_type]=point;OBGRA[_buffer_,_show]=nunca;OBGRA[NOG,_centro]=_buffer_;_buffer_=_buffer_+1;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_is2D]=1;OBGRA[NOG,_p1]=C;OBGRA[NOG,_p2]=T;OBGRA[NOG,_func]=&squot;calcInversePlane(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newInversePlane(T_&squot;+T+&squot;,C_&squot;+C+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1' tipo='función' 
id='newRadicalAxis(C1,C2,c,w,s)' algoritmo='sí' expresión='p' local='p' hacer='p=newLine2D(-1,-1,c,w,s);OBGRA[p,_p1]=C1;OBGRA[p,_p2]=C2;OBGRA[p,_is2P]=0;OBGRA[p,_func]=&squot;calcRadicalAxis(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;L_&squot;+p+&squot;:=newRadicalAxis(C_&squot;+C1+&squot;,C_&squot;+C2+&squot;,&squot;+COL[color,_colname]+&squot;,&squot;+ancho+&squot;,\u0027\u0027)&squot;;OBGRA[p,_cnstool_]=eje_radical;' tipo='función' 
id='newConic5Pts(p1,p2,p3,p4,p5,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG() ;OBGRA[NOG,_type]=conic5pts;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=p1;OBGRA[NOG,_p2]=p2;OBGRA[NOG,_p3]=p3;OBGRA[NOG,_p4]=p4;OBGRA[NOG,_p5]=p5;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcConic5Pts(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newConic5Pts(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,P_&squot;+p3+&squot;,P_&squot;+p4+&squot;,P_&squot;+p5+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=conica5;NOG=NOG+1;' tipo='función' 
id='newCubic9Pts(p1,p2,p3,p4,p5,p6,p7,p8,p9,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=cubic9pts;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_p1]=p1;OBGRA[NOG,_p2]=p2;OBGRA[NOG,_p3]=p3;OBGRA[NOG,_p4]=p4;OBGRA[NOG,_p5]=p5;OBGRA[NOG,_p6]=p6;OBGRA[NOG,_p7]=p7;OBGRA[NOG,_p8]=p8;OBGRA[NOG,_p9]=p9;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_func]=&squot;calcCubic9Pts(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;C_&squot;+NOG+&squot;:=newCubic9Pts(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;,P_&squot;+p3+&squot;,P_&squot;+p4+&squot;,P_&squot;+p5+&squot;,P_&squot;+p6+&squot;,P_&squot;+p7+&squot;,P_&squot;+p8+&squot;,P_&squot;+p9+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=cubica9;NOG=NOG+1;' tipo='función' 
id='newPolarLine(P,Eq,s)' algoritmo='sí' expresión='NOG-1' hacer=';cleanNOG();OBGRA[NOG,_type]=segment;OBGRA[NOG,_isLine]=1;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_p1]=P;OBGRA[NOG,_p2]=Eq;OBGRA[NOG,_is2P]=0;OBGRA[NOG,_show]=show;OBGRA[NOG,_func]=&squot;calcPolarLine(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;L_&squot;+NOG+&squot;:=newPolarLine(P_&squot;+P+&squot;,C_&squot;+Eq+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1;;;;;' tipo='función' 
id='newPole(L,Eq,s)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=point;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_p1]=L;OBGRA[NOG,_p2]=Eq;OBGRA[NOG,_show]=show;OBGRA[NOG,_func]=&squot;calcPole(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;P_&squot;+NOG+&squot;:=newPole(L_&squot;+L+&squot;,C_&squot;+Eq+&squot;,\u0027\u0027)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1;;;;' tipo='función' 
id='newCommonPole(x0,y0,Eq1,Eq2)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=point;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;set_Point(NOG,x0,y0,0);OBGRA[NOG,_p1]=Eq1;OBGRA[NOG,_p2]=Eq2;OBGRA[NOG,_show]=show;OBGRA[NOG,_func]=&squot;calcCommonPole(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;P_&squot;+NOG+&squot;:=newCommonPole(&squot;+x0+&squot;,&squot;+y0+&squot;,C_&squot;+Eq1+&squot;,C_&squot;+Eq2+&squot;)&squot;;OBGRA[NOG,_cnstool_]=inversion;NOG=NOG+1;' tipo='función' 
id='newPlane(p1,p2)' algoritmo='sí' expresión='NOG-1' hacer='cleanNOG();OBGRA[NOG,_type]=plane;OBGRA[NOG,_name]=&squot;&squot;;OBGRA[NOG,_subix]=&squot;&squot;;OBGRA[NOG,_Pt1]=p1;OBGRA[NOG,_Pt2]=p2;OBGRA[NOG,_col]=color;OBGRA[NOG,_wdth]=ancho;OBGRA[NOG,_linestyle]=estilo;OBGRA[NOG,_show]=&squot;&squot;;OBGRA[NOG,_pa]=0;OBGRA[NOG,_pb]=0;OBGRA[NOG,_pc]=1;OBGRA[NOG,_pd]=1;OBGRA[NOG,_func]=&squot;calcPlane(&squot;+NOG+&squot;)&squot;;OBGRA[NOG,_constr]=&squot;T_&squot;+NOG+&squot;:=newPlane(&squot;+p1+&squot;,&squot;+p2+&squot;)&squot;;OBGRA[NOG,_cnstool_]=plano;NOG=NOG+1;' tipo='función' 
id='newPerpPlane(L,P)' algoritmo='sí' expresión='p' local='p' hacer='p=newPlane(L,P);OBGRA[p,_func]=&squot;calcPerpPlane(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;T_&squot;+p+&squot;:=newPerpPlane(L_&squot;+L+&squot;,P_&squot;+P+&squot;)&squot;;OBGRA[p,_cnstool_]=perpendicular;;' tipo='función' 
id='newParalPlane(T,P)' algoritmo='sí' expresión='p' local='p' hacer='p=newPlane(T,P);OBGRA[p,_func]=&squot;calcParalPlane(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;T_&squot;+p+&squot;:=newParalPlane(T_&squot;+T+&squot;,P_&squot;+P+&squot;)&squot;;OBGRA[p,_cnstool_]=paralela;' tipo='función' 
id='newMediatorPlane(p1,p2)' algoritmo='sí' expresión='p' local='p' hacer='p=newPlane(p1,p2);OBGRA[p,_func]=&squot;calcMediatorPlane(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;T_&squot;+p+&squot;:=newMediatorPlane(P_&squot;+p1+&squot;,P_&squot;+p2+&squot;)&squot;;OBGRA[p,_cnstool_]=mediatriz;' tipo='función' 
id='newRadicalPlane(p1,p2)' algoritmo='sí' expresión='p' local='p' hacer='p=newPlane(p1,p2);OBGRA[p,_func]=&squot;calcRadicalPlane(&squot;+p+&squot;)&squot;;OBGRA[p,_constr]=&squot;T_&squot;+p+&squot;:=newRadicalPlane(C_&squot;+p1+&squot;,C_&squot;+p2+&squot;)&squot;;OBGRA[p,_cnstool_]=eje_radical;' tipo='función'