function sol = ann(V,gb) %gb = graph bounds ms = 20; % this is the 'MarkerSize' for the crystals t= V(1); M=zeros(12,3); for i=1:13, start = 3*(i-1) + 2; M(i,1:3) = V(start:start+2); end p3 = M(:,1); p2 = M(:,2); p1 = M(:,3); % Spline curve for annulus B = [ ... 4 1 0 0 0 1 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 1 0 0 0 1 4]; x = [p1(4) p1(5) p1(6) p1(7) p1(8) p1(9)]'; y = [p2(4) p2(5) p2(6) p2(7) p2(8) p2(9)]'; z = [p3(4) p3(5) p3(6) p3(7) p3(8) p3(9)]'; bx = 3*[x(2)-x(6) x(3)-x(1) x(4)-x(2) x(5)-x(3) x(6)-x(4) x(1)-x(5)]'; by = 3*[y(2)-y(6) y(3)-y(1) y(4)-y(2) y(5)-y(3) y(6)-y(4) y(1)-y(5)]'; bz = 3*[z(2)-z(6) z(3)-z(1) z(4)-z(2) z(5)-z(3) z(6)-z(4) z(1)-z(5)]'; invB = inv(B); Dx = invB*(bx) ; Dy = invB*(by); Dz = invB*(bz); xmatrix = coeffmatrix(x,Dx); ymatrix = coeffmatrix(y,Dy); zmatrix = coeffmatrix(z,Dy); for i=1:6 xval(i,:) = xmatrix(i,:); yval(i,:) = ymatrix(i,:); zval(i,:) = zmatrix(i,:); end t = 0:.1:1; for i = 1:6 fx(i,:) = polyval(xval(i,:),t); fy(i,:) = polyval(yval(i,:),t); fz(i,:) = polyval(zval(i,:),t); end % plot crystals and color appropriately % plot connecting lines % plot spline curve for annulus subplot(1,2,1); plot3(p1(1:2),p2(1:2),p3(1:2),'g.', ... % pap crystals p1(3),p2(3),p3(3),'c.', ... % alv crystal p1(4:9),p2(4:9),p3(4:9),'r.', ... % annulus crystals p1(13),p2(13),p3(13),'c.', ... % mid ant leaflet crystal p1(10),p2(10),p3(10),'b.', ... % anterior leaf tip p1(11),p2(11),p3(11),'g.', ... % posterior leaf tip p1(12),p2(12),p3(12),'r.', ... % apex crystal [p1(1) p1(2) p1(3) p1(1)], ... % pap and alv lines [p2(1) p2(2) p2(3) p2(1)], ... [p3(1) p3(2) p3(3) p3(1)],'c-', ... [p1(10) p1(13) p1(7)], ... % ant leaf lines [p2(10) p2(13) p2(7)], ... [p3(10) p3(13) p3(7)],'b-', ... [p1(11),p1(4)], ... % post leaf lines [p2(11),p2(4)], ... [p3(11),p3(4)],'g-', ... fx',fy',fz','r-', ... % annulus spline 'MarkerSize',ms); grid on axis equal xlabel('x') ylabel('y') zlabel('z') title('13 crystals') axis(gb) subplot(1,2,2); plot(fx',fy','r-', ... p1(4:9),p2(4:9),'r.','MarkerSize',ms); grid on axis equal xlabel('x') ylabel('y') title('annulus top view') axis([gb(1) gb(2) gb(3) gb(4)])