Filament types code example
Jump to navigation
Jump to search
This code exemplifies the geometry and syntax of different filament types.
% We construct a set of fake points:
points = [1:10:100;1:10:100;1:10:100]';
%%
% we create four filaments of different types
pathFilament = dmodels.filamentWithTorsion();
helixFilament = dmodels.filamentSubunitsInHelix();
ringFilament = dmodels.filamentRings();
randomFilament = dmodels.filament();
% the names on the left are arbitrarily chosen variable names.
% the names on the right are the functions (actually class constructors)
% that we are invoking
%%
% we provide parameters for the individual geometries:
% filament with subunits on path. Radius is not required.
pathFilament.subunits_dphi = 60; % changes the x axis of successive subunits
pathFilament.subunits_dz = 10;
% helical path of filament
helixFilament.radius = 20;
helixFilament.subunits_dphi = 5;
helixFilament.subunits_dz = 1;
% rings
ringFilament.radius = 20; % distance of subunits to center
ringFilament.ringSeparation = 30; % distance between rings
ringFilament.subunitsPerRing = 16; % subunits on each ring
% filament: points randomly organized on the filament walls
randomFilament.radius = 20;
randomFilament.mesh_parameter = 15;
randomFilament.crop_mesh_parameter = 30; % a mean distance between particles of 30 pixels
%%
% we create a figure to depict
figure(1);clf;
% loops on each model
% we create a cell array variable containing all models so that we can loop on it
f = {pathFilament,helixFilament,ringFilament,randomFilament};
for i=1:length(f);
% provides the same points to each filament type
f{i}.points = points;
% creates a backbone
f{i}.backboneUpdate();
% creates the crop points
f{i}.updateCrop();
% creates a subplot for each model
h = subplot(1,4,i); % array of 1 row and 4 columns
f{i}.plotPoints(h,'refresh',false,'hold_limits',false); % plots points delivered by the user
%f{i}.plotTablePoints(h,'refresh',false,'hold_limits',false); % plots computed table Points
f{i}.plotTableSketch(h,'refresh',false,'hold_limits',true); % plots computed table directions
% sets as title of each plot the class of the filament
title(class(f{i}));
axis(h,'equal');
axis(h,[-20,120,-20,120,-20,120]); % visualization limits
drawnow; % updates the plot
end
set(gcf,'Name','Filament types in Dynamo');