www.gusucode.com > pde 案例源码 matlab代码程序 > pde/cardioid1.m
function [x,y] = cardioid1(bs,s) % CARDIOID1 Geometry File defining the geometry of a cardioid. if nargin == 0 x = 4; % four segments in boundary return end if nargin == 1 dl = [0 pi/2 pi 3*pi/2 pi/2 pi 3*pi/2 2*pi 1 1 1 1 0 0 0 0]; x = dl(:,bs); return end x = zeros(size(s)); y = zeros(size(s)); if numel(bs) == 1 % bs might need scalar expansion bs = bs*ones(size(s)); % expand bs end nth = 400; % fine polygon, 100 segments per quadrant th = linspace(0,2*pi,nth); % parametrization r = 2*(1+cos(th)); xt = r.*cos(th); % Points for interpolation of arc lengths yt = r.*sin(th); % Compute parameters corresponding to the arc length values in s th = pdearcl(th,[xt;yt],s,0,2*pi); % th contains the parameters % Now compute x and y for the parameters th r = 2*(1+cos(th)); x(:) = r.*cos(th); y(:) = r.*sin(th);