Overview
Comment:Fixed no causal strokes bug.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | origin/master | trunk
Files: files | file ages | folders
SHA3-256: 00f3f1f154cbeb390a39527e3457c1f3b5477a6bd2824e769356124bc91bc12d
User & Date: gawthrop@users.sourceforge.net on 1996-08-04 18:37:57
Other Links: branch diff | manifest | tags
Context
1996-08-04
20:01:58
Initial revision check-in: 0df907d386 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
18:37:57
Fixed no causal strokes bug. check-in: 00f3f1f154 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
18:30:14
Initial revision check-in: 9395f7dc2d user: gawthrop@users.sourceforge.net tags: origin/master, trunk
Changes

Modified mttroot/mtt/bin/trans/m/rbg2abg.m from [a9cedb476c] to [a25bbbc922].

1
2
3
4
5
6
7



8
9
10
11
12
13
14
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.1  1996/08/04 18:30:14  peter
% %% Initial revision
% %%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


if nargin<5
  infofile='stdout';
end;

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
151









152
153
154
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
151
152
153
154
155
156
157







-
-
-
+
+
+
+






-


-
-
+
+




-
-
-
-
+
+
+
+

-
+

-
-
-
-
+
+
+
+

-
-
+
+

-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+



  % 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;

% Find out location of centre and ends of stroke.
if n_strokes>0
  causality = zeros(n_bonds,2);
% Deduce causality from the strokes (if any).
causality = zeros(n_bonds,2);
if n_strokes>0
  % Find out location of centre and ends of stroke.
  stroke_end_1 = [rstrokes(:,1) rstrokes(:,2)];
  stroke_end_2 = [rstrokes(:,3) rstrokes(:,4)];
  
  stroke_centre = (stroke_end_1 + stroke_end_2)/2;
  stroke_vector = (stroke_end_1 - stroke_end_2);
  stroke_length = length2d(stroke_vector);
end;

% Deduce bond causality from the strokes 
for i = 1:n_strokes
  stroke = [stroke_centre(i,:)
  for i = 1:n_strokes
    stroke = [stroke_centre(i,:) 
    stroke_end_1(i,:)
    stroke_end_2(i,:)];


  % Find the nearest bond end.
  [index,distance] = adjbond(stroke(1,:),arrow_end,other_end);
  if (distance>2*stroke_length(i))
    info = sprintf('Stroke at (%4.3f,%4.3f) is %4.3f away from the nearest bond\n', ...
    % Find the nearest bond end.
    [index,distance] = adjbond(stroke(1,:),arrow_end,other_end);
    if (distance>2*stroke_length(i))
      info = sprintf('Stroke at (%4.3f,%4.3f) is %4.3f away from the nearest bond\n', ...
	stroke(1,1)/scale, stroke(1,2)/scale, distance/scale);
  end;
    end;
  
  % Bond end coordinates
  j = index(1,1);
  which_end = index(1,2)==1;
  bond_end = arrow_end(j,:)*which_end + other_end(j,:)*(1-which_end);
    % Bond end coordinates
    j = index(1,1);
    which_end = index(1,2)==1;
    bond_end = arrow_end(j,:)*which_end + other_end(j,:)*(1-which_end);
  
  % Now decide which bit of the stroke is nearest
  stroke_index = adjbond(bond_end,stroke,zeros(size(stroke)));
    % Now decide which bit of the stroke is nearest
    stroke_index = adjbond(bond_end,stroke,zeros(size(stroke)));
  
  if stroke_index(1)==1 % uni-causal stroke
    causality(j,1:2) = (2*which_end-1)*[1 1];
  else % bicausal stroke
    % Find out whether stroke is on flow side of bond
    stroke_direction = stroke(1,:) - stroke(stroke_index(1),:);
    flow_side = stroke_direction*arrow_vector(j,:)'>0;
    causality(j,1+flow_side) = 2*which_end-1;
  end;
  
    if stroke_index(1)==1 % uni-causal stroke
      causality(j,1:2) = (2*which_end-1)*[1 1];
    else % bicausal stroke
      % Find out whether stroke is on flow side of bond
      stroke_direction = stroke(1,:) - stroke(stroke_index(1),:);
      flow_side = stroke_direction*arrow_vector(j,:)'>0;
      causality(j,1+flow_side) = 2*which_end-1;
    end;
  end;
end;

bonds = causality;


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