Overview
Comment: | Rationalised port ordering. Fixed port bug. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
5bb72d88336aa87c26134802ed4743b3 |
User & Date: | gawthrop@users.sourceforge.net on 1996-11-01 18:01:57 |
Other Links: | branch diff | manifest | tags |
Context
1996-11-01
| ||
20:10:16 | Initial revision check-in: 0f5a9859c9 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
18:01:57 |
Rationalised port ordering. Fixed port bug. check-in: 5bb72d8833 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
14:42:12 | Check correct bonds check-in: 3759b204d0 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/m/rbg2abg.m from [14243645f4] to [e879a1d07f].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function [bonds,components] = rbg2abg(rbonds,rstrokes,rcomponents,rports,infofile) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %% Revision 1.5 1996/08/24 19:21:26 peter % %% More specific error messages. % %% % %% Revision 1.4 1996/08/24 18:00:33 peter % %% Fixed bug with finding ports. % %% % %% Revision 1.3 1996/08/09 08:26:35 peter | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function [bonds,components] = rbg2abg(rbonds,rstrokes,rcomponents,rports,infofile) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %% Revision 1.6 1996/08/25 08:27:14 peter % %% Now checks ports correctely - I hope. % %% % %% Revision 1.5 1996/08/24 19:21:26 peter % %% More specific error messages. % %% % %% Revision 1.4 1996/08/24 18:00:33 peter % %% Fixed bug with finding ports. % %% % %% Revision 1.3 1996/08/09 08:26:35 peter |
︙ | ︙ | |||
26 27 28 29 30 31 32 | if nargin<5 infofile='stdout'; else fnum = fopen(infofile, 'w'); end; % Xfig scaling factor | | | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | if nargin<5 infofile='stdout'; else fnum = fopen(infofile, 'w'); end; % Xfig scaling factor scale = 1200.0/2.54546; % Rotation matrix rot = [0 -1; 1 0]; % Find number of strokes [n_strokes,columns] = size(rstrokes); if (columns ~= 4)&(n_strokes>0) |
︙ | ︙ | |||
63 64 65 66 67 68 69 70 71 | which_end = (distance_1>distance_2)*[1 1]; one = ones(size(which_end)); other_end = which_end.*other_end_1 + (one-which_end).*other_end_2; arrow_vector = ( which_end.*other_end_2 + (one-which_end).*other_end_1 ) - ... 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); | > > > | > > > > > | > > | > | | | | | | < < < < < < < < | < | | | | > > | | > > | | | > | | < < < < | 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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | which_end = (distance_1>distance_2)*[1 1]; one = ones(size(which_end)); other_end = which_end.*other_end_1 + (one-which_end).*other_end_2; arrow_vector = ( which_end.*other_end_2 + (one-which_end).*other_end_1 ) - ... arrow_end; % Locate the bond end nearest to each port % col 1 of port_near_bond contains a signed bond number (+ for arrow end) % col 2 of port_near_bond contains the corresponding port number for i = 1:n_ports near_bond = adjbond(rports(i,1:2),arrow_end,other_end); signed_bond = near_bond(1)*sign(1.5-near_bond(2)) port_near_bond(i,:) = [signed_bond, rports(i,3)]; end; % Locate the components at the ends of each bond % col 1 of comp_near_bond contain the component nearest to the arrow end % col 2 of comp_near_bond contain the component nearest to the other end 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 % There are n bonds on this component with corresponding index [index,n] = getindex(comp_near_bond,i); % Error message in case we need it! port_error = sprintf(... 'Component at (%1.3f,%1.3f) has inconsistent port numbers', ... rcomponents(i,1)/scale, rcomponents(i,2)/scale); if index(1,1) ~= 0 % Then its a genuine component % Create the signed list of bonds on this component one = ones(n,1); bond_list = index(:,1); % bond at component bond_end = index(:,2); % which end of bond at component? direction = -sign(bond_end-1.5*one); signed_bond_list = bond_list.*direction; % Default sort of bonds (ie no change) sort_index = [1:n]'; if n_ports>0 % then there are some numbered ports % so find those associated with the bonds on this component. k=0; port_number=[]; for j = 1:n b = signed_bond_list(j); % Find the port on component end of bond (if any) [port_index,m] = getindex(port_near_bond(:,1),b); if m==1 k=k+1; port_number(k,1) = port_near_bond(port_index,2); end; end; % Must have a lable for each port or non at all if k==n % Then a full set of port numbers [sorted,sort_index]=sort(port_number); %Check that all the numbers (1..n) are there if sum(sorted==[1:n]')~=n % There is something wrong mtt_info(port_error,fnum); mtt_info(sprintf('\t it must have ports from 1:%1.0f\n', n), ... fnum); end; else if k~=0 mtt_info(port_error,fnum); mtt_info(sprintf('\t it must have 0 or %1.0f ports\n', n), fnum); end; end; end; end; % Write out bond list sorted by port number (if any) for j = 1:length(sort_index) jj = sort_index(j); components(i,j) = signed_bond_list(jj); end; end; |
︙ | ︙ |