from
Uniform Sampling of a Sphere
by Anton Semechko
Create an approximately uniform triangular tessellation of a unit sphere
|
| TR=SubdivideSphericalMesh(TR,k)
|
function TR=SubdivideSphericalMesh(TR,k)
% Subdivide triangular mesh representing the surface of the unit sphere
% k times using triangular quadrisection (see function TriQuad for more
% info). The newly inserted vertices are re-projected onto the unit sphere
% after every iteration.
%
% INPUT ARGUMENTS:
% - TR : input mesh. TR can must be specified as a TriRep object.
% - k : desired number of subdivisions. k=0 is default.
%
% OUTPUT:
% - TR : subdivided mesh. Same format as input.
%
% AUTHOR: Anton Semechko (a.semechko@gmail.com)
% DATE: June.2012
%
if nargin<2 || isempty(k), k=0; end
if k==0, return; end
for i=1:k
% Subdivide the mesh
TR=TriQuad(TR);
% Project the points onto the surface of the unit sphere
x=TR.X;
x_L2=sqrt(sum(x.^2,2));
x=bsxfun(@rdivide,x,x_L2);
TR=TriRep(TR.Triangulation,x);
end
|
|
Contact us