Mercurial > repos > public > sbplib
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; |