ILNumerics Ultimate VS

SmoothSurface Class

ILNumerics Ultimate VS Documentation
ILNumerics - Technical Application Development

This class creates a smoothed surface out of scattered data points. It allows to control the Resolution, the surface Margin (extrapolation area around the given points) and the SmoothingFactor.

Out of the provided scattered data points SmoothSurface computes a regular grid via kriging interpolation. In a postprocessing step the grid is smoothed by efficient low-pass filtering (via fast fourier transform).

SmoothSurface can be used like a regular ILNumerics visualization object, directly as a child of Scene.Camera. Or, one may add it to a plot cube to get labeling and all common interactive options.

SmoothSurface is composed out of a regular Surface and an Points shape. The Surface displays the smoothed grid and the Points display the scattered data points. Both objects are accessible by the Surface and PointsOriginal properties, respectively. They can be configured in arbitrary ways, including changing the colormap for the surface, the colors and size of the points, configuring the wireframe, enabling / disabling and configuring light effects.

Kriging interpolation comes with a memory requirement of O(N²). This means, if your input data (point cloud) has n points it will internaly try to create a matrix of n x n single precision floating point values. Make sure to target x64 and/or to limit the number of data points accordingly to allow this memory even for large data.

Another aspect of kriging is its global interpolation method: all data points are considered for each new interpolated value. So, the original points should be 'well suited'. This class together with the Kriging interpolators will perform multiple checks on the data and attempt to remove any disturbing artefacts. But you can help by making sure to provide 'clean' data: don't provide data points laying too close to each other and remove any outliers!

Kriging interpolation is described in more detail here: https://ilnumerics.net/kriging-interpolation-net.html. Note, that this class depends on the ILNumerics.Toolboxes.Interpolation module. (But a license is required for the Drawing2 toolbox only.)

[ILNumerics Drawing2 Toolbox]

Inheritance Hierarchy

SystemObject
  ILNumerics.DrawingNode
    ILNumerics.DrawingGroup
      ILNumerics.Drawing.PlottingSmoothSurface

Namespace:  ILNumerics.Drawing.Plotting
Assembly:  ILNumerics.Toolboxes.Drawing2 (in ILNumerics.Toolboxes.Drawing2.dll) Version: 5.5.0.0 (5.5.7503.3146)
Syntax

public class SmoothSurface : Group

The SmoothSurface type exposes the following members.

Constructors

  NameDescription
Protected methodSmoothSurface
Initializes a new instance of the SmoothSurface class
Public methodSmoothSurface(InArrayDouble, InArrayDouble, Boolean, NullableSizeF, NullableSize, UInt32)
Creates a new SmoothSurface plot.

[ILNumerics Drawing2 Toolbox]

Public methodSmoothSurface(InArraySingle, InArraySingle, Boolean, NullableSizeF, NullableSize, UInt32)
Creates a new SmoothSurface plot.

[ILNumerics Drawing2 Toolbox]

Top
Properties

  NameDescription
Public propertyAlpha
Alpha value, range [0...1], if set, this value modifies the alpha values for ALL nodes of this subtree. Use for blend effects only!

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyAnimations (Inherited from Group.)
Public propertyChildren
Collection of child for this group

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyClipping
Gets all 6 available clipping planes for the group or sets it. Null: derive clipping from parent node (default)

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyColorOverride
If set, this color will override all individual colors in this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyDrawPoints
Whether or not the original points are to be drawn over the interpolated surface.

[ILNumerics Drawing2 Toolbox]

Public propertyID
Unique ID for the node within the scene

[ILNumerics Visualization Engine]

(Inherited from Node.)
Protected propertyIsSynchedNode (Inherited from Node.)
Public propertyMargin
Size (width, height) of the surface edge outside the specified data points. Exrapolation is performed here. Default: 0.1, 0.1

[ILNumerics Drawing2 Toolbox]

Public propertyMarkable
Determines, if this node can be marked by the user

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyMarked
Marked state for the node

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyParent
Get the parent of this node or null, if this node is a root node

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyPickingID
If set to a valid shape ID, that shape will be marked in picking operations insted of this shape.

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyPointsOriginal
Access to the Points shape used for displaying the original data points, if DrawPoints is true.

[ILNumerics Drawing2 Toolbox]

Public propertyResolution
Number of interpolated points along X and Y. Default: 150 x 150.

[ILNumerics Drawing2 Toolbox]

Public propertySmoothingFactor
Determins the degree of smoothing applied to the resulting surface. Number of neighboring grid samples to be included into the computation of a final data point. Default: 0 (no smoothing).

[ILNumerics Drawing2 Toolbox]

Public propertySurface
Gives access to the Surface plot object used for displaying the interpolated result.

[ILNumerics Drawing2 Toolbox]

Protected propertySynchedVersion
The version of the sync source from the last synchronization.

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyTag
Object tag used to identify the node within the scene

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyTarget
If set, determines the target for rendering: world (3D) or screen (2D) on top. Default: not set (derive from parent)

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyTimeoutAware
Sets if this group and all children are sensible for timeouts during rendering or gets that flag. Default: null -> derive from parent

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyTransform
[4x4] matrix with the affine transforms which this node applies to all children

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public propertyVersion
Modification version of this node, gets incremented at every change

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public propertyVisible
Determines, if this node is visible or sets the visible state

[ILNumerics Visualization Engine]

(Inherited from Node.)
Top
Methods

  NameDescription
Public methodAdd(Node)
Add a node to the end of this groups child collection

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodAddT(T, Object, Boolean)
Add a node to the end of this groups child collection

[ILNumerics Visualization Engine]

(Inherited from Group.)
Protected methodBeginVisit
pushes the transform, alpha and color overrides of this node to the render parameter stack

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodConfigure (Overrides GroupConfigure(Boolean, Boolean).)
Public methodCopy (Overrides GroupCopy.)
Protected methodCreateSynchedCopy (Overrides GroupCreateSynchedCopy(Node).)
Public methodDetach
Detach all shapes from this subtree for individual configurations

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodDispose
Dispose the complete subtree (this is rarely needed)

[ILNumerics Visualization Engine]

(Inherited from Group.)
Protected methodEndVisit
pops the render parameter from render parameter stack

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodFind(Object, NullablePrimitives)
Searches the subtree for nodes with matching tag and (optional) primitive type

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodFindT(Object, PredicateT)
Searches the subtree for all nodes with matching criteria

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodFindByIdT
Finds a typed node in this subtree, filter by ID

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodFirstT
Gets first node with matching criteria from subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodFirstUpT
Finds a group node on the path up to root

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodGetEnumerator (Inherited from Group.)
Public methodGetLimits
Compute the 3D limits (extent) of this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Protected methodgetLimitsInternal (Inherited from Group.)
Public methodInsertT
Insert a node into the child collection at predefined index

[ILNumerics Visualization Engine]

(Inherited from Group.)
Protected methodOnDisposing (Inherited from Node.)
Protected methodOnMouseClick (Inherited from Node.)
Protected methodOnMouseDoubleClick (Inherited from Node.)
Protected methodOnMouseDown (Inherited from Node.)
Protected methodOnMouseEnter (Inherited from Node.)
Protected methodOnMouseLeave (Inherited from Node.)
Protected methodOnMouseMove (Inherited from Node.)
Protected methodOnMouseUp (Inherited from Node.)
Protected methodOnMouseWheel (Inherited from Node.)
Protected methodOnPropertyChanged (Inherited from Node.)
Protected methodRaiseMouseClick (Inherited from Node.)
Protected methodRaiseMouseDoubleClick (Inherited from Node.)
Protected methodRaiseMouseDown (Inherited from Node.)
Protected methodRaiseMouseEnter (Inherited from Node.)
Protected methodRaiseMouseLeave (Inherited from Node.)
Protected methodRaiseMouseMove (Inherited from Node.)
Protected methodRaiseMouseUp (Inherited from Node.)
Protected methodRaiseMouseWheel (Inherited from Node.)
Public methodRemove
Remove a node from this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodRotate(Quaternion)
Rotate this subtree by quaternion

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodRotate(Vector3, Double)
Rotate this subtree by rotation axis and angle

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodRotate(Double, Double, Double, Double)
Rotate this subtree by rotation axis and angle

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodScale(Vector3)
Scales this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodScale(Double, Double, Double)
Scales this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodSynchronize (Overrides GroupSynchronize(Node, SyncParams).)
Protected methodSynchronizeChildren (Inherited from Group.)
Public methodToString
String representation of the group node

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodTranslate(Vector3)
Translates this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Public methodTranslate(Double, Double, Double)
Translates this subtree

[ILNumerics Visualization Engine]

(Inherited from Group.)
Protected methodVisitInternal (Inherited from Group.)
Top
Events

  NameDescription
Public eventDisposing
Fires, before the node is getting disposed

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseClick
Fires when the object is clicked

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseDoubleClick
Fires when the object was double clicked

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseDown
Fires when a mouse button was pressed over the object

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseEnter
Fires when the mouse enters the object region

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseLeave
Fires when the mouse leaves the object region

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseMove
Fires when the mouse was moved over the object

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseUp
Fires when a mouse button was released over the object

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventMouseWheel
Fires when the mouse wheel was moved over the object

[ILNumerics Visualization Engine]

(Inherited from Node.)
Public eventPropertyChanged
Fires on any property state changes

[ILNumerics Visualization Engine]

(Inherited from Node.)
Top
Fields

  NameDescription
Protected fieldm_animations (Inherited from Group.)
Protected fieldm_children (Inherited from Group.)
Protected fieldm_timeoutAware (Inherited from Group.)
Top
Remarks

[ILNumerics Drawing2 Toolbox]

See Also

Reference