Mercurial > repos > public > sbplib
diff +parametrization/Ti.m @ 425:e56dbd9e4196 feature/grids
Merge feature/beams
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 07 Feb 2017 16:09:02 +0100 |
parents | 875386d0b2ff |
children | 433ccb5d2f0f |
line wrap: on
line diff
--- a/+parametrization/Ti.m Tue Feb 07 15:47:51 2017 +0100 +++ b/+parametrization/Ti.m Tue Feb 07 16:09:02 2017 +0100 @@ -36,6 +36,8 @@ obj.S = @S_fun; end + % Does this funciton make sense? + % Should it always be eval? function [X,Y] = map(obj,u,v) default_arg('v',u); @@ -65,6 +67,19 @@ end end + % Evaluate S for each pair of u and v, + % Return same shape as u + function [x, y] = eval(obj, u, v) + x = zeros(size(u)); + y = zeros(size(u)); + + for i = 1:numel(u) + p = obj.S(u(i), v(i)); + x(i) = p(1,:); + y(i) = p(2,:); + end + end + function h = plot(obj,nu,nv) S = obj.S; @@ -119,7 +134,7 @@ new_gs{i} = gs{i}.translate(a); end - ti = grid.Ti(new_gs{:}); + ti = parametrization.Ti(new_gs{:}); end % Mirrors the Ti so that the resulting Ti is still left handed. @@ -134,7 +149,7 @@ new_gs{2} = gs{4}.mirror(a,b).reverse(); new_gs{4} = gs{2}.mirror(a,b).reverse(); - ti = grid.Ti(new_gs{:}); + ti = parametrization.Ti(new_gs{:}); end function ti = rotate(obj,a,rad) @@ -144,7 +159,7 @@ new_gs{i} = gs{i}.rotate(a,rad); end - ti = grid.Ti(new_gs{:}); + ti = parametrization.Ti(new_gs{:}); end function ti = rotate_edges(obj,n); @@ -153,18 +168,35 @@ new_i = mod(i - n,4); new_gs{new_i+1} = obj.gs{i+1}; end - ti = grid.Ti(new_gs{:}); + ti = parametrization.Ti(new_gs{:}); end end methods(Static) function obj = points(p1, p2, p3, p4) - g1 = grid.Curve.line(p1,p2); - g2 = grid.Curve.line(p2,p3); - g3 = grid.Curve.line(p3,p4); - g4 = grid.Curve.line(p4,p1); + g1 = parametrization.Curve.line(p1,p2); + g2 = parametrization.Curve.line(p2,p3); + g3 = parametrization.Curve.line(p3,p4); + g4 = parametrization.Curve.line(p4,p1); + + obj = parametrization.Ti(g1,g2,g3,g4); + end - obj = grid.Ti(g1,g2,g3,g4); + % Like the constructor but allows inputing line curves as 2-cell arrays: + % example: parametrization.Ti.linesAndCurves(g1, g2, {a, b} g4) + function obj = linesAndCurves(C1, C2, C3, C4) + C = {C1, C2, C3, C4}; + c = cell(1,4); + + for i = 1:4 + if ~iscell(C{i}) + c{i} = C{i}; + else + c{i} = parametrization.Curve.line(C{i}{:}); + end + end + + obj = parametrization.Ti(c{:}); end function label(varargin) @@ -190,11 +222,11 @@ ti.show(2,2); - grid.place_label(pc,str); - grid.place_label(pw,'w'); - grid.place_label(pe,'e'); - grid.place_label(ps,'s'); - grid.place_label(pn,'n'); + parametrization.place_label(pc,str); + parametrization.place_label(pw,'w'); + parametrization.place_label(pe,'e'); + parametrization.place_label(ps,'s'); + parametrization.place_label(pn,'n'); end end end