SciChart WPF 3D Charts > 3D Chart Types > The Free Surface 3D Chart Types > The Cylindroid 3D Chart Type
The Cylindroid 3D Chart Type

Examples for the 3D Cylindroid Mesh Chart can be found in the SciChart WPF Examples Suite which can be downloaded from the SciChart Website or our SciChart.WPF.Examples Github Repository.

NEW to SciChart WPF 3D v5.2!

Cylindroid 3D Charts are provided by the CylindroidDataSeries3D type.



The location of the CylindroidDataSeries3D is defined by following properties:

  • CylindroidDataSeries3D.OffsetX – a location of the Cylindroid by the X-Axis
  • CylindroidDataSeries3D.OffsetY – a location of the Cylindroid by the Y-Axis
  • CylindroidDataSeries3D.OffsetZ – a location of the Cylindroid by the Z-Axis


The size of the CylindroidDataSeries3D is defined by following properties:

  • CylindroidDataSeries3D.C – a radius of the Cylindroid along the Z-Axis
  • CylindroidDataSeries3D.H – a height of the Cylindroid along the Z-Axis

Declaring a Cylindroid 3D Series with random values in the offset map

<s3D:SciChart3DSurface x:Name="sciChart" Grid.Column="1" WorldDimensions="200,200,200" BorderThickness="0">
        <s3D:Camera3D ZoomToFitOnAttach="True"/>
        <s3D:FreeSurfaceRenderableSeries3D x:Name="cylindroidMeshRenderableSeries"
                                             Opacity="{Binding ElementName=opacitySlider, Path=Value, Mode=TwoWay}"
                                             MeshColorPalette="{StaticResource HeightColorMap}"
                                             LightingFactor="{Binding ElementName=lightingFactorSlider, Path=Value, Mode=TwoWay}"
                                             PaletteMinimum="0.0, 5.0, 0.0" PaletteMaximum="0.0, 7.0, 0.0" />
        <s3D:NumericAxis3D />
        <s3D:NumericAxis3D />
        <s3D:NumericAxis3D />
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    int countU = 40;
    int countV = 30;
    var meshDataSeries = new CylindroidDataSeries3D<double>(countU, countV)
        SeriesName = "Cylindroid Mesh",
        A = 3,
        B = 3,
        H = 7
    var random = new Random(0);
    for (var u = 0; u < countU; u++)
        for (int v = 0; v < countV; v++)
            var weight = 1.0f - Math.Abs(v / (float) countV * 2.0f - 1.0f);
            var offset = (float)random.NextDouble();
            meshDataSeries[v, u] = offset * weight;
    cylindroidMeshRenderableSeries.DataSeries = meshDataSeries;
    cylindroidMeshRenderableSeries.DrawBackSide = true;