comparison +parametrization/Curve.m @ 248:81e0ead29431 feature/beams

Fixed package names in +parametrization
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 05 Sep 2016 16:34:22 +0200
parents 3a3cf386bb7e
children 0fd4b259af9e
comparison
equal deleted inserted replaced
247:c2ca9717db4d 248:81e0ead29431
22 assert(all(size(p_test) == [2,1]), 'A curve parametrization must return a 2x1 vector.'); 22 assert(all(size(p_test) == [2,1]), 'A curve parametrization must return a 2x1 vector.');
23 23
24 if ~isempty(transformation) 24 if ~isempty(transformation)
25 transformation.base_g = g; 25 transformation.base_g = g;
26 transformation.base_gp = gp; 26 transformation.base_gp = gp;
27 [g,gp] = grid.Curve.transform_g(g,gp,transformation); 27 [g,gp] = parametrization.Curve.transform_g(g,gp,transformation);
28 end 28 end
29 29
30 obj.g = g; 30 obj.g = g;
31 obj.gp = gp; 31 obj.gp = gp;
32 obj.transformation = transformation; 32 obj.transformation = transformation;
104 arcPar = @(s) tFunc(s*L); 104 arcPar = @(s) tFunc(s*L);
105 105
106 % New function and derivative 106 % New function and derivative
107 g_new = @(t)obj.g(arcPar(t)); 107 g_new = @(t)obj.g(arcPar(t));
108 gp_new = @(t) normalize(obj.gp(arcPar(t))); 108 gp_new = @(t) normalize(obj.gp(arcPar(t)));
109 curve = grid.Curve(g_new,gp_new); 109 curve = parametrization.Curve(g_new,gp_new);
110 110
111 end 111 end
112 112
113 % how to make it work for methods without returns 113 % how to make it work for methods without returns
114 function p = subsref(obj,S) 114 function p = subsref(obj,S)
129 129
130 %% TRANSFORMATION OF A CURVE 130 %% TRANSFORMATION OF A CURVE
131 function D = reverse(C) 131 function D = reverse(C)
132 % g = C.g; 132 % g = C.g;
133 % gp = C.gp; 133 % gp = C.gp;
134 % D = grid.Curve(@(t)g(1-t),@(t)-gp(1-t)); 134 % D = parametrization.Curve(@(t)g(1-t),@(t)-gp(1-t));
135 D = C.transform([],[],-1); 135 D = C.transform([],[],-1);
136 end 136 end
137 137
138 function D = transform(C,A,b,flip) 138 function D = transform(C,A,b,flip)
139 default_arg('A',[1 0; 0 1]); 139 default_arg('A',[1 0; 0 1]);
155 transformation.A = A*A_old; 155 transformation.A = A*A_old;
156 transformation.b = A*b_old + b; 156 transformation.b = A*b_old + b;
157 transformation.flip = flip*flip_old; 157 transformation.flip = flip*flip_old;
158 end 158 end
159 159
160 D = grid.Curve(g,gp,transformation); 160 D = parametrization.Curve(g,gp,transformation);
161 161
162 end 162 end
163 163
164 function D = translate(C,a) 164 function D = translate(C,a)
165 g = C.g; 165 g = C.g;
169 % x = g(t); 169 % x = g(t);
170 % v(1,:) = x(1,:)+a(1); 170 % v(1,:) = x(1,:)+a(1);
171 % v(2,:) = x(2,:)+a(2); 171 % v(2,:) = x(2,:)+a(2);
172 % end 172 % end
173 173
174 % D = grid.Curve(@g_fun,gp); 174 % D = parametrization.Curve(@g_fun,gp);
175 175
176 D = C.transform([],a); 176 D = C.transform([],a);
177 end 177 end
178 178
179 function D = mirror(C, a, b) 179 function D = mirror(C, a, b)
204 204
205 % function v = gp_fun(t) 205 % function v = gp_fun(t)
206 % v = A*gp(t); 206 % v = A*gp(t);
207 % end 207 % end
208 208
209 % D = grid.Curve(@g_fun,@gp_fun); 209 % D = parametrization.Curve(@g_fun,@gp_fun);
210 210
211 % g = A(g-a)+a = Ag - Aa + a; 211 % g = A(g-a)+a = Ag - Aa + a;
212 b = - A*a + a; 212 b = - A*a + a;
213 D = C.transform(A,b); 213 D = C.transform(A,b);
214 214
235 235
236 % function v = gp_fun(t) 236 % function v = gp_fun(t)
237 % v = A*gp(t); 237 % v = A*gp(t);
238 % end 238 % end
239 239
240 % D = grid.Curve(@g_fun,@gp_fun); 240 % D = parametrization.Curve(@g_fun,@gp_fun);
241 241
242 242
243 % g = A(g-a)+a = Ag - Aa + a; 243 % g = A(g-a)+a = Ag - Aa + a;
244 b = - A*a + a; 244 b = - A*a + a;
245 D = C.transform(A,b); 245 D = C.transform(A,b);
266 v(1,:) = p1(1) + t.*(p2(1)-p1(1)); 266 v(1,:) = p1(1) + t.*(p2(1)-p1(1));
267 v(2,:) = p1(2) + t.*(p2(2)-p1(2)); 267 v(2,:) = p1(2) + t.*(p2(2)-p1(2));
268 end 268 end
269 g = @g_fun; 269 g = @g_fun;
270 270
271 obj = grid.Curve(g); 271 obj = parametrization.Curve(g);
272 end 272 end
273 273
274 function obj = circle(c,r,phi) 274 function obj = circle(c,r,phi)
275 default_arg('phi',[0; 2*pi]) 275 default_arg('phi',[0; 2*pi])
276 default_arg('c',[0; 0]) 276 default_arg('c',[0; 0])
286 w = phi(1)+t*(phi(2)-phi(1)); 286 w = phi(1)+t*(phi(2)-phi(1));
287 v(1,:) = -(phi(2)-phi(1))*r*sin(w); 287 v(1,:) = -(phi(2)-phi(1))*r*sin(w);
288 v(2,:) = (phi(2)-phi(1))*r*cos(w); 288 v(2,:) = (phi(2)-phi(1))*r*cos(w);
289 end 289 end
290 290
291 obj = grid.Curve(@g_fun,@g_fun_deriv); 291 obj = parametrization.Curve(@g_fun,@g_fun_deriv);
292 end 292 end
293 293
294 function obj = bezier(p0, p1, p2, p3) 294 function obj = bezier(p0, p1, p2, p3)
295 function v = g_fun(t) 295 function v = g_fun(t)
296 v(1,:) = (1-t).^3*p0(1) + 3*(1-t).^2.*t*p1(1) + 3*(1-t).*t.^2*p2(1) + t.^3*p3(1); 296 v(1,:) = (1-t).^3*p0(1) + 3*(1-t).^2.*t*p1(1) + 3*(1-t).*t.^2*p2(1) + t.^3*p3(1);
300 function v = g_fun_deriv(t) 300 function v = g_fun_deriv(t)
301 v(1,:) = 3*(1-t).^2*(p1(1)-p0(1)) + 6*(1-t).*t*(p2(1)-p1(1)) + 3*t.^2*(p3(1)-p2(1)); 301 v(1,:) = 3*(1-t).^2*(p1(1)-p0(1)) + 6*(1-t).*t*(p2(1)-p1(1)) + 3*t.^2*(p3(1)-p2(1));
302 v(2,:) = 3*(1-t).^2*(p1(2)-p0(2)) + 6*(1-t).*t*(p2(2)-p1(2)) + 3*t.^2*(p3(2)-p2(2)); 302 v(2,:) = 3*(1-t).^2*(p1(2)-p0(2)) + 6*(1-t).*t*(p2(2)-p1(2)) + 3*t.^2*(p3(2)-p2(2));
303 end 303 end
304 304
305 obj = grid.Curve(@g_fun,@g_fun_deriv); 305 obj = parametrization.Curve(@g_fun,@g_fun_deriv);
306 end 306 end
307 307
308 308
309 function [g_out,gp_out] = transform_g(g,gp,tr) 309 function [g_out,gp_out] = transform_g(g,gp,tr)
310 A = tr.A; 310 A = tr.A;