Overview
Comment: | Initial revision |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
8024abf9e95c15208ed963a170e7e73b |
User & Date: | gawthrop@users.sourceforge.net on 1996-08-05 18:12:25 |
Other Links: | branch diff | manifest | tags |
Context
1996-08-05
| ||
18:44:56 | Now writes out a _cbg file without ----- symbol. check-in: ee2547fd0c user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
18:12:25 | Initial revision check-in: 8024abf9e9 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
15:41:41 | Now recursively does causality on subsystems. check-in: 0476f9f152 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Added mttroot/mtt/bin/trans/m/cbg2fig.m version [b284843cfc].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 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 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 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | function cbg2fig(bonds, cbonds, rbonds, ... rcomponents, status, systemname, ... stroke_length, stroke_thickness, stroke_colour, ... comp_font, comp_colour_u, comp_colour_o, ... filename) % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%% Model Transformation Tools %%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Matlab function cbg_m2fig % Causal bond graph: mfile format to fig file format % The resultant fig file is the original _abg.fig with % additional causal strokes superimposed. % % P.J.Gawthrop May 1996 % Copyright (c) P.J.Gawthrop, 1996. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Check sizes [N_components,Columns] = size(rcomponents); if (Columns ~= 13) error('Incorrect rcomponents matrix: must have 13 columns'); end; M_components = Columns; if nargin<7 stroke_length = 20; end; if nargin<8 stroke_thickness = 2; end; if nargin<9 stroke_colour = 1; %Blue end; if nargin<10 comp_font = 18; %Helvetica bold end; if nargin<11 comp_colour_u = 12; %Green end; if nargin<12 comp_colour_o = 4; %Red end; if nargin<13 filename = 'stdout'; end; % Rotation matrix rot = [0 -1; 1 0]; % Determine coordinates of the arrow end of the bond and the other end % and other geometry other_end_1 = rbonds(:,1:2); arrow_end = rbonds(:,3:4); other_end_2 = rbonds(:,5:6); distance_1 = length2d(other_end_1 - arrow_end); distance_2 = length2d(other_end_2 - arrow_end); 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_barb = which_end.*other_end_2 + (one-which_end).*other_end_1; arrow_vector = arrow_barb-arrow_end; unit_arrow_vector = arrow_vector./(length2d(arrow_vector)*[1 1]); bond_vector = (arrow_end - other_end); unit_bond_vector = bond_vector./(length2d(bond_vector)*[1 1]); unit_stroke_vector = (rot*unit_bond_vector')'; % Get indices of bonds with changed causality changed_e = bonds(:,1)~=cbonds(:,1); changed_f = bonds(:,2)~=cbonds(:,2); changed = changed_e|changed_f; index_e = getindex(changed_e,1)'; index_f = getindex(changed_f,1)'; index = getindex(changed,1)'; % Print the new strokes in fig format if index(1,1)>0 for i = index_e % Do the effort stroke - opp. side to arrow if cbonds(i,1)==1 % Stroke at arrow end stroke_end_1 = arrow_end(i,:); else stroke_end_1 = other_end(i,:); end; sig = sign(unit_arrow_vector(i,:)*unit_stroke_vector(i,:)'); stroke_end_2 = stroke_end_1 - stroke_length*sig*unit_stroke_vector(i,:); %print the fig3 format firstline spec. polyline = 2; firstline = fig3(polyline,stroke_thickness,stroke_colour); fprintf(filename, '%s\n', firstline); fprintf(filename, ' %4.0f %4.0f %4.0f %4.0f \n', ... stroke_end_1(1), stroke_end_1(2), ... stroke_end_2(1), stroke_end_2(2) ); end; for i = index_f % Do the flow stroke - same side as arrow if cbonds(i,2)==1 % Stroke at arrow end stroke_end_1 = arrow_end(i,:); else stroke_end_1 = other_end(i,:); end; sig = sign(unit_arrow_vector(i,:)*unit_stroke_vector(i,:)'); stroke_end_2 = stroke_end_1 + stroke_length*sig*unit_stroke_vector(i,:); %print the fig3 format firstline spec. polyline = 2; firstline = fig3(polyline,stroke_thickness,stroke_colour); fprintf(filename, '%s\n', firstline); fprintf(filename, ' %4.0f %4.0f %4.0f %4.0f \n', ... stroke_end_1(1), stroke_end_1(2), ... stroke_end_2(1), stroke_end_2(2) ); end; end; % Print all the components - coloured acording to causality. for i = 1:N_components fig_params = rcomponents(i,3:M_components); coords = rcomponents(i,1:2); if status(i)==-1 %Then under causal fig_params(3) = comp_colour_u; fig_params(6) = comp_font; end; if status(i)==1 %Then over causal fig_params(3) = comp_colour_o; fig_params(6) = comp_font; end; %Now print the component in fig format eval(['[comp_type,comp_name] = ', systemname, '_cmp(i);']); Terminator = '\\001'; for j = 1:length(fig_params) fprintf(filename, '%1.0f ', fig_params(j)); end; fprintf(filename, '%1.0f %1.0f ', coords(1), coords(2)); % don't print the auto-numbered labels fprintf(filename, '%s:%s%s\n', comp_type, comp_name, Terminator); end; |