public override void Do(IDemoChartControl chartControl) { // Create custom data reader. var floatReader = new MyRasterDataReader(Width, Height, new OneAxisBounds(0, 1, 0, 0.1f)); // Create raster data object. var floatRasterData = new ValueRasterData { // Enable value linear interpolation. InterpolationType = RasterDataInterpolationType.Linear, // Set data reader. Reader = floatReader, // Set geometry. Geometry = new RectTextureGeometry { Origin = Vector3F.Zero, Size = new Vector2F(1f, 1f) }, // Set name. Name = "Image" }; // Setup view settings. chartControl.ContextView.Mode2D = true; chartControl.ContextView.Camera2D.Projection = Projection2DTypes.XPosYPos; // Set data source. chartControl.DataSource = new RenderData[] { floatRasterData }; // Start animation. animation.Start( (f) => f > 1 ? 0 : f, rf => floatReader.RandomizeValues(rf), 0, 0.00025f, 16); }
public override void Do(IDemoChartControl chartControl) { // We take the same data as for surfaces for demo purposes, in current case it contains redundant x, y values. Vector3F[] xyzPoints = DemoHelper.GenerateSinPoints(Resolution); // Extract only values from z array. float[] values = DemoHelper.ExtractZValues(xyzPoints); // Create geometry. var geometry = new RectTextureGeometry { Origin = Vector3F.Zero, DirectionX = Vector3F.UnitX, DirectionY = Vector3F.UnitY, Size = new Vector2F(1f, 1f) }; var rasterData = new ValueRasterData { // Linear interpolation. InterpolationType = RasterDataInterpolationType.Linear, // Float data reader specification (values, data stride/width and value axis bounds). Reader = new FloatIntensityImage2DReader(values, Resolution, new OneAxisBounds(-1f, 1f)), // Set geometry. Geometry = geometry, // Set name. Name = "Surface" }; // Setup view settings. chartControl.ContextView.Mode2D = true; chartControl.ContextView.Camera2D.Projection = Projection2DTypes.XPosYPos; // Set chart data source. chartControl.DataSource = rasterData; }