rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
porsche_circle_x3_y3_get_eq_constr.m
1 function eq_constr = porsche_circle_x3_y3_get_eq_constr(model)
2 %function eq_constr = porsche_circle_get_eq_constr(model)
3 %
4 % !!! DOKU SCHREIBEN !!!
5 %
6 % Oliver Zeeb, 01.06.2011
7 
8 if isfield(model.optimization,'constraint_circle_radius')
9  R=model.optimization.constraint_circle_radius;
10 else
11  disp('field model.optimization.constraint_circle_radius does not exist!')
12  disp('--> no radius for the constraint circle given! Using R=10...')
13  R=10;
14 end
15 
16 if ~isfield(model.optimization,'constraint_circle_midpoint')
17  disp('field model.optimization.constraint_circle_midpoint does not exist!')
18  disp('Using x_midpoint=model.pmacro(3,1), y_midpoint=model.pmacro(3,2)')
19  model.optimization.constraint_circle_midpoint(1) = model.pmacro(3,1);
20  model.optimization.constraint_circle_midpoint(2) = model.pmacro(3,2);
21 end
22 
23 
24 
25 % n Neben-Bed: punkte aus model.mu_names auf kreis um radius r_n
26 x_ind=0;
27 y_ind=0;
28 for k=1:length(model.mu_names)
29  position_in_pmacro = str2double(model.mu_names{k}(2));
30  x_or_y = model.mu_names{k}(1);
31  if x_or_y == 'x'
32  x_ind = x_ind+1;
33  x(x_ind) = getfield(model, model.mu_names{k});
34  %x_fix(x_ind) = model.pmacro(position_in_pmacro,1);
35  x_fix(x_ind) = model.optimization.constraint_circle_midpoint(1);
36  elseif x_or_y == 'y'
37  y_ind = y_ind+1;
38  y(y_ind) = getfield(model, model.mu_names{k});
39  %y_fix(y_ind) = model.pmacro(position_in_pmacro,2);
40  y_fix(x_ind) = model.optimization.constraint_circle_midpoint(2);
41  else
42  error('unknown entry in model.mu_names');
43  end
44 end
45 
46 x_diff_sqr = (x-x_fix).^2;
47 y_diff_sqr = (y-y_fix).^2;
48 r_sqr = (R*ones(1,length(x_diff_sqr))).^2;
49 
50 eq_constr = x_diff_sqr + y_diff_sqr - r_sqr;
51 
52 
53