Subversion Repositories wimsdev

Rev

Blame | 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)\
size=200,option as words: size=(vertical size) keywords:vertex_legend face_legend  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
slib_pol=!record 0 of data/polyedre_off/$(slib_polname).off

slib_sfa=!line 3 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 4 to $slib_somcnt+3 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 $[$slib_somcnt+4] to $[$slib_somcnt+5+$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/arbres_couvrants.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