Overview
Comment:Fixed bug with finding ports.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | origin/master | trunk
Files: files | file ages | folders
SHA3-256: 328344eb50ba744ac74fae8551869dbdc795ae2c901dc5549c97f29e1b3af88c
User & Date: gawthrop@users.sourceforge.net on 1996-08-24 18:00:33
Other Links: branch diff | manifest | tags
Context
1996-08-24
18:02:25
Initial revision check-in: fd47e5d964 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
18:00:33
Fixed bug with finding ports. check-in: 328344eb50 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
17:57:41
Removed `touch mtt_info.txt' check-in: c4d8ee5f6c user: gawthrop@users.sourceforge.net tags: origin/master, trunk
Changes

Modified mttroot/mtt/bin/trans/m/rbg2abg.m from [e1acd5df94] to [2f3ab8ea62].

1
2
3
4
5
6
7



8
9
10
11
12
13
14
15
16
17
18


19
20
21
22
23
24
25
function [bonds,components] = rbg2abg(rbonds,rstrokes,rcomponents,rports,infofile)

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$



% %% Revision 1.2  1996/08/04 18:37:57  peter
% %% Fixed  no causal strokes bug.
% %%
% %% Revision 1.1  1996/08/04 18:30:14  peter
% %% Initial revision
% %%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


if nargin<5
  infofile='stdout';


end;

% Xfig scaling factor
scale = 1200.0;

%Rotation matrix
rot = [0 -1; 1 0];







>
>
>











>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function [bonds,components] = rbg2abg(rbonds,rstrokes,rcomponents,rports,infofile)

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$
% %% Revision 1.3  1996/08/09 08:26:35  peter
% %% Cosmetic tidy up.
% %%
% %% Revision 1.2  1996/08/04 18:37:57  peter
% %% Fixed  no causal strokes bug.
% %%
% %% Revision 1.1  1996/08/04 18:30:14  peter
% %% Initial revision
% %%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


if nargin<5
  infofile='stdout';
else
  fnum = fopen(infofile, 'w');
end;

% Xfig scaling factor
scale = 1200.0;

%Rotation matrix
rot = [0 -1; 1 0];
56
57
58
59
60
61
62

63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
    arrow_end;
 
% Locate the bond end nearest to each port
for i = 1:n_ports
  near_bond = adjbond(rports(i,1:2),arrow_end,other_end);
  port_near_bond(i,:) = [near_bond, rports(i,3)];
end;


% Locate the components at the ends of each bond
for i = 1:n_bonds
  comp_near_bond(i,:) = adjcomp(arrow_end(i,:),other_end(i,:),rcomponents);
end;


% Produce a list of bonds on each component - sorted if explicit port numbers
for i = 1:n_components
  [index,n] = getindex(comp_near_bond,i);

  if index(1,1) ~= 0 % Then its a genuine component 
    one = ones(n,1);
    bond_list = index(:,1);
    
    % Default sort of bonds (ie no change)
    sort_index = [1:n]'; 
    
    if n_ports>0
      % Are the component ports numbered? (either they all are or none are)
      k=0;
      for j = 1:n
	[port_index,m] = getindex(port_near_bond(:,1),bond_list(j));
	if m==1 % exactly one number on this bond
	  if index(j,2)==port_near_bond(port_index,2) % same end
	    k=k+1;
	    port_number(k,1) = port_near_bond(port_index,3);
	  end;
	end;
      end;
      
      % Must have a lable for each port or non at all
      if k==n
	[junk,sort_index]=sort(port_number);
      elseif k~=0
	info = sprintf(... 
	    'Component at (%1.3f,%1.3f) has inconsistent port numbers', ...
	    rcomponents(i,1)/scale, rcomponents(i,2)/scale);
	mtt_info(info,infofile);
      end;
    end;
  end;

  % direction is 1 if arrow at component else -1
  direction = -sign(index(:,2)-1.5*one);
  signed_bond_list = bond_list.*direction;







>





>







|








|







|







|







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
    arrow_end;
 
% Locate the bond end nearest to each port
for i = 1:n_ports
  near_bond = adjbond(rports(i,1:2),arrow_end,other_end);
  port_near_bond(i,:) = [near_bond, rports(i,3)];
end;
port_near_bond

% Locate the components at the ends of each bond
for i = 1:n_bonds
  comp_near_bond(i,:) = adjcomp(arrow_end(i,:),other_end(i,:),rcomponents);
end;
comp_near_bond

% Produce a list of bonds on each component - sorted if explicit port numbers
for i = 1:n_components
  [index,n] = getindex(comp_near_bond,i);

  if index(1,1) ~= 0 % Then its a genuine component 
    one = ones(n,1);
    bond_list = index(:,1); % either end of bond at component
    
    % Default sort of bonds (ie no change)
    sort_index = [1:n]'; 
    
    if n_ports>0
      % Are the component ports numbered? (either they all are or none are)
      k=0;
      for j = 1:n
	[port_index,m] = getindex(port_near_bond(:,1:2),bond_list(j));
	if m==1 % exactly one number on this bond
	  if index(j,2)==port_near_bond(port_index,2) % same end
	    k=k+1;
	    port_number(k,1) = port_near_bond(port_index,3);
	  end;
	end;
      end;

      % Must have a lable for each port or non at all
      if k==n
	[junk,sort_index]=sort(port_number);
      elseif k~=0
	info = sprintf(... 
	    'Component at (%1.3f,%1.3f) has inconsistent port numbers', ...
	    rcomponents(i,1)/scale, rcomponents(i,2)/scale);
	mtt_info(info,fnum);
      end;
    end;
  end;

  % direction is 1 if arrow at component else -1
  direction = -sign(index(:,2)-1.5*one);
  signed_bond_list = bond_list.*direction;
154
155
156
157
158
159
160

      flow_side = stroke_direction*arrow_vector(j,:)'>0;
      causality(j,1+flow_side) = 2*which_end-1;
    end;
  end;
end;

bonds = causality;








>
161
162
163
164
165
166
167
168
      flow_side = stroke_direction*arrow_vector(j,:)'>0;
      causality(j,1+flow_side) = 2*which_end-1;
    end;
  end;
end;

bonds = causality;
fclose(fnum);


MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]