Changeset 3176
- Timestamp:
- Sep 20, 2012 2:00:34 PM (8 years ago)
- Location:
- branches/nanovis2/gui/scripts
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nanovis2/gui/scripts/flowvisviewer.tcl
r3009 r3176 1442 1442 set q [$_arcball rotate $x $y $_click(x) $_click(y)] 1443 1443 foreach { _view(qw) _view(qx) _view(qy) _view(qz) } $q break 1444 set _settings($this-qw) $_view(qw) 1445 set _settings($this-qx) $_view(qx) 1446 set _settings($this-qy) $_view(qy) 1447 set _settings($this-qz) $_view(qz) 1444 1448 SendCmd "camera orient $q" 1445 1449 } else { -
branches/nanovis2/gui/scripts/heightmapviewer.tcl
r2744 r3176 97 97 private method EventuallyResize { w h } 98 98 99 private variable _arcball "" 100 private variable _useArcball 1 99 101 private variable _outbuf ;# buffer for outgoing commands 100 102 … … 160 162 # Initialize the view to some default parameters. 161 163 array set _view { 164 qw 0.853553 165 qx -0.353553 166 qy 0.353553 167 qz 0.146447 162 168 theta 45 163 169 phi 45 … … 167 173 pan-y 0 168 174 } 175 set _arcball [blt::arcball create 100 100] 176 set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)] 177 $_arcball quaternion $q 178 169 179 foreach val {xmin xmax ymin ymax zmin zmax vmin vmax} { 170 180 set _limits($val) "" 171 181 } 172 182 array set _settings [subst { 173 $this-pan-x $_view(pan-x) 174 $this-pan-y $_view(pan-y) 183 $this-qw $_view(qw) 184 $this-qx $_view(qx) 185 $this-qy $_view(qy) 186 $this-qz $_view(qz) 175 187 $this-phi $_view(phi) 176 188 $this-psi $_view(psi) 177 189 $this-theta $_view(theta) 190 $this-pan-x $_view(pan-x) 191 $this-pan-y $_view(pan-y) 178 192 $this-surface 1 179 193 $this-xcutplane 0 … … 321 335 image delete $_image(legend) 322 336 image delete $_image(download) 337 catch { blt::arcball destroy $_arcball } 323 338 } 324 339 … … 753 768 set w [winfo width $itk_component(3dview)] 754 769 set h [winfo height $itk_component(3dview)] 770 $_arcball resize $w $h 755 771 EventuallyResize $w $h 756 772 … … 813 829 } 814 830 # Reset the camera and other view parameters 831 set _settings($this-qw) $_view(qw) 832 set _settings($this-qx) $_view(qx) 833 set _settings($this-qy) $_view(qy) 834 set _settings($this-qz) $_view(qz) 815 835 set _settings($this-theta) $_view(theta) 816 836 set _settings($this-phi) $_view(phi) … … 820 840 set _settings($this-zoom) $_view(zoom) 821 841 822 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 823 SendCmd "camera angle $xyz" 842 if {$_useArcball} { 843 set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)] 844 $_arcball quaternion $q 845 SendCmd "camera orient $q" 846 } else { 847 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 848 SendCmd "camera angle $xyz" 849 } 824 850 PanCamera 825 851 SendCmd "camera zoom $_view(zoom)" … … 864 890 "reset" { 865 891 array set _view { 892 qw 0.853553 893 qx -0.353553 894 qy 0.353553 895 qz 0.146447 866 896 theta 45 867 897 phi 45 … … 877 907 } 878 908 } 879 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 880 SendCmd "camera angle $xyz" 909 if {$_useArcball} { 910 set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)] 911 $_arcball quaternion $q 912 SendCmd "camera orient $q" 913 } else { 914 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 915 SendCmd "camera angle $xyz" 916 } 881 917 PanCamera 918 set _settings($this-qw) $_view(qw) 919 set _settings($this-qx) $_view(qx) 920 set _settings($this-qy) $_view(qy) 921 set _settings($this-qz) $_view(qz) 882 922 set _settings($this-theta) $_view(theta) 883 923 set _settings($this-phi) $_view(phi) … … 977 1017 } 978 1018 979 # 980 # Rotate the camera in 3D 981 # 982 if {$_view(psi) > 90 || $_view(psi) < -90} { 983 # when psi is flipped around, theta moves backwards 984 set dy [expr {-$dy}] 1019 if {$_useArcball} { 1020 set q [$_arcball rotate $x $y $_click(x) $_click(y)] 1021 foreach { _view(qw) _view(qx) _view(qy) _view(qz) } $q break 1022 set _settings($this-qw) $_view(qw) 1023 set _settings($this-qx) $_view(qx) 1024 set _settings($this-qy) $_view(qy) 1025 set _settings($this-qz) $_view(qz) 1026 SendCmd "camera orient $q" 1027 } else { 1028 # 1029 # Rotate the camera in 3D 1030 # 1031 if {$_view(psi) > 90 || $_view(psi) < -90} { 1032 # when psi is flipped around, theta moves backwards 1033 set dy [expr {-$dy}] 1034 } 1035 set theta [expr {$_view(theta) - $dy*180}] 1036 while {$theta < 0} { set theta [expr {$theta+180}] } 1037 while {$theta > 180} { set theta [expr {$theta-180}] } 1038 1039 if {abs($theta) >= 30 && abs($theta) <= 160} { 1040 set phi [expr {$_view(phi) - $dx*360}] 1041 while {$phi < 0} { set phi [expr {$phi+360}] } 1042 while {$phi > 360} { set phi [expr {$phi-360}] } 1043 set psi $_view(psi) 1044 } else { 1045 set phi $_view(phi) 1046 set psi [expr {$_view(psi) - $dx*360}] 1047 while {$psi < -180} { set psi [expr {$psi+360}] } 1048 while {$psi > 180} { set psi [expr {$psi-360}] } 1049 } 1050 1051 set _view(theta) $theta 1052 set _view(phi) $phi 1053 set _view(psi) $psi 1054 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 1055 set _settings($this-theta) $_view(theta) 1056 set _settings($this-phi) $_view(phi) 1057 set _settings($this-psi) $_view(psi) 1058 SendCmd "camera angle $xyz" 985 1059 } 986 set theta [expr {$_view(theta) - $dy*180}]987 while {$theta < 0} { set theta [expr {$theta+180}] }988 while {$theta > 180} { set theta [expr {$theta-180}] }989 990 if {abs($theta) >= 30 && abs($theta) <= 160} {991 set phi [expr {$_view(phi) - $dx*360}]992 while {$phi < 0} { set phi [expr {$phi+360}] }993 while {$phi > 360} { set phi [expr {$phi-360}] }994 set psi $_view(psi)995 } else {996 set phi $_view(phi)997 set psi [expr {$_view(psi) - $dx*360}]998 while {$psi < -180} { set psi [expr {$psi+360}] }999 while {$psi > 180} { set psi [expr {$psi-360}] }1000 }1001 1002 set _view(theta) $theta1003 set _view(phi) $phi1004 set _view(psi) $psi1005 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)]1006 set _settings($this-theta) $_view(theta)1007 set _settings($this-phi) $_view(phi)1008 set _settings($this-psi) $_view(psi)1009 SendCmd "camera angle $xyz"1010 1060 set _click(x) $x 1011 1061 set _click(y) $y … … 1192 1242 } 1193 1243 1194 1195 1196 1244 # camera -- 1197 1245 # … … 1218 1266 set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)] 1219 1267 SendCmd "camera angle $xyz" 1268 if {$_useArcball} { 1269 $_arcball euler [list [expr {-[lindex $xyz 2]}] [expr {-[lindex $xyz 1]}] [expr {-[lindex $xyz 0]}]] 1270 set q [$_arcball quaternion] 1271 foreach { _view(qw) _view(qx) _view(qy) _view(qz) } $q break 1272 set _settings($this-qw) $_view(qw) 1273 set _settings($this-qx) $_view(qx) 1274 set _settings($this-qy) $_view(qy) 1275 set _settings($this-qz) $_view(qz) 1276 } 1277 } 1278 "qx" - "qy" - "qz" - "qw" { 1279 set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)] 1280 $_arcball quaternion $q 1281 SendCmd "camera orient $q" 1220 1282 } 1221 1283 "zoom" { … … 1300 1362 $inner configure -borderwidth 4 1301 1363 1302 set labels { phi theta psi pan-x pan-y zoom } 1364 if {$_useArcball} { 1365 set labels { qw qx qy qz pan-x pan-y zoom } 1366 } else { 1367 set labels { phi theta psi pan-x pan-y zoom } 1368 } 1303 1369 set row 1 1304 1370 foreach tag $labels { … … 1328 1394 set _width $w 1329 1395 set _height $h 1396 $_arcball resize $w $h 1330 1397 if { !$_resizePending } { 1331 1398 $_dispatcher event -after 200 !resize -
branches/nanovis2/gui/scripts/nanovisviewer.tcl
r3175 r3176 1108 1108 set q [$_arcball rotate $x $y $_click(x) $_click(y)] 1109 1109 foreach { _view(qw) _view(qx) _view(qy) _view(qz) } $q break 1110 set _settings($this-qw) $_view(qw) 1111 set _settings($this-qx) $_view(qx) 1112 set _settings($this-qy) $_view(qy) 1113 set _settings($this-qz) $_view(qz) 1110 1114 SendCmd "camera orient $q" 1111 1115 } else {
Note: See TracChangeset
for help on using the changeset viewer.