Rev 16886 | Rev 16898 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_title=Dessin d'un patron aléatoire du polyèdre
slib_author=Bernadette, Perrin-Riou
slib_parms=2\
,nom d'un polyèdre (en anglais comme dans la base dans wims)\
size=200,option as words: size=(vertical size) keywords:vertex_legend face_legend color=[general_color;number:color;number:color2;...]
slib_out=dessin en canvasdraw
slib_comment=Preliminary version (syntaxe can change)
!!rajouter option couleur face et sommet ? size ?
slib_example=cube,size=300 vertex_legend face_legend\
cube\
dodecahedron,size=500 vertex_legend face_legend color=[red]\
enneagonal_antiprism_dual,size=400 color=[blue;5,red;7,yellow]\
j09_elongated_pentagonal_pyramid,size=300\
j45_gyroelongated_square_bicupola,size=500
!exit
:proc
!reset slib_xyz slib_sfa slib_ff slib_size
!distribute items $wims_read_parm into slib_polname,slib_option,slib_color
!set wims_multiexec=$wims_multiexec pari
!set slib_size=!getopt size in $slib_option
!default slib_size=200
!set slib_color=!getopt color in $slib_option
!set slib_color=$(slib_color[1;])
!default slib_color=black
!if # isin $slib_polname or [ isin $slib_polname
slib_pol=!declosing $slib_polname
!else
slib_pol=!record 0 of data/polyedre_off/$(slib_polname).off
!endif
slib_t=1
slib_tmp=!line $slib_t of $slib_pol
!while # isin $slib_tmp
!advance slib_t
slib_tmp=!line $slib_t of $slib_pol
!endwhile
slib_sfa=!line $slib_t of $slib_pol
slib_somcnt=!word 1 of $slib_sfa
slib_facecnt=!word 2 of $slib_sfa
slib_sfa=!wordstoitems $slib_sfa
slib_xyz_=!line $[1+$slib_t] to $slib_somcnt+$slib_t of $slib_pol
!for slib_j=1 to $slib_somcnt
slib_tmp=!row $slib_j of $slib_xyz_
slib_tmp=!words2items $slib_tmp
slib_xyz=!append semicolon $slib_tmp to $slib_xyz
!next
slib_ff_=!line $[1+$slib_t+$slib_somcnt] to $[$slib_t+1+$slib_somcnt+$slib_facecnt] of $slib_pol
!for slib_j=1 to $slib_facecnt
slib_tmp=!row $slib_j of $slib_ff_
slib_tmp=!words2items $slib_tmp
slib_ff=!append item [$slib_tmp] to $slib_ff
!next
!if $slib_header_patron=
!readproc gp/spanning_tree.gp
slib_pr=!exec pari $slib_header_patron
!endif
slib_pr=!exec pari xyz=[$slib_xyz];ff=[$slib_ff]
slib_patron=!exec pari m=adjacence(ff); f2=projection_standard(ff,xyz);couv=arbre_couvrant_aleatoire(m); W=etale(couv,ff,f2,matsize(xyz)[1])
slib_pat=!exec pari print(couv)
!!!set slib_seed=1
!!!set slib_patron=!exec pari m=adjacence(ff); f2=projection_standard(ff,xyz);couv=arbres_couvrants(m,$slib_seed);W=etale(couv,ff,f2,matsize(xyz)[1])
slib_W1=!exec pari W[1]
slib_W2=!exec pari W[2]
slib_W2_=
!if face_legend iswordof $slib_option
!for slib_j=1 to $slib_facecnt
!set slib_tmp=!declosing $(slib_W2[$slib_j])
!set slib_W2_=!append item [$slib_tmp,$slib_j] to $slib_W2_
!next
slib_W2=$slib_W2_
!endif
!readproc slib/geo2D/offdraw [$slib_W1],[$slib_W2], $slib_option
$slib_out