Subversion Repositories wimsdev

Rev

Rev 12533 | Blame | Compare with Previous | Last modification | View Log | RSS feed

!set precision=!getopt precision in $(replyoption$i)
!default precision=5

ra=$[$(rlist[2])-$(rlist[4])]
rb=$[$(rlist[3])-$(rlist[1])]
rc=$[$(rlist[2])*($(rlist[3]))-($(rlist[1]))*($(rlist[4]))]
rm=$[max(abs($ra),abs($rb))]
!if $wims_read_parm=nocompare
  !if NaN isin $ra$rb$rc or $rm<$precision
    reply$i=
    test=NaN
    !exit
  !endif
  m_reply$i =$rlist
  !goto drawing
!endif
ga=$[$(glist[2])-$(glist[4])]
gb=$[$(glist[3])-$(glist[1])]
gc=$[$(glist[2])*($(glist[3]))-($(glist[1]))*($(glist[4]))]
gm=$[max(abs($ga),abs($gb))]
!if NaN isin $ga$gb$gc or $gm<$precision
  Test=bad $i
  !exit
!endif
!if NaN isin $ra$rb$rc or $rm<$precision
  reply$i=
  test=NaN
  !exit
!endif
t1=$[($ga*($rb)-($gb)*($ra))/$gm]
!if abs($ga) > abs($gb)
  t2=$[$ga*($rc)-($gc)*($ra)]
!else
  t2=$[$gb*($rc)-($gc)*($rb)]
!endif
t2=$[$t2/($gm^2)]
t3= $[sqrt(($(glist[1]) - ($(rlist[1])))^2 + ($(glist[2]) - ($(rlist[2])))^2)]
t4 = $[($(glist[3]) - $(glist[1]))*($(rlist[3]) - $(glist[2])) + ($(glist[4]) - $(glist[2]))*($(rlist[4]) - $(glist[2]))]
test=$[max(max(abs($t1),abs($t2)),$t3)]
!if $test<$precision and $t4 > 0
  diareply$i=good
  !advance freegot
!else
  !if $test<$[2*$precision-1] and $t4 > 0
    precreply$i=yes
    !advance precgood
  !endif
  diareply$i=bad
!endif

!if $t4 > 0
  sens=1
!else
  sens=0
!endif

!if $t3 < $precision
  origine=1
!else
  origine=0
!endif
!ifval abs($t1) < $precision
  direction=1
!else
  direction=0
!endif

##coordonnées des points cliqués
## test sur l'origine, test sur la direction, test sur le sens (0 ou 1)
m_reply$i =$rlist;$origine,$direction,$sens

:drawing
!if $(replytype$i)=javacurve
  rr=$[ceil(1000/$rm)+2]
  rp=$[$rr+1]
  rx1=$[$(rlist[1])*$rp-($(rlist[3]))*$rr]
  rx2=$[$(rlist[3])*$rp-($(rlist[1]))*$rr]
  ry1=$[$(rlist[2])*$rp-($(rlist[4]))*$rr]
  ry2=$[$(rlist[4])*$rp-($(rlist[2]))*$rr]
  primitive1=line $(rlist[1]),$(rlist[2]),$rx2,$ry2,$color1
  !if $wims_read_parm!=nocompare
    gr=$[ceil(1000/$gm)+2]
    gp=$[$gr+1]
    gx1=$[$(glist[1])*$gp-($(glist[3]))*$gr]
    gx2=$[$(glist[3])*$gp-($(glist[1]))*$gr]
    gy1=$[$(glist[2])*$gp-($(glist[4]))*$gr]
    gy2=$[$(glist[4])*$gp-($(glist[2]))*$gr]
    primitive2=line $(glist[1]),$(glist[2]),$gx2,$gy2,$color2
  !endif
  !exit
!endif

!! $(replytype$i)=jsxgraphcurve
!if $wims_read_parm!=nocompare
  !for j=1 to $m/2
    script$i=!append line p$i[$j] = brd$i.create('point',[$(glist[2*$j-1]),$(glist[2*$j])],{face:'+', size:'0',fixed:true,name:'',showInfobox:false,strokeColor:'$color2'}); to $(script$i)
  !next
  script$i=!append line brd$i.create('line',[p$i[1],p$i[2]],{strokeColor:'$color2', straightFirst:false}); to $(script$i)
!endif
!for j=1 to $n/2
  script$i=!append line q[$j] = brd$i.create('point',[$(rlist[2*$j-1]),$(rlist[2*$j])],{face:'+', size:'8',fixed:true,name:'',strokeColor:'$color1',showInfobox:false}); to $(script$i)
!next
script$i=!append line brd$i.create('line',[q[1],q[2]],{strokeColor:'$color1', straightFirst:false}); to $(script$i)