no display name and no $DISPLAY environment variable
    while executing
"load /enadisk/commun/linux/local/ActiveTcl-8.6.11/lib/libtk8.6.so Tk"
    ("package ifneeded Tk 8.6.11" script)
    invoked from within
"load /commun/linux/local/ActiveTcl-8.6.11/lib/Img1.4.6/libtkimgwindow1.4.6.so"
    ("package ifneeded img::window 1.4.6" script)
    invoked from within
"package require img::window"
    ("package ifneeded Img 1.4.6" script)
    invoked from within
"package require Img"
    (in namespace eval "::request" script line 3)
    invoked from within
"namespace eval ::request $script"
    ("::try" body line 12)

OUTPUT BUFFER:

#!/usr/local/bin/wish package require Img package require tcl3d source arori.tcl proc Initialisation {} { global pgl CenMat PckCnt global Rad global cx cy global ArcBall ThisRot LastRot ThisQuat global TransformAB TransformListAB global selectBuffer BUFSIZE # pour test picking set PckCnt 0 set BUFSIZE 512 set selectBuffer [tcl3dVector GLuint $BUFSIZE] # From objects dranw in "Tracing" proc # centre des Objects set pgl(xCen) 9.0 set pgl(yCen) 0.0 set pgl(zCen) 8.0 # transform matrix # 1 0 0 0 # 0 -1 0 0 # 0 0 1 0 # -xc yc -zc 1 # set CenMat [list 1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 1.0 0.0 [expr {1.0*$pgl(xCen)}] [expr {-1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] 1.0] set CenMat [list 1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 1.0 0.0 [expr {-1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] 1.0] # Transposee de l'originale # set CenMat [list 1.0 0.0 0.0 [expr {-1.0*$pgl(xCen)}] 0.0 -1.0 0.0 $pgl(yCen) 0.0 0.0 1.0 [expr {-1.0*$pgl(zCen)}] 0.0 0.0 0.0 1.0] set cx 0 set cy 0 set pgl(width) 500 set pgl(height) 500 set pgl(ratio) [expr {double($pgl(width))/$pgl(height)}] set Rad 30. set pgl(Rad) $Rad set pgl(zoom) 1.0 set pgl(frontclip) [expr {-2.1*$Rad}] # set pgl(frontclip) [expr {-2.1*$Rad}] # set pgl(frontclip) 0.1 # set pgl(backclip) [expr { 2.1*$Rad}] # set pgl(backclip) 0.1 # set pgl(backclip) $Rad set pgl(backclip) [expr {2.1*$Rad}] set pgl(fscreen) 0 set pgl(no_mat) { 0.0 0.0 0.0 1.0 } set pgl(mat_ambient) { 0.5 0.5 0.5 1.0 } set pgl(mat_diffuse) { 0.5 0.5 0.5 1.0 } set pgl(mat_specular) { 1.0 1.0 1.0 1.0 } set pgl(mat_emission) { 0.3 0.5 0.5 1.0 } set pgl(light_ambient) { 0.4 0.4 0.4 1.0 } # set pgl(light_ambient) { 1.9 1.9 1.9 1.0 } set pgl(light_amb_lin) { 0.7 0.7 0.7 1.0 } # set pgl(light_diffuse) { 1.7 1.7 1.7 1.0 } set pgl(light_diffuse) { 0.4 0.4 0.4 1.0 } set pgl(light_specular) { 1.0 1.0 1.0 1.0 } set pgl(position) { 0.0 0.0 -1000.} set pgl(no_shininess) 0.0 set pgl(low_shininess) 15.0 set pgl(high_shininess) 128.0 set pgl(shadeModel) $::GL_SMOOTH set pgl(lineMode) 0 # Init translation/rotation set pgl(xTra) 0.0 set pgl(yTra) 0.0 set pgl(zTra) 0.0 set pgl(xRot) 0.0 set pgl(yRot) 0.0 # init ArcBall set ArcBall [tcl3dNewArcBall $pgl(width) $pgl(height)] set ThisRot [tcl3dVector GLfloat 16] set LastRot [tcl3dVector GLfloat 16] set ThisQuat [tcl3dVector GLfloat 4] set TransformAB [tcl3dVector GLfloat 16] set TransformListAB [tcl3dVectorToList $TransformAB 16] return } proc Togl_CreateFonct {w} { global pgl Rad glShadeModel GL_SMOOTH glClearColor 0.0 0.0 0.0 1.0 # The Type Of Depth Testing To Do glClearDepth 0.0 glEnable GL_DEPTH_TEST glDepthFunc GL_GREATER glEnable GL_LIGHTING glEnable GL_LIGHT0 # Parametres lumiere anmbiante glLightfv GL_LIGHT0 GL_AMBIENT $pgl(light_ambient) glLightfv GL_LIGHT0 GL_DIFFUSE $pgl(light_diffuse) glLightfv GL_LIGHT0 GL_SPECULAR $pgl(light_specular) glLightf GL_LIGHT0 GL_SHININESS $pgl(high_shininess) glLightModeli GL_LIGHT_MODEL_TWO_SIDE $::GL_TRUE glMaterialf GL_FRONT_AND_BACK GL_SHININESS $pgl(high_shininess) glMaterialfv GL_FRONT_AND_BACK GL_SPECULAR [list 1.0 1.0 1.0 1.0] glEnable GL_COLOR_MATERIAL glColorMaterial GL_FRONT_AND_BACK GL_AMBIENT glEnable GL_RESCALE_NORMAL # Definition FOG glEnable GL_FOG set fogColor {0.0 0.0 0.0 1.0} glFogi GL_FOG_MODE $::GL_EXP2 glFogfv GL_FOG_COLOR $fogColor # ATTENTION ! # si FOG_LINEAR, alors density pas utillisee mais # utillise FOG_START et FOG_END # si FOG_ExP ou FOG_EXP2, utilise density et pas # START et END glFogi GL_FOG_MODE $::GL_EXP2 glFogf GL_FOG_DENSITY 0.5 # glHint GL_FOG_HINT GL_DONT_CARE glHint GL_FOG_HINT GL_NICEST glFogf GL_FOG_START 0.1 glFogf GL_FOG_END [expr {2.*$::Rad}] return } proc UpdateProjMat {} { global pgl Rad #return set zoom $pgl(zoom) set frontclip $pgl(frontclip) set backclip $pgl(backclip) glMatrixMode GL_PROJECTION glLoadIdentity glOrtho \ [expr {-$zoom*($Rad+$pgl(xTra))}]\ [expr { $zoom*($Rad-$pgl(xTra))}] \ [expr {-$zoom*($Rad+$pgl(yTra))}] \ [expr { $zoom*($Rad-$pgl(yTra))}] \ $pgl(frontclip) \ $pgl(backclip) glMatrixMode GL_MODELVIEW return } proc ApplyNewCenter {} { global pgl Rad if {0} { set zoom $pgl(zoom) set frontclip $pgl(frontclip) set backclip $pgl(backclip) glMatrixMode GL_PROJECTION glLoadIdentity glOrtho \ [expr {-$zoom*($Rad-$pgl(xCen))}]\ [expr { $zoom*($Rad+$pgl(xCen))}] \ [expr {-$zoom*($Rad-$pgl(yCen))}] \ [expr { $zoom*($Rad+$pgl(yCen))}] \ $pgl(frontclip) \ $pgl(backclip) } if {0} { glMatrixMode GL_PROJECTION glLoadIdentity glOrtho \ [expr {$pgl(xCen)-$pgl(zoom)*$Rad}]\ [expr {$pgl(xCen)+$pgl(zoom)*$Rad}] \ [expr {$pgl(yCen)-$pgl(zoom)*$Rad}] \ [expr {$pgl(yCen)+$pgl(zoom)*$Rad}] \ $pgl(frontclip) \ $pgl(backclip) # [expr {$pgl(zCen)-$pgl(zoom)*$Rad}] \ # [expr {$pgl(zCen)+$pgl(zoom)*$Rad}] } UpdateProjMat if {0} { glMatrixMode GL_MODELVIEW # glTranslatef [expr {-1.0*$pgl(xCen)}] [expr {-1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] # glTranslatef [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.0*$pgl(zCen)}] } if {0} { glMatrixMode GL_MODELVIEW # gluLookAt 0.0 0.0 0.0 \ 0.0 0.0 [expr {2.0*$Rad}] \ 0.0 1.0 0.0 # gluLookAt 0.0 0.0 [expr {2.0*$Rad}] \ 0.0 0.0 0.0 \ 0.0 1.0 0.0 # gluLookAt $pgl(xCen) $pgl(yCen) [expr {2.0*$Rad}] \ $pgl(xCen) $pgl(yCen) $pgl(zCen) \ 0.0 1.0 0.0 return } # UpdateProjMat glMatrixMode GL_MODELVIEW # glLoadIdentity # gluLookAt [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {$pgl(zCen)}] \ [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.1*$Rad + $pgl(zCen)}] \ 0.0 1.0 0.0 # glTranslatef [expr {-1.*$pgl(xCen)}] [expr {-1.*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] # glTranslatef 0. 0. [expr {-1.*$pgl(zCen)}] # glTranslatef [expr {-1.0*$pgl(xCen)}] [expr {-1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen) - $::Rad}] # gluLookAt 0.0 0.0 [expr {2.*$Rad}] \ [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.0*$pgl(zCen)}] \ 0.0 1.0 0.0 # gluLookAt 0.0 0.0 0.0 \ [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.1*$Rad + $pgl(zCen)}] \ 0.0 1.0 0.0 # gluLookAt [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {$pgl(zCen)}] \ [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.1*$Rad + $pgl(zCen)}] \ 0.0 1.0 0.0 # gluLookAt 0.0 0.0 0.0001 \ [expr {1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {1.0*$pgl(zCen)}] \ 0.0 1.0 0.0 # glTranslatef [expr {-1.*$pgl(xCen)}] [expr {-1.*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] return } proc Togl_ReshapeFonct {toglwin w h} { global pgl Rad if { $h == 0 } {set h 1} if { $w == 0 } {set w 1} set pgl(width) $w set pgl(height) $h set pgl(ratio) [expr {double($w)/$h}] glViewport 0 0 $w $h UpdateProjMat if {0} { glMatrixMode GL_PROJECTION glLoadIdentity glOrtho -20. 20. -20. 20. -20. 20. } glMatrixMode GL_MODELVIEW glLoadIdentity # *NEW* Update mouse bounds for arcball tcl3dSetArcBallBounds $::ArcBall $w $h $toglwin postredisplay return } proc Transpose m { for {set i 0} {$i < 4} {incr i} { for {set j 0} {$j < 16} {incr j 4} { lappend n [lindex $m [expr {$i+$j}]] } } return $n set c 0 set fmt "%5.3f %5.3f %5.3f %5.3f | %5.3f %5.3f %5.3f %5.3f" for {set i 0} {$i < 16} {incr i 4} { puts [format $fmt {*}[lrange $m $i [expr {$i+3}]] {*}[lrange $n $i [expr {$i+3}]]] } puts "" return $n } proc Togl_DisplayFonct {w} { global TransformListAB pgl glClearColor 0.0 0.0 0.0 1.0 glClear [expr $::GL_COLOR_BUFFER_BIT | $::GL_DEPTH_BUFFER_BIT] glMatrixMode GL_MODELVIEW glLoadIdentity glPushMatrix # glTranslatef [expr {-1.*$pgl(xCen)}] [expr {-1.*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] # glTranslatef $pgl(xCen) $pgl(yCen) $pgl(zCen) # glTranslatef $pgl(xCen) $pgl(yCen) $pgl(zCen) # glTranslatef [expr {-1.*$pgl(xCen)}] [expr {-1.*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] # gluLookAt 0. 0. [expr {2.0*$::Rad}] \ 0.0 0.0 0.0 \ 0.0 1.0 0.0 # set AMul [Transpose $TransformListAB] # glMultMatrixf $::CenMat # glMultMatrixf $AMul # glMultMatrixf $TransformListAB glMultMatrixf $::TransformAO # glMultMatrixf $::CenMat # UpdateProjMat # ApplyNewCenter glTranslatef [expr {-1.*$pgl(xCen)}] [expr {-1.*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] # Trace Objects Tracing glPopMatrix glFlush $w swapbuffers return } proc ResetRotations {} { global pgl tcl3dMatfIdentity $::TransformAB tcl3dMatfIdentity $::ThisRot tcl3dMatfIdentity $::LastRot set ::TransformListAB [tcl3dVectorToList $::TransformAB 16] $pgl(wogl) postredisplay return } proc InitArcBall { w x y } { # Set Last Static Rotation To Last Dynamic One tcl3dMatfCopy $::ThisRot $::LastRot # Update Start Vector And Prepare For Dragging tcl3dArcBallClick $::ArcBall $x $y $w postredisplay } proc DragArcBall { w x y } { global ArcBall ThisQuat ThisRot LastRot global TransformAB TransformListAB # Update End Vector And Get Rotation As Quaternion tcl3dArcBallDrag $::ArcBall $x $y $::ThisQuat # Convert Quaternion Into Matrix tcl3dTrackballBuildRotMatrix $::ThisRot $::ThisQuat # Accumulate Last Rotation Into This One tcl3dMatfMult $::ThisRot $::LastRot $::TransformAB tcl3dMatfCopy $::TransformAB $::ThisRot set ::TransformListAB [tcl3dVectorToList $::TransformAB 16] # set Amul [Transpose $TransformListAB] # set Transform [tcl3dVectorFromList GLfloat $Amul] # $w postredisplay } proc Mouse {quoi x y win} { global pgl cx cy switch $quoi { "ArcBall" { DragArcBall $win $x $y } "RotXY" { # rotation X et Y if { abs($cx-$x) < 5 && abs($cy-$y) < 5 } {return} glMatrixMode GL_MODELVIEW set mvm [tcl3dVector GLdouble 16] glGetDoublev GL_MODELVIEW_MATRIX $mvm # set mvList [tcl3dVectorToList $mvmatrix 16] # glRotatef [expr {$cy-$y}] [lindex $mvList 0] [lindex $mvList 4] [lindex $mvList 8] glRotatef [expr {$cy-$y}] [$mvm get 0] [$mvm get 4] [$mvm get 8] glGetDoublev GL_MODELVIEW_MATRIX $mvm # set mvList [tcl3dVectorToList $mvmatrix 16] # glRotatef [expr {$cx-$x}] [lindex $mvList 1] [lindex $mvList 5] [lindex $mvList 9] glRotatef [expr {$cx-$x}] [$mvm get 1] [$mvm get 5] [$mvm get 9] } "TraXY" { if { $cx == $x && $cy == $y } {return} # empiric constant 1.5 global Rad pgl set rx [expr {1.5*$Rad*($x-$cx)/$pgl(width)}] set ry [expr {1.5*$Rad*($y-$cy)/$pgl(height)}] set pgl(yTra) [expr {$pgl(yTra) - $ry}] set pgl(xTra) [expr {$pgl(xTra) + $rx}] UpdateProjMat } } set cx $x set cy $y $win postredisplay return } proc HandleZoom {n win} { global pgl set pgl(zoom) [expr {$pgl(zoom) + $n}] if {$pgl(zoom) < 0.0001} {set pgl(zoom) 0.0001} UpdateProjMat $win postredisplay return } # button to change the scene center proc ChangeCenter {n} { global cx cy pgl Rad CenMat if {$n == 0} { # Center of torus set pgl(xCen) 9.0 set pgl(yCen) 0.0 set pgl(zCen) 8.0 } elseif {$n eq 1} { # a side blue ball set pgl(xCen) 4.0 set pgl(yCen) 0.0 set pgl(zCen) 3.0 } elseif {$n == 2} { #big red ball set pgl(xCen) -2.0 set pgl(yCen) -2.0 set pgl(zCen) -2.0 } else { #big red ball set pgl(xCen) 0.0 set pgl(yCen) 0.0 set pgl(zCen) 0.0 } set CenMat [list 1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 1.0 0.0 [expr {-1.0*$pgl(xCen)}] [expr {1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] 1.0] set pgl(xTra) 0.0 set pgl(yTra) 0.0 set pgl(zTra) 0.0 set cx 0.0 set cy 0.0 puts "center is now $pgl(xCen) $pgl(yCen) $pgl(zCen)" $pgl(wogl) postredisplay return } # proc to output display proc ZePrint {} { global pgl # set imgName "toto.gif" set imgName "toto.jpeg" set w $pgl(width) set h $pgl(height) set numChans 4 set vec [tcl3dVector GLubyte [expr {$w * $h * $numChans}]] puts "fait assignation" glReadPixels 0 0 $w $h GL_RGBA GL_UNSIGNED_BYTE $vec puts "fait lecture" set ph [image create photo -width $w -height $h] puts "fait image create" set Lrgba [tcl3dVectorToList $vec [expr {$w*$h*4}]] set i 0 set data {} set Limg {} foreach {r g b a} $Lrgba { if {$i == $w} { lappend Limg $data set data {} set i 0 } set r [format "%02x" $r] set g [format "%02x" $g] set b [format "%02x" $b] lappend data "#$r$g$b" incr i } $ph put $Limg if {0} {tcl3dVector2Photo $vec $ph $w $h $numChans} puts "fait vector2photo" set fmt [string range [file extension $imgName] 1 end] $ph write $imgName -format $fmt return } # Draw window proc ZeTogl {} { global pgl set pgl(wogl) ".f.toto" frame .f pack .f togl .f.toto \ -width $pgl(width) -height $pgl(height) \ -double true \ -depth true \ -reshapeproc [list Togl_ReshapeFonct] \ -createproc [list Togl_CreateFonct] \ -displayproc [list Togl_DisplayFonct] pack .f.toto button .f.b0 -command [list ChangeCenter 0] \ -text "center init" \ -bg green button .f.b1 -command [list ChangeCenter 1] \ -text "Center blue ball" \ -bg green button .f.b2 -command [list ChangeCenter 2] \ -text "center neg red" \ -bg green button .f.b3 -command [list ChangeCenter 3] \ -text "center 0,0,0" \ -bg green button .f.s -command [list ZePrint] \ -text "Print image" \ -bg cyan pack .f.b0 .f.b1 .f.b2 .f.b3 .f.s -side left bind .f.toto "JePick %x %y" # bind .f.toto <1> "InitArcBall %W %x %y" bind .f.toto <1> "LClick %x %y" # bind .f.toto "Mouse ArcBall %x %y %W" bind .f.toto "LDrag %x %y %W" bind .f.toto <2> {set cx %x; set cy %y} bind .f.toto <3> {set cx %x; set cy %y} bind .f.toto {Mouse TraXY %x %y %W} bind .f.toto <4> {HandleZoom 0.05 %W} bind .f.toto <5> {HandleZoom -0.05 %W} bind .f {exit} bind .f {ChangeCenter} # ResetRotations Arcball update idletasks return } proc JePick {x y} { global Tn PckCnt puts "\n## $PckCnt ###" incr PckCnt set hits [DonnePick $x $y] if {$hits <= 0} {return} set count 0 for {set i 0} {$i < $hits} {incr i} { # 1st rec : Nnames set names [$::selectBuffer get $count] puts "name $names" incr count # 2nd rec : min z-depth div par 0x7fffffff set minz [$::selectBuffer get $count] puts "minz $minz" incr count # 3rd rec : max z set maxz [$::selectBuffer get $count] puts "maxz $maxz" incr count # 4th rec : noms for {set j 0} {$j < $names} { incr j } { set unom [$::selectBuffer get $count] puts "unom $unom [set Tn($unom)]" lappend AtmPick $unom incr count } } puts "list AtmPick $AtmPick" return } proc DonnePick {x y} { global pgl Rad selectBuffer BUFSIZE puts "select $selectBuffer" glSelectBuffer $BUFSIZE $selectBuffer glRenderMode GL_SELECT # puts "init 1" set pjmat [tcl3dVector GLfloat 16] glGetFloatv GL_PROJECTION_MATRIX $pjmat set projmat [tcl3dVectorToList $pjmat 16] set viewmat [tcl3dVector GLint 4] glGetIntegerv GL_VIEWPORT $viewmat set viewport [tcl3dVectorToList $viewmat 4] set w [$viewmat get 2] set h [$viewmat get 3] # puts "init 2" glMatrixMode GL_PROJECTION glPushMatrix glLoadIdentity # create 5x5 pixel picking region near cursor location # puts "x=$x y=$y w=$w h=$h $viewport" gluPickMatrix $x [expr {$h-$y}] 15.0 15.0 $viewmat # puts "fait pickmatrix" ; flush stdout # glMultMatrixf $projmat # puts "mult mat" ; flush stdout if {1} { set ratio $pgl(ratio) set zoom $pgl(zoom) set frontclip $pgl(frontclip) set backclip $pgl(backclip) glOrtho \ [expr {-$zoom*($Rad+$pgl(xTra))}]\ [expr { $zoom*($Rad-$pgl(xTra))}] \ [expr {-$zoom*($Rad+$pgl(yTra))}] \ [expr { $zoom*($Rad-$pgl(yTra))}] \ $pgl(frontclip) \ $pgl(backclip) } # glPopMatrix # puts "done PROJ" # MODELVIEW glMatrixMode GL_MODELVIEW glLoadIdentity glPushMatrix glMultMatrixf $::TransformAO # puts "vais tracer objects" ; flush stdout glTranslatef [expr {-1.0*$pgl(xCen)}] [expr {-1.0*$pgl(yCen)}] [expr {-1.0*$pgl(zCen)}] TraceSelect # puts "fini tracer objects" ; flush stdout glFlush glPopMatrix # puts "done MODELVIEW" glMatrixMode GL_PROJECTION glPopMatrix # puts "back PROJ" glMatrixMode GL_MODELVIEW set hits [glRenderMode GL_RENDER] set pgl(GLMode) "render" puts "\nhits $hits" # glMatrixMode GL_PROJECTION # glPopMatrix return $hits } proc TraceSelect {} { global Tn glInitNames glPushName 0 set a 10. set x 4. set z 3. set c 0 for {set y -5} {$y <= 5} {incr y 5} { set Tn($c) "sball" glLoadName $c glBegin GL_POINTS glVertex3f $x $y $z glEnd incr c set Tn($c) "sball" glLoadName $c glBegin GL_POINTS glVertex3f $x $y [expr {$z+$a}] glEnd incr c set Tn($c) "sball" glLoadName $c glBegin GL_POINTS glVertex3f [expr {$x+$a}] $y [expr {$z+$a}] glEnd incr c set Tn($c) "sball" glLoadName $c glBegin GL_POINTS glVertex3f [expr {$x+$a}] $y $z glEnd } incr c set Tn($c) "center obj" glLoadName $c glBegin GL_POINTS glVertex3f 9.0 0.0 8.0 glEnd # Sphere a l origin incr c set Tn($c) "origin" glLoadName $c glBegin GL_POINTS glVertex3f 0.0 0.0 0.0 glEnd # Sphere negative incr c set Tn($c) "negative" glLoadName $c glBegin GL_POINTS glVertex3f -2.0 -2.0 -2.0 glEnd # parray Tn return } proc Tracing {} { set a 10. set x 4. set z 3. for {set y -5} {$y <= 5} {incr y 5} { glColor3f [expr {($y/10.)+0.5}] [expr {-($y/10.)+0.5}] 1.0 glPushMatrix glTranslatef $x $y $z glutSolidSphere 1.0 16 16 glPopMatrix glPushMatrix glTranslatef $x $y [expr {$z+$a}] glutSolidSphere 1.0 16 16 glPopMatrix glPushMatrix glTranslatef [expr {$x+$a}] $y [expr {$z+$a}] glutSolidSphere 1.0 16 16 glPopMatrix glPushMatrix glTranslatef [expr {$x+$a}] $y $z glutSolidSphere 1.0 16 16 glPopMatrix } glColor3f 1.0 0.5 0.5 glPushMatrix glTranslatef 9.0 0.0 8.0 glutSolidTorus 1.2 3.5 20 20 glPopMatrix # Centre des Objects glColor3f 1.0 1.0 1.0 glPushMatrix glTranslatef 9.0 0.0 8.0 glutSolidSphere 0.8 16 16 glPopMatrix # Sphere a l origin glColor3f 1.0 1.0 1.0 glPushMatrix glTranslatef 0.0 0.0 0.0 glutSolidSphere 2.0 16 16 glPopMatrix # Sphere negative glColor3f 1.0 0.2 0.2 glPushMatrix glTranslatef -2.0 -2.0 -2.0 glutSolidSphere 2.0 16 16 glPopMatrix # Radius of points sqrt(10.*10.+10.*10.+10.*10.) # Rad = 9. # xCen= (14.+4.)/2=9. # zCen= (3.+13.)/2=8. return } Initialisation ZeTogl #No confirmation paypal xming #0MM51545HV841521K