Non-Uniform Rational B-Spline (NURBS) prototype definitions.
Original blaxxun definitions heavily modified, X3D specification revisions by Don Brutzman, Charles Adams, Jeffrey Weekley and Alan Shaffer NPS.
Under development for final version of X3D NURBS nodes
Not all NURBS nodes are prototyped here, and these implementations are not yet fully demonstrated.
Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html
X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit
Contour2D groups a set of curve segments to a composite contour Children segments form a closed loop with first point of first child repeated as last point of last child and last point of segment repeated as first point of consecutive segment Children segments are type NurbsCurve2D or Polyline2D enumerated in consecutive order of contour topology.
ContourPolyline2D defines a linear curve segment as part of a trimming contour in u-v domain of a surface.
CoordinateDouble builds geometry using a set of 3D coordinates. CoordinateDouble is used by IndexedFaceSet IndexedLineSet LineSet and PointSet. CoordinateDouble is also used by NurbsPositionInterpolator and NurbsOrientationInterpolator.
Substitute MFVec3f for MFVec3d to provide VRML 97 support
NurbsCurve is a 3D curve analogous to NurbsPatchSurface. The container controlPoint field is a Coordinate or CoordinateDouble node.
"NurbsCurve.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsCurve.class"
NurbsCurve2D defines a trimming segment that is part of trimming contour in u-v domain of surface NurbsCurve2D forming a closed contour may be used as Contour2D node.
NurbsOrientationInterpolator describes a 3D NURBS Curve and outputs interpolated orientation values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.
"NurbsOrientationInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsOrientationInterpolator.class"
NurbsPatchSurface defines a contiguous 3D Non- rational Uniform B-Spline (NURBS) Surface.
"NurbsPatchSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsPatchSurface.class"
NurbsPositionInterpolator describes a 3D NURBS Curve and outputs interpolated position values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.
"NurbsPositionInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsPositionInterpolator.class"
NurbsSet collects a set of NurbsPatchSurface nodes into a common group and treats NurbsPatchSurface set as a unit during tessellation thereby enforcing tessellation continuity along borders.
NurbsSurfaceInterpolator describes a 3D NURBS Curve and outputs interpolated position and normal values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.
"NurbsSurfaceInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsSurfaceInterpolator.class"
NurbsSweptSurface contains a crossSectionCurve [X3DNurbsControlCurveNode] and a trajectoryCurve [NurbsCurve]
"NurbsSweptSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsSweptSurface.class"
NurbsSwungSurface contains a profileCurve [X3DNurbsControlCurveNode] and a trajectoryCurve [X3DNurbsControlCurveNode]
"NurbSwungSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbSwungSurface.class"
NurbsTextureCoordinate describes a 3D NURBS surface in the parametric domain of its surface host specifying mapping of texture onto the surface. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.
ecmascript: function initialize() { //Browser.println ('Sorry, your browser does not support NURBS nodes'); counter = 0; number = 0; localCoordIndex = new MFInt32(); localCoordIndex.length = 2*vDimension * uDimension + uDimension + vDimension; for(v=0; v<vDimension;v++) { for(u=0; u<uDimension;u++) { localCoordIndex[counter] = number; counter++; number++; } localCoordIndex[counter] = -1; counter++; } for(u=0; u<uDimension;u++) { for(v=0; v<vDimension;v++) { localCoordIndex[counter] = v*uDimension + u; counter++; number++; } localCoordIndex[counter] = -1; counter++; } ils.set_coordIndex = localCoordIndex; }
NurbsTrimmedSurface generates texture coordinates from a Non-rational Uniform B-Spline (NURBS) surface.
ecmascript: function initialize() { //Browser.println ('Sorry, your browser does not support NURBS nodes'); counter = 0; number = 0; localCoordIndex = new MFInt32(); localCoordIndexlength = 2*vDimension * uDimension + uDimension + vDimension; for(v=0; v<vDimension;v++) { for(u=0; u<uDimension;u++) { localCoordIndex[counter] = number; counter++; number++; } localCoordIndex[counter] = -1; counter++; } for(u=0; u<uDimension;u++) { for(v=0; v<vDimension;v++) { localCoordIndex[counter] = v*uDimension + u; counter++; number++; } localCoordIndex[counter] = -1; counter++; } ils.set_coordIndex = localCoordIndex; }
"NurbsPrototypes is a" "developmental file for" "Nurbs implementations."