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]
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)
The SmoothSurface type exposes the following members.
Name | Description | |
---|---|---|
SmoothSurface | Initializes a new instance of the SmoothSurface class | |
SmoothSurface(InArrayDouble, InArrayDouble, Boolean, NullableSizeF, NullableSize, UInt32) |
Creates a new SmoothSurface plot.
[ILNumerics Drawing2 Toolbox] | |
SmoothSurface(InArraySingle, InArraySingle, Boolean, NullableSizeF, NullableSize, UInt32) |
Creates a new SmoothSurface plot.
[ILNumerics Drawing2 Toolbox] |
Name | Description | |
---|---|---|
Alpha |
Alpha value, range [0...1], if set, this value modifies the alpha values for ALL nodes of this subtree. Use for blend effects only!
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Animations | (Inherited from Group.) | |
Children |
Collection of child for this group
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Clipping |
Gets all 6 available clipping planes for the group or sets it. Null: derive clipping from parent node (default)
(Inherited from Group.)[ILNumerics Visualization Engine] | |
ColorOverride |
If set, this color will override all individual colors in this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
DrawPoints |
Whether or not the original points are to be drawn over the interpolated surface.
[ILNumerics Drawing2 Toolbox] | |
ID |
Unique ID for the node within the scene
(Inherited from Node.)[ILNumerics Visualization Engine] | |
IsSynchedNode | (Inherited from Node.) | |
Margin |
Size (width, height) of the surface edge outside the specified data points. Exrapolation is performed here. Default: 0.1, 0.1
[ILNumerics Drawing2 Toolbox] | |
Markable |
Determines, if this node can be marked by the user
(Inherited from Node.)[ILNumerics Visualization Engine] | |
Marked |
Marked state for the node
(Inherited from Node.)[ILNumerics Visualization Engine] | |
Parent |
Get the parent of this node or null, if this node is a root node
(Inherited from Node.)[ILNumerics Visualization Engine] | |
PickingID |
If set to a valid shape ID, that shape will be marked in picking operations insted of this shape.
(Inherited from Node.)[ILNumerics Visualization Engine] | |
PointsOriginal |
Access to the Points shape used for displaying the original data points, if DrawPoints is true.
[ILNumerics Drawing2 Toolbox] | |
Resolution |
Number of interpolated points along X and Y. Default: 150 x 150.
[ILNumerics Drawing2 Toolbox] | |
SmoothingFactor |
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] | |
Surface |
Gives access to the Surface plot object used for displaying the interpolated result.
[ILNumerics Drawing2 Toolbox] | |
SynchedVersion |
The version of the sync source from the last synchronization.
(Inherited from Node.)[ILNumerics Visualization Engine] | |
Tag |
Object tag used to identify the node within the scene
(Inherited from Node.)[ILNumerics Visualization Engine] | |
Target |
If set, determines the target for rendering: world (3D) or screen (2D) on top. Default: not set (derive from parent)
(Inherited from Group.)[ILNumerics Visualization Engine] | |
TimeoutAware |
Sets if this group and all children are sensible for timeouts during rendering or gets that flag. Default: null -> derive from parent
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Transform |
[4x4] matrix with the affine transforms which this node applies to all children
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Version |
Modification version of this node, gets incremented at every change
(Inherited from Node.)[ILNumerics Visualization Engine] | |
Visible |
Determines, if this node is visible or sets the visible state
(Inherited from Node.)[ILNumerics Visualization Engine] |
Name | Description | |
---|---|---|
Add(Node) |
Add a node to the end of this groups child collection
(Inherited from Group.)[ILNumerics Visualization Engine] | |
AddT(T, Object, Boolean) |
Add a node to the end of this groups child collection
(Inherited from Group.)[ILNumerics Visualization Engine] | |
BeginVisit |
pushes the transform, alpha and color overrides of this node to the render parameter stack
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Configure | (Overrides GroupConfigure(Boolean, Boolean).) | |
Copy | (Overrides GroupCopy.) | |
CreateSynchedCopy | (Overrides GroupCreateSynchedCopy(Node).) | |
Detach |
Detach all shapes from this subtree for individual configurations
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Dispose |
Dispose the complete subtree (this is rarely needed)
(Inherited from Group.)[ILNumerics Visualization Engine] | |
EndVisit |
pops the render parameter from render parameter stack
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Find(Object, NullablePrimitives) |
Searches the subtree for nodes with matching tag and (optional) primitive type
(Inherited from Group.)[ILNumerics Visualization Engine] | |
FindT(Object, PredicateT) |
Searches the subtree for all nodes with matching criteria
(Inherited from Group.)[ILNumerics Visualization Engine] | |
FindByIdT |
Finds a typed node in this subtree, filter by ID
(Inherited from Group.)[ILNumerics Visualization Engine] | |
FirstT |
Gets first node with matching criteria from subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
FirstUpT |
Finds a group node on the path up to root
(Inherited from Group.)[ILNumerics Visualization Engine] | |
GetEnumerator | (Inherited from Group.) | |
GetLimits |
Compute the 3D limits (extent) of this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
getLimitsInternal | (Inherited from Group.) | |
InsertT |
Insert a node into the child collection at predefined index
(Inherited from Group.)[ILNumerics Visualization Engine] | |
OnDisposing | (Inherited from Node.) | |
OnMouseClick | (Inherited from Node.) | |
OnMouseDoubleClick | (Inherited from Node.) | |
OnMouseDown | (Inherited from Node.) | |
OnMouseEnter | (Inherited from Node.) | |
OnMouseLeave | (Inherited from Node.) | |
OnMouseMove | (Inherited from Node.) | |
OnMouseUp | (Inherited from Node.) | |
OnMouseWheel | (Inherited from Node.) | |
OnPropertyChanged | (Inherited from Node.) | |
RaiseMouseClick | (Inherited from Node.) | |
RaiseMouseDoubleClick | (Inherited from Node.) | |
RaiseMouseDown | (Inherited from Node.) | |
RaiseMouseEnter | (Inherited from Node.) | |
RaiseMouseLeave | (Inherited from Node.) | |
RaiseMouseMove | (Inherited from Node.) | |
RaiseMouseUp | (Inherited from Node.) | |
RaiseMouseWheel | (Inherited from Node.) | |
Remove |
Remove a node from this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Rotate(Quaternion) |
Rotate this subtree by quaternion
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Rotate(Vector3, Double) |
Rotate this subtree by rotation axis and angle
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Rotate(Double, Double, Double, Double) |
Rotate this subtree by rotation axis and angle
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Scale(Vector3) |
Scales this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Scale(Double, Double, Double) |
Scales this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Synchronize | (Overrides GroupSynchronize(Node, SyncParams).) | |
SynchronizeChildren | (Inherited from Group.) | |
ToString |
String representation of the group node
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Translate(Vector3) |
Translates this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
Translate(Double, Double, Double) |
Translates this subtree
(Inherited from Group.)[ILNumerics Visualization Engine] | |
VisitInternal | (Inherited from Group.) |
Name | Description | |
---|---|---|
Disposing |
Fires, before the node is getting disposed
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseClick |
Fires when the object is clicked
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseDoubleClick |
Fires when the object was double clicked
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseDown |
Fires when a mouse button was pressed over the object
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseEnter |
Fires when the mouse enters the object region
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseLeave |
Fires when the mouse leaves the object region
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseMove |
Fires when the mouse was moved over the object
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseUp |
Fires when a mouse button was released over the object
(Inherited from Node.)[ILNumerics Visualization Engine] | |
MouseWheel |
Fires when the mouse wheel was moved over the object
(Inherited from Node.)[ILNumerics Visualization Engine] | |
PropertyChanged |
Fires on any property state changes
(Inherited from Node.)[ILNumerics Visualization Engine] |
Name | Description | |
---|---|---|
m_animations | (Inherited from Group.) | |
m_children | (Inherited from Group.) | |
m_timeoutAware | (Inherited from Group.) |
[ILNumerics Drawing2 Toolbox]