id='statusName(n)' algoritmo='sí' expresión='sn' local='sn' inicio='sn=&squot;&squot;' hacer='sn=(n==punto)?&squot;Punto-Recta&squot;:sn;sn=(n==plano)?&squot;Plano&squot;:sn;sn=(n==curva)?&squot;Curva-Familia&squot;:sn;sn=(n==segmento)?&squot;Segmento&squot;:sn;sn=(n==inversion)?&squot;Armonía&squot;:sn;sn=((n==circuloRC)&show_E3)?&squot;Esfera&squot;:sn;sn=((n==circuloRC)&show_E2)?&squot;Círculo&squot;:sn;sn=((n==eje_radical)&show_E3)?&squot;Plano radical&squot;:sn;sn=((n==eje_radical)&show_E2)?&squot;Eje radical&squot;:sn;sn=(n==intersection)?&squot;Intersección&squot;:sn;sn=(n==puntoMedio)?&squot;Punto medio&squot;:sn;sn=(n==angulo)?&squot;Ángulo&squot;:sn;sn=(n==bisectriz)?&squot;Bisectriz&squot;:sn;sn=((n==mediatriz)&show_E2)?&squot;Mediatriz&squot;:sn;sn=((n==mediatriz)&show_E3)?&squot;Plano mediador&squot;:sn;//sn=(n==pie)?&squot;Pie&squot;:sn;sn=(n==paralela)?&squot;Paralela&squot;:sn;sn=(n==perpendicular)?&squot;Ortogonal-Pie&squot;:sn;sn=(n==conica5)?&squot;Armónica5Pts&squot;:sn;sn=(n==cubica9)?&squot;Cúbica9Pts&squot;:sn;;sn=(n==nueva)?&squot;Nueva&squot;:sn;sn=(n==recuperar)?&squot;Recuperar&squot;:sn;sn=(n==ocultar)?&squot;Ocultar&squot;:sn;sn=(n==cambio)?&squot;Cambiar&squot;:sn;sn=(n==rehacer)?&squot;&squot;:sn;sn=(n==deshacer)?&squot;&squot;:sn;sn=(n==nombres)?&squot;Nombres&squot;:sn;sn=(n==grosor)?&squot;Grosor&squot;:sn;;;;' tipo='función' 
id='iconName(n)' algoritmo='sí' expresión='sn' local='sn' inicio='sn=&squot;&squot;' hacer='sn=((n==deshacer))?&squot;undo&squot;:sn;sn=((n==rehacer))?&squot;redo&squot;:sn;sn=((n==ocultar))?&squot;hide&squot;:sn;sn=((n==recuperar))?&squot;unhide&squot;:sn;sn=((n==nueva))?&squot;new&squot;:sn;;;' tipo='función' 
id='iconCond(n)' algoritmo='sí' expresión='!cond' local='cond' inicio='cond=0' hacer='cond=((n==deshacer)&(status<explorar))?(nCHG>0):cond;cond=((n==deshacer)&(status>=explorar))?(NOG>minNOG):cond;cond=((n==rehacer)&(status<explorar))?(nCHG<maxnCHG):cond;cond=((n==rehacer)&(status>=explorar))?(NOG<maxNOG):cond;cond=(n==ocultar)?1:cond;cond=(n==recuperar)?hayOcultos():cond;cond=(n==nueva)?1:cond;' tipo='función' 
id='icons_dir()' algoritmo='no' expresión='(aspect)?&squot;icons_black&squot;:&squot;icons_white&squot;' tipo='función' 
id='get_svg(icon_name,condition)' algoritmo='sí' expresión='svg+&squot;.svg&squot;' local='svg' hacer='svg=icons_dir()+&squot;/progeo-&squot;+icon_name;svg=(condition)?svg+&squot;-soft&squot;:svg;' tipo='función' 
id='____VIEWMODE____' expresión='0' tipo='variable' 
id='setReadMode(rm)' algoritmo='sí' expresión='1' inicio='read_mode=rm' hacer='isL=(rm==rm_L)|(rm ==rm_TL)|(rm ==rm_BL);isR=(rm ==rm_R)|(rm ==rm_TR)|(rm ==rm_BR);isT=(rm ==rm_T)|(rm ==rm_TL)|(rm ==rm_TR);isB=(rm ==rm_B)|(rm ==rm_BL)|(rm ==rm_BR);isW=(rm ==rm_T)|(rm ==rm_B);updateViewMode();_CLEAN_=1;' tipo='función' 
id='setWorkMode()' algoritmo='sí' expresión='1' inicio='showctrls=1;viewing=0;reading=0' hacer='Ex=bw/8;Ey=TOPMNU._h;Ew=BACK._w-FUNC._w-bw/8+1;Eh=BACK._h-TOPMNU._h-CTRLG._h-4;FUNCTHIN.x=BACK._w;LRw=Ew;' tipo='función' 
id='setViewMode()' algoritmo='sí' expresión='1' inicio='showctrls=0;viewing=1;reading=0' hacer='Ex=0;Ey=0;Ew=BACK._w;Eh=BACK._h;FUNCTHIN.x=BACK._w;LRw=BACK._w-20*szfctr;' tipo='función' 
id='calcTexParams(Tx0,Ty0,Tx1,Ty1)' algoritmo='sí' expresión='1' hacer='Texx=((isL|isT)&(!isW))?Tx1:Tx0;Texx=(isL&isT|isL&isB|isR&isT)?Tx0:Texx;Texy=(isW&isT|isL&isT)?Ty1:Ty0;Texy=(isW&isB|isL&isB|isR&isT)?Ty0:Texy;Texrx=Ex1;Texry=(isT&isR|isT&isW|isR&isT)?Ty1:Texy;Texry=(isL&isT)?Ty0:Texry;;' tipo='función' 
id='setWkRdMode()' algoritmo='sí' expresión='1' local='Ex0,Ex1,Ey0,Ey1,Ty1,Ew0,Ew1,Eh0,Eh1' hacer='Ew0=525*BACK._w/1200;Eh0=385*BACK._h/880;Ew1=BACK._w-bw*10/8;Eh1=BACK._h-TOPMNU._h-CTRLG._h-4;;Ex0=bw*17/16;Ex1=BACK._w-Ew0-bw*9/8;Ey0=TOPMNU._h;Ey1=BACK._h-CTRLG._h-4-Eh0;;Ex=(isR)?Ex1:Ex0;Ex=(isW)?bw/8:Ex;Ey=(isB)?Ey1:Ey0;Eh=(isT|isB)?Eh0:Eh1;Ew=(isW)?Ew1:Ew0;;Texw=Ew0;Texh=Eh;;calcTexParams(Ex0,Ey0+bh/2,Ex1,Ey0+Eh0+bh/2);showctrls=1;viewing=0;reading=1;;FUNCTHIN.x=BACK._w;FUNCTHIN.x=(isR|isW)?BACK._w-bw*17/16:FUNCTHIN.x;FUNCTHIN.x=(isL)?bw/16:FUNCTHIN.x;LRw=Ew' tipo='función' 
id='setVwRdMode()' algoritmo='sí' expresión='1' local='Ex0,Ex1,Ey0,Ey1,Ty1,Ew0,Ew1,Eh0,Eh1' hacer='Ew0=(BACK._w-3*bw)/2;Eh0=(BACK._h-120*szfctr)/2;Ew1=BACK._w-2*bw;Eh1=BACK._h-120*szfctr;;Ex0=bw*17/16;Ex1=BACK._w/2+bw/2;Ey0=60*szfctr;Ey1=Ey0+Eh0;;Ex=(isR)?Ex1:Ex0;Ex=(isW)?bw:Ex;Ey=(isB)?Ey1:Ey0;Eh=(isT|isB)?Eh0:Eh1;Ew=(isW)?Ew1:Ew0;;Texw=Ew0;Texh=Eh;;calcTexParams(Ex0,Ey0,Ex1,Ey0+Eh0);Texy=(isT)?Texy+bh/2:Texy;Texry=(isT&isW)?Texy:Texry;Texry=(isT&isR)?Ey+Eh+bh/2:Texry;Ey=(isB)?Ey-bh/2:Ey;showctrls=0;viewing=1;reading=1;;FUNCTHIN.x=BACK._w;LRw=BACK._w-20*szfctr;' tipo='función' 
id='updateViewMode()' algoritmo='sí' expresión='1' hacer='((view_mode==vm_view)|((view_mode==vm_vwrd)&(the_left_text==&squot;&squot;)))?setViewMode():&squot;&squot; ;((view_mode==vm_vwrd)&(the_left_text!=&squot;&squot;))?setVwRdMode():&squot;&squot;;(view_mode==vm_wkrd)?setWkRdMode():&squot;&squot; ;(view_mode==vm_work)?setWorkMode():&squot;&squot; ;parent.set(&squot;pg3d.view_mode&squot;,&squot;&squot;+view_mode);parent.update();_CLEAN_=1;status=explorar;edit_text=edit_text&(view_mode!=vm_view)&(view_mode!=vm_vwrd);;' tipo='función' 
id='____NAME_&_SUBIX____' expresión='0' tipo='variable' 
id='selectByNameAndSubix(name_subix)' algoritmo='sí' expresión='selected' local='selected,n,name,subix,ix' inicio='n=minNOG;ix=_indexOf_(name_subix,&squot;_&squot;);name=(ix>=0)?_substring_(name_subix,0,ix):name_subix;subix=(ix>=0)?_substring_(name_subix,ix+1,_length_(name_subix)):&squot;&squot;;' hacer='selected=((OBGRA[n,_name]==name)&(OBGRA[n,_subix]==subix))?n:-1;n=n+1' mientras='(selected<0)&(n<NOG)' tipo='función' 
id='setNameAndSubix(name_subix)' algoritmo='sí' expresión='1' local='name,subix,ix' inicio='ix=_indexOf_(name_subix,&squot;_&squot;);name=(ix>=0)?_substring_(name_subix,0,ix):name_subix;subix=(ix>=0)?_substring_(name_subix,ix+1,_length_(name_subix)):&squot;&squot;' hacer='OBGRA[selOBGRA,_name]=name;OBGRA[selOBGRA,_subix]=subix+OBGRA[selOBGRA,_subix];' tipo='función' 
id='setSubix(subix)' algoritmo='sí' expresión='1' hacer='OBGRA[selOBGRA,_subix]=subix;' tipo='función' 
id='closePopUp()' algoritmo='sí' expresión='1' hacer='aux=((_estado_==0)&(Teclado.S!=TCLin))?setNameAndSubix(Teclado.S):&squot;&squot;;selOBGRA=((_estado_==0)&(selOBGRA<0)&(Teclado.S!=&squot;&squot;))?selectByNameAndSubix(Teclado.S):selOBGRA;aux=((_estado_==1)&(Teclado.S!=TCLin))?setSubix(Teclado.S):&squot;&squot;;teclado=0;((selOBGRA>=0)&(status==explorar))?getColSz(selOBGRA):&squot;&squot;;selOBGRA=((status==nombrar)|(status==subnombrar))?-1:selOBGRA' tipo='función' 
id='escapePopUp()' algoritmo='sí' expresión='1' hacer='teclado=0;;' tipo='función' 
id='____ANIMATION____' expresión='0' tipo='variable' 
id='prepC3Anim()' algoritmo='sí' expresión='1' local='CNSTR,dx,dy' hacer='CNSTR =OBGRA[selOBGRA,_cnstr];_R_=OBGRA[CNSTR,_r];_XC_=OBGRA[CNSTR,_xc];_YC_=OBGRA[CNSTR,_yc];_ZC_=OBGRA[CNSTR,_zc];_NX_=OBGRA[CNSTR,_nx];_NY_=OBGRA[CNSTR,_ny];_NZ_=OBGRA[CNSTR,_nz];_TX_=OBGRA[CNSTR,_tx];_TY_=OBGRA[CNSTR,_ty];_TZ_=OBGRA[CNSTR,_tz];dx=(X2(selOBGRA)-_XC_)*_NX_+(Y2(selOBGRA)-_YC_)*_NY_+ (Z2(selOBGRA)-_ZC_)*_NZ_;dy=(X2(selOBGRA)-_XC_)*_TX_+(Y2(selOBGRA)-_YC_)*_TY_+ (Z2(selOBGRA)-_ZC_)*_TZ_;_t_=angtan(dx,dy);_animIterations_=144;_dt_=2*pi/_animIterations_;;_Xini_=OBGRA[selOBGRA,_x];_Yini_=OBGRA[selOBGRA,_y];_Zini_=OBGRA[selOBGRA,_z];_Wini_=OBGRA[selOBGRA,_w];' tipo='función' 
id='prepCAnim()' algoritmo='sí' expresión='1' hacer='_R_=OBGRA[OBGRA[selOBGRA,_cnstr],_r];_XC_=X2(OBGRA[OBGRA[selOBGRA,_cnstr],_centro]);_YC_=Y2(OBGRA[OBGRA[selOBGRA,_cnstr],_centro]);_t_=angtan(X2(selOBGRA)-_XC_,Y2(selOBGRA)-_YC_);_animIterations_=144;_dt_=2*pi/_animIterations_;;_Xini_=OBGRA[selOBGRA,_x];_Yini_=OBGRA[selOBGRA,_y];_Zini_=OBGRA[selOBGRA,_z];_Wini_=OBGRA[selOBGRA,_w];' tipo='función' 
id='prepSAnim()' algoritmo='sí' expresión='1' local='forbidden' hacer='_S_=OBGRA[selOBGRA,_cnstr];_X0_=X2(OBGRA[_S_,_1]);_Y0_=Y2(OBGRA[_S_,_1]);_Z0_=Z2(OBGRA[_S_,_1]);_sL_=sqrt((X2(OBGRA[_S_,_2])-_X0_)^2+(Y2(OBGRA[_S_,_2])-_Y0_)^2+(Z2(OBGRA[_S_,_2])-_Z0_)^2);_u_=OBGRA[_S_,_L_ux];_v_=OBGRA[_S_,_L_uy];_w_=OBGRA[_S_,_L_uz];_t_=dist(selOBGRA,OBGRA[_S_,_1])/dist(OBGRA[_S_,_2],OBGRA[_S_,_1]);_animIterations_=72;_dt_=1/_animIterations_;_Xini_=OBGRA[selOBGRA,_x];_Yini_=OBGRA[selOBGRA,_y];_Zini_=OBGRA[selOBGRA,_z];_Wini_=OBGRA[selOBGRA,_w];' tipo='función' 
id='prepLAnim()' algoritmo='sí' expresión='1' local='cx,cy,cw,_N_,ok1,ok2,ok3,tt,ss' hacer='_L_=OBGRA[selOBGRA,_cnstr];_Xini_=OBGRA[selOBGRA,_x];_Yini_=OBGRA[selOBGRA,_y];_Zini_=OBGRA[selOBGRA,_z];_Wini_=OBGRA[selOBGRA,_w];_X1_=OBGRA[_L_,_L_x1];_Y1_=OBGRA[_L_,_L_y1];_Z1_=OBGRA[_L_,_L_z1];_W1_=1;_Nx_=OBGRA[_L_,_L_ux];_Ny_=OBGRA[_L_,_L_uy];_Nz_=OBGRA[_L_,_L_uz];_Nw_=0;_N_=sqrt(_Nx_^2+_Ny_^2+_Nz_^2+_Nw_^2)/sqrt(1+_X1_^2+_Y1_^2+_Z1_^2);_Nx_=_Nx_/_N_;_Ny_=_Ny_/_N_;_Nz_=_Nz_/_N_;_Nw_=_Nw_/_N_;_animIterations_=144;_dt_=2*pi/_animIterations_;;ok1=solve2x2(_X1_,_Y1_,_Nx_,_Ny_,_Xini_,_Yini_);_t_=(ok1)?angtan(tt,ss):_t_;ok2=(!ok1)?solve2x2(_X1_,_Z1_,_Nx_,_Nz_,_Xini_,_Zini_):-1;_t_=((!ok1)&ok2)?angtan(tt,ss):_t_;ok3=(!(ok1|ok2))?solve2x2(_Y1_,_Z1_,_Ny_,_Nz_,_Yini_,_Zini_):-1;_t_=((!(ok1|ok2))&ok3)?angtan(tt,ss):_t_;_t_=ent(_t_/_dt_)*_dt_+_dt_/2;;' tipo='función' 
id='doSAnim()' algoritmo='sí' expresión='1' local='xS,yS,zS,t' hacer='t=(_t_<=1)?_t_:_t_-1;t=t*_sL_;xS=_X0_+_u_*t;yS=_Y0_+_v_*t;zS=_Z0_+_w_*t;set_Point(selOBGRA,xS,yS,zS);' tipo='función' 
id='doLAnim()' algoritmo='sí' expresión='1' local='xL,yL,zL,wL,ct,st' hacer='ct=cos(_t_);st=sen(_t_);xL=_X1_*ct+_Nx_*st;yL=_Y1_*ct+_Ny_*st;zL=_Z1_*ct+_Nz_*st;wL=_W1_*ct;set_Point_4D(selOBGRA,xL,yL,zL,wL);;' tipo='función' 
id='init_anim_0()' algoritmo='sí' expresión='1' hacer='_nn_=0;maxdiff=0;mindiff=1000000;' tipo='función' 
id='do_anim_0()' algoritmo='sí' expresión='1' hacer='_anim_on_=1;(_isC_)?set_Point(selOBGRA,_XC_+_R_*cos(_t_),_YC_+_R_*sen(_t_),0):&squot;&squot;;(_isL_)?doLAnim():&squot;&squot;;(_isS_)?doSAnim():&squot;&squot;;(_isC3_)?set_Point(selOBGRA,_XC_+_R_*(_NX_*cos(_t_)+_TX_*sen(_t_)), _YC_+_R_*(_NY_*cos(_t_)+_TY_*sen(_t_)), _ZC_+_R_*(_NZ_*cos(_t_)+_TZ_*sen(_t_))):&squot;&squot;;updateLocal(1,selOBGRA+1,NOG-1);_nn_=_nn_+1;_anim_on_=(_nn_<=_animIterations_)?_anim_on_:0;_t_=(_nn_<=_animIterations_)?_t_+_dt_:_t_;(!_anim_on_)?set_Point_4D(selOBGRA,_Xini_,_Yini_,_Zini_,_Wini_):&squot;&squot;;(!_anim_on_)?updateLocal(1,selOBGRA,NOG-1):&squot;&squot;;' tipo='función' 
id='mayAnim()' algoritmo='sí' expresión='(selOBGRA>=minNOG)&(_isC3_|_isC_|_isL_|_isS_)' local='CNSTR' hacer='CNSTR=OBGRA[selOBGRA,_cnstr];_isC_=(selOBGRA>=minNOG)&(OBGRA[CNSTR,_type]==circle);_isL_=(selOBGRA>=minNOG)&(OBGRA[CNSTR,_type]==segment)&(OBGRA[CNSTR,_isLine]);_isS_=(selOBGRA>=minNOG)&(OBGRA[CNSTR,_type]==segment)&(!OBGRA[CNSTR,_isLine])&(OBGRA[CNSTR,_vsL]<0);_isC3_=(selOBGRA>=minNOG)&(OBGRA[CNSTR,_type]==circ3D);' tipo='función' 
id='selectAnimIcon()' algoritmo='sí' expresión='1' hacer='play_icon=((mayAnim()|show_E3))?icons_dir()+&squot;/progeo-play.svg&squot;:icons_dir()+&squot;/progeo-play-soft.svg&squot;;' tipo='función' 
id='play()' algoritmo='sí' expresión='_animate_' hacer='anim_state=(mayAnim())?0:show_E3;(_isC3_)?prepC3Anim():&squot;&squot;;(_isC_)?prepCAnim():&squot;&squot;;(_isL_)?prepLAnim():&squot;&squot;;(_isS_)?prepSAnim():&squot;&squot;;_animate_=show_E3|((selOBGRA>=0)&(_isC3_|_isC_|_isL_|_isS_));;' tipo='función' 
id='playSineNote(strfr)' algoritmo='no' expresión='sound_play(_Eval_(strfr),&squot;sine&squot;,2,0,2)' tipo='función'