NRBEVAL: Evaluate a NURBS at parametric points. Calling Sequences: [p,w] = nrbeval(crv,ut) [p,w] = nrbeval(srf,{ut,vt}) [p,w] = nrbeval(vol,{ut,vt,wt}) [p,w] = nrbeval(srf,pts) INPUT: crv : NURBS curve, see nrbmak. srf : NURBS surface, see nrbmak. vol : NURBS volume, see nrbmak. ut : Parametric evaluation points along U direction. vt : Parametric evaluation points along V direction. wt : Parametric evaluation points along W direction. pts : Array of scattered points in parametric domain OUTPUT: p : Evaluated points on the NURBS curve, surface or volume as Cartesian coordinates (x,y,z). If w is included on the lhs argument list the points are returned as homogeneous coordinates (wx,wy,wz). w : Weights of the homogeneous coordinates of the evaluated points. Note inclusion of this argument changes the type of coordinates returned in p (see above). Description: Evaluation of NURBS curves, surfaces or volume at parametric points along the U, V and W directions. Either homogeneous coordinates are returned if the weights are requested in the lhs arguments, or as Cartesian coordinates. This function utilises the 'C' interface bspeval. Examples: Evaluate the NURBS circle at twenty points from 0.0 to 1.0 nrb = nrbcirc; ut = linspace(0.0,1.0,20); p = nrbeval(nrb,ut); See also: bspeval Copyright (C) 2000 Mark Spink Copyright (C) 2010 Carlo de Falco Copyright (C) 2010, 2011, 2015 Rafael Vazquez This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
The following code
srf = nrbtestsrf; p = nrbeval(srf,{linspace(0.0,1.0,20) linspace(0.0,1.0,20)}); h = surf(squeeze(p(1,:,:)),squeeze(p(2,:,:)),squeeze(p(3,:,:))); title('Test surface.'); hold off
Produces the following figure
Figure 1 |
---|
Package: nurbs