?? room.txt
字號:
set(hv(i),'interruptible','off')
end
%initial audience dimensions
adi=ceil(zdi/2);
%create initial audience limits
naud=4;
for i=1:naud,
hw(i)=plot([0 1],[1 1],'k');
hv(i)=plot(1,1,'.k');
end
hww=[hw(4) hw(1);hw(1) hw(2);hw(2) hw(3);hw(3) hw(4)];
hvv=[hv(1) hv(2);hv(2) hv(3);hv(3) hv(4);hv(4) hv(1);];
x0=xmid-adi/2;
y0=ymid-adi/2;
x1=xmid+adi/2;
y1=ymid+adi/2;
xaud=[x0 x1;x1 x1;x1 x0;x0 x0];
yaud=[y0 y0;y0 y1;y1 y1;y1 y0];
ud=[];
for i=1:naud,
set(hw(i),'xdata',xaud(i,:))
set(hw(i),'ydata',yaud(i,:))
ud.con=hvv(i,:);
set(hw(i),'userdata',ud)
set(hw(i),'tag','acouaudienceedge')
set(hv(i),'xdata',xaud(i,1))
set(hv(i),'ydata',yaud(i,1))
set(hv(i),'tag','acouaudiencevertex')
set(hv(i),'markersize',15)
set(hv(i),'buttondownfcn','set(gcf,''windowbuttonmotionfcn'',''radit2d(''''moveaudiencepoint'''')'')')
set(hv(i),'interruptible','off')
ud.con=hww(i,:);
set(hv(i),'userdata',ud)
end
%create audience surface
[xaudmesh,yaudmesh]=meshgrid(0:0.05:1,0:0.05:1);
h=surf(xaudmesh,yaudmesh,-0.01*ones(size(xaudmesh)),ones(size(xaudmesh)));
set(h,'edgecolor','none')
set(h,'facecolor','interp')
set(h,'tag','acouaudiencesurface')
set(h,'faceoffsetbias',0.3/zdi)
men=uicontextmenu;
set(h,'uicontextmenu',men)
item1=uimenu(men,'label','precision','callback','radit2d(''surfaceprecision'')');
item2=uimenu(men,'separator','on','label','include room','callback','radit2d(''matchroom'')');
item3=uimenu(men,'label','reduce size','callback','radit2d(''reducesurfacesize'')');
item4=uimenu(men,'label','area=','separator','on');
%create source
h=plot(xwall(1)+gsize,ymid,'og');
set(h,'tag','acousource')
set(h,'markersize',8)
set(h,'markerfacecolor','r')
set(h,'markeredgecolor','k')
set(h,'buttondownfcn','set(gcf,''windowbuttonmotionfcn'',''radit2d(''''movesource'''')'')')
set(h,'interruptible','off')
%create receptor
h=plot(xwall(2)-gsize,ymid,'og');
set(h,'tag','acoureceptor')
set(h,'markersize',12)
set(h,'marker','pentagram')
%set(h,'color',[1 1 0])
set(h,'markerfacecolor','y')
set(h,'markeredgecolor','k')
set(h,'buttondownfcn','set(gcf,''windowbuttonmotionfcn'',''radit2d(''''movereceptor'''')'')')
set(h,'interruptible','off')
%create buttons
h=uicontrol('style','pushbutton');
set(h,'position',[1 1 40 20])
set(h,'string','grid')
set(h,'tooltipstring','Set grid spacing')
set(h,'tag','acougridbutton')
set(h,'callback','radit2d(''changegrid'')')
%set(h,'userdata',[zdi width])
h=uicontrol('style','togglebutton');
set(h,'position',[41 1 40 20])
set(h,'value',1)
set(h,'string','snap')
set(h,'tooltipstring','Set points to snap to grid')
set(h,'tag','acousnapbutton')
h=uicontrol('style','togglebutton');
set(h,'position',[81 1 60 20])
set(h,'value',0)
set(h,'string','constrain')
set(h,'tooltipstring','Constrain wall points to be between neighbours')
set(h,'tag','acouconstrainbutton')
h=uicontrol('style','radiobutton');
set(h,'position',[145 1 50 20])
set(h,'value',0)
set(h,'string','grid')
set(h,'tooltipstring','Hide or display grid')
set(h,'tag','acouhidegridbutton')
set(h,'callback','radit2d(''hidegrid'')')
h=uicontrol('style','radiobutton');
set(h,'position',[195 1 55 20])
set(h,'value',1)
set(h,'string','images')
set(h,'tooltipstring','Hide or display images')
set(h,'tag','acouhideimagebutton')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','radiobutton');
set(h,'position',[250 1 50 20])
set(h,'value',1)
set(h,'string','radius')
set(h,'tooltipstring','Hide or display radius')
set(h,'tag','acouhideradiusbutton')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','togglebutton');
set(h,'position',[305 1 35 20])
set(h,'value',0)
set(h,'string','zoom')
set(h,'tooltipstring','View drawing zone only or include images')
set(h,'tag','acouzoombutton')
set(h,'callback','radit2d(''zoom'')')
h=uicontrol('style','togglebutton');
set(h,'position',[340 1 35 20])
set(h,'value',0)
set(h,'string','view')
set(h,'tooltipstring','Set drawing zone size, center drawing, ...')
set(h,'tag','acouviewbutton')
set(h,'callback','radit2d(''view'')')
h=uicontrol('style','pushbutton');
set(h,'position',[290 50 20 20])
set(h,'tooltipstring','Center drawing')
set(h,'tag','acoucenter')
set(h,'string','C')
set(h,'callback','radit2d(''movedrawing'')')
h=uicontrol('style','pushbutton');
set(h,'position',[290 70 20 20])
set(h,'tooltipstring','Move drawing up')
set(h,'tag','acoumoveup')
cdata=createarrow('up');
set(h,'cdata',cdata)
set(h,'callback','radit2d(''movedrawing'')')
h=uicontrol('style','pushbutton');
set(h,'position',[310 50 20 20])
set(h,'tooltipstring','Move drawing right')
set(h,'tag','acoumoveright')
cdata=createarrow('right');
set(h,'cdata',cdata)
set(h,'callback','radit2d(''movedrawing'')')
h=uicontrol('style','pushbutton');
set(h,'position',[290 30 20 20])
set(h,'tooltipstring','Move drawing down')
set(h,'tag','acoumovedown')
cdata=createarrow('down');
set(h,'cdata',cdata)
set(h,'callback','radit2d(''movedrawing'')')
h=uicontrol('style','pushbutton');
set(h,'position',[270 50 20 20])
set(h,'tooltipstring','Move drawing left')
set(h,'tag','acoumoveleft')
cdata=createarrow('left');
set(h,'cdata',cdata)
set(h,'callback','radit2d(''movedrawing'')')
h=uicontrol('style','pushbutton');
set(h,'position',[420 50 20 20])
set(h,'string','>>')
set(h,'tag','acouexpand++')
set(h,'tooltipstring','Expand working zone (+5)')
set(h,'callback','radit2d(''expand'')')
h=uicontrol('style','pushbutton');
set(h,'position',[400 50 20 20])
set(h,'string','>')
set(h,'tag','acouexpand+')
set(h,'tooltipstring','Expand working zone (+1)')
set(h,'callback','radit2d(''expand'')')
h=uicontrol('style','pushbutton');
set(h,'position',[380 50 20 20])
set(h,'string','M')
set(h,'tag','acouexpandm')
set(h,'tooltipstring','Set working zone to match drawing')
set(h,'callback','radit2d(''expand'')')
h=uicontrol('style','pushbutton');
set(h,'position',[360 50 20 20])
set(h,'string','<')
set(h,'tag','acouexpand-')
set(h,'tooltipstring','Reduce working zone (-1)')
set(h,'callback','radit2d(''expand'')')
h=uicontrol('style','pushbutton');
set(h,'position',[340 50 20 20])
set(h,'string','<<')
set(h,'tag','acouexpand--')
set(h,'tooltipstring','Reduce working zone (+5)')
set(h,'callback','radit2d(''expand'')')
h=uicontrol('style','listbox');
set(h,'position',[555 460 70 75])
set(h,'value',1)
set(h,'string','all|direct|wall 1|wall 2|wall 3|wall 4')
set(h,'tooltipstring','Select wall')
set(h,'tag','acouselectbutton')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','radiobutton');
set(h,'position',[565 70 70 20])
set(h,'value',1)
set(h,'string','reflections')
set(h,'tooltipstring','View reflection number')
set(h,'tag','acouselectreflection')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','radiobutton');
set(h,'position',[565 50 70 20])
set(h,'value',0)
set(h,'string','decibels')
set(h,'tooltipstring','View sound power value')
set(h,'tag','acouselectdecibel')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','radiobutton');
set(h,'position',[565 30 70 20])
set(h,'value',0)
set(h,'string','direct')
set(h,'tooltipstring','Add direct sound')
set(h,'tag','acouselectdirect')
set(h,'callback','radit2d(''select'')')
h=uicontrol('style','pushbutton');
set(h,'position',[380 1 20 20])
set(h,'string','S')
set(h,'tooltipstring','Set source position manually')
set(h,'callback','radit2d(''setsourceposition'')')
h=uicontrol('style','pushbutton');
set(h,'position',[400 1 20 20])
set(h,'string','R')
set(h,'tooltipstring','Set receptor position manually')
set(h,'callback','radit2d(''setreceptorposition'')')
h=uicontrol('style','pushbutton');
set(h,'position',[425 1 50 20])
set(h,'string','polar')
set(h,'tooltipstring','Create a polar diagram of receptor received sound')
set(h,'callback','radit2d(''polardiagram'')')
h=uicontrol('style','pushbutton');
set(h,'position',[475 1 40 20])
set(h,'string','scan')
set(h,'tooltipstring','Import room design from a scanned plan')
set(h,'tag','acouanim')
set(h,'callback','radit2d(''scan'')')
h=uicontrol('style','pushbutton');
set(h,'position',[519 1 40 20])
set(h,'string','print')
set(h,'tooltipstring','Print current figure')
set(h,'tag','acouprint')
set(h,'callback','radit2d(''print'')')
h=uicontrol('style','pushbutton');
set(h,'position',[559 1 40 20])
set(h,'string','load')
set(h,'tooltipstring','Load an existing case')
set(h,'tag','acouload')
set(h,'callback','radit2d(''load'')')
h=uicontrol('style','pushbutton');
set(h,'position',[599 1 40 20])
set(h,'string','save')
set(h,'tooltipstring','Save current case')
set(h,'tag','acousave')
set(h,'callback','radit2d(''save'')')
h=uicontrol('style','togglebutton');
set(h,'position',[1 270 20 20])
set(h,'string','M')
set(h,'tooltipstring','Display cursor point coordinates and value')
set(h,'callback','radit2d(''setcursormeasure'')')
h=uicontrol('style','pushbutton');
set(h,'position',[1 250 20 20])
set(h,'string','U')
set(h,'tooltipstring','Undo last topology change')
set(h,'callback','radit2d(''undo'')')
h=uicontrol('style','pushbutton');
set(h,'position',[1 540 20 20])
set(h,'string','?')
set(h,'tooltipstring','get help and examples on the radit2d www site')
set(h,'callback','eval(''web ltas19.meca.ulg.ac.be/radit2d -browser'');')
%create text
ht=text;
set(ht,'tag','acoutext','fontsize',10,'fontname','Times New Roman')
set(ht,'units','normalized','position',[0.5 1.015],'parent',gca,'string','a')
set(ht,'horizontalalignment','center','verticalalignment','bottom')
%create figure userdata
ud.name='not saved';
ud.height=zdi;
ud.gsize=gsize;
ud.xlim=[0 zdi];
ud.ylim=[-zdi/2 zdi/2];
ud.Lw=100;
ud.Hr=0;
ud.lastaction='';
ud.colormap='color';
ud.climmode='auto';
ud.clim=[0 100];
ud.displayvalue='reflection';
ud.undo=[];
set(hfig,'userdata',ud)
%refresh figure
changegrid(gsize)
acouview
refreshsurfaceposition
checkroomconvexity
refreshimages
setlayer
refreshsurfacevalues
selectvalue
hidegrid
refreshwallmenu
saveundo
return
%=========================================================================
function [] = setactivewall
%determine button pressed
if ~strcmpi(get(gcf,'selectiontype'),'normal'),
return
end
%get object handle
ha=findobj('tag','acouaxes','parent',gcf);
hw=flipud(findobj('tag','acouwall','parent',ha));
ii=find(hw==gcbo);
if ~isempty(ii),
hb=findobj('tag','acouselectbutton','parent',gcf);
set(hb,'value',ii+2)
selectvalue
end
return
%=========================================================================
function [] = setlayer
%get object handle
ha=findobj('tag','acouaxes','parent',gcf);
hch0=get(ha,'children');
hso=findobj('tag','acousource','parent',ha);
hre=findobj('tag','acoureceptor','parent',ha);
hxa=findobj('tag','acouXaxis','parent',ha);
hya=findobj('tag','acouYaxis','parent',ha);
hw=findobj('tag','acouwall','parent',ha);
hwv=findobj('tag','acouwallvertex','parent',ha);
hae=findobj('tag','acouaudienceedge','parent',ha);
hav=findobj('tag','acouaudiencevertex','parent',ha);
hi=findobj('tag','acouimage','parent',ha);
hr=findobj('tag','acouradius','parent',ha);
hgr=findobj('tag','acougrid','parent',ha);
hsu=findobj('tag','acouaudiencesurface','parent',ha);
ht=findobj('tag','acoutext','parent',ha);
hmt=findobj('tag','acoumeasuretext','parent',ha);
%set order counterclockwise
nwall=length(hw);
i=1;
ind(1)=nwall;
while i < nwall,
ud=get(hw(ind(i)),'userdata');
con=ud.con;
h2=con(2);
ud=get(h2,'userdata');
con=ud.con;
hw2=con(2);
ii=find(hw == hw2);
i=i+1;
ind(i)=ii;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -