⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmviz_callback.m

📁 算断裂的
💻 M
字号:
function gmviz_callback(opcode)fig = gcf;ax = findobj(fig,'tag','Axes1');di = get(ax,'Userdata');axes(ax);if opcode == 6 % zoom out  if di == 2    w = get(ax,'Xlim');    delta = (w(2) - w(1)) / 4;    set(ax, 'Xlim', [(w(1)-delta),w(2)+delta]);    w = get(ax,'Ylim');    delta = (w(2) - w(1)) / 4;    set(ax, 'Ylim', [(w(1)-delta),w(2)+delta]);  else    ang = get(ax,'CameraViewAngle');    set(ax, 'CameraViewAngle',ang*1.25);  endelseif opcode == 5 % zoom in  if di == 2    w = get(ax,'Xlim');    delta = (w(2) - w(1)) / 6;    set(ax, 'Xlim', [(w(1)+delta),w(2)-delta]);    w = get(ax,'Ylim');    delta = (w(2) - w(1)) / 6;    set(ax, 'Ylim', [(w(1)+delta),w(2)-delta]);  else    ang = get(ax,'CameraViewAngle');    set(ax, 'CameraViewAngle',ang*.8);  endelseif opcode == 3 % left  if di == 2    w = get(ax,'Xlim');    delta = (w(2) - w(1))/3;    set(ax,'Xlim',[(w(1)-delta),(w(2)-delta)]);  else    lg = findobj(ax, 'tag', 'gmviz_light');    centroid = get(ax,'cameratarget');    campos = get(ax,'cameraposition');    displ = campos - centroid;    rad = norm(displ);    upvec = get(ax,'CameraUpVector');    leftvec = cross(displ,upvec);    newpos = campos + .2*leftvec;    newdispl = newpos - centroid;    newdispl = rad * newdispl / norm(newdispl);    newpos = centroid + newdispl;    newupvec = cross(leftvec,newdispl);    newupvec = newupvec / norm(newupvec);    set(ax,'cameraposition', newpos);    set(lg,'position', newpos);    set(ax,'cameraupvector', newupvec);  endelseif opcode == 4 % right  if di == 2    w = get(ax,'Xlim');    delta = (w(2) - w(1))/3;    set(ax,'Xlim',[(w(1)+delta),(w(2)+delta)]);  else    lg = findobj(ax, 'tag', 'gmviz_light');    centroid = get(ax,'cameratarget');    campos = get(ax,'cameraposition');    displ = campos - centroid;    rad = norm(displ);    upvec = get(ax,'CameraUpVector');    rightvec = -cross(displ,upvec);    newpos = campos + .2*rightvec;    newdispl = newpos - centroid;    newdispl = rad * newdispl / norm(newdispl);    newpos = centroid + newdispl;    newupvec = -cross(rightvec,newdispl);    newupvec = newupvec / norm(newupvec);    set(ax,'cameraposition', newpos);    set(lg,'position', newpos);    set(ax,'cameraupvector', newupvec);  endelseif opcode  == 2 % down  if di== 2    w = get(ax,'Ylim');    delta = (w(2) - w(1))/3;    set(ax,'Ylim',[(w(1)-delta),(w(2)-delta)]);  else    lg = findobj(ax, 'tag', 'gmviz_light');    centroid = get(ax,'cameratarget');    campos = get(ax,'cameraposition');    displ = campos - centroid;    rad = norm(displ);    upvec = get(ax,'CameraUpVector');    newpos = campos -.2*upvec * rad;    newdispl = newpos - centroid;    newdispl = rad * newdispl / norm(newdispl);    newpos = centroid + newdispl;    newupvec = upvec - newdispl * (newdispl * upvec')/(rad^2);    newupvec = newupvec / norm(newupvec);    set(ax,'cameraposition', newpos);    set(lg,'position', newpos);    set(ax,'cameraupvector', newupvec);  endelseif opcode  == 1  % up  if di == 2    w = get(ax,'Ylim');    delta = (w(2) - w(1))/3;    set(ax,'Ylim',[(w(1)+delta),(w(2)+delta)]);  else    lg = findobj(ax, 'tag', 'gmviz_light');    centroid = get(ax,'cameratarget');    campos = get(ax,'cameraposition');    displ = campos - centroid;    rad = norm(displ);    upvec = get(ax,'CameraUpVector');    newpos = campos +.2*upvec * rad;    newdispl = newpos - centroid;    newdispl = rad * newdispl / norm(newdispl);    newpos = centroid + newdispl;    newupvec = upvec - newdispl * (newdispl * upvec')/(rad^2);    newupvec = newupvec / norm(newupvec);    set(ax,'cameraposition', newpos);    set(lg,'position', newpos);    set(ax,'cameraupvector', newupvec);  endelseif opcode == 7 % dismiss  delete(fig);else  error('Unknown opcode in gmviz_callback')end% ------------------------------------------------------------------% Copyright (c) 1999 by Cornell University.  All rights reserved.% See the accompanying file 'Copyright' for authorship information,% the terms of the license governing this software, and disclaimers% concerning this software.% ------------------------------------------------------------------% This file is part of the QMG software.  % Version 2.0 of QMG, release date September 3, 1999% ------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -