ChartDirector 6.0 (ASP/COM/VB Edition)

Surface Perspective

This example demonstrates the effects of various perspective depth, configured using ThreeDChart.setPerspective.

Source Code Listing

[Web Version (in ASP)] aspdemo\surfaceperspective.asp
 ```<%@ language="vbscript" %> <% Set cd = CreateObject("ChartDirector.API") ' This script can draw different charts depending on the chartIndex chartIndex = CInt(Request("img")) ' The x and y coordinates of the grid dataX = Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0) dataY = Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0) ' The values at the grid points. In this example, we will compute the values using the formula z = ' sin((x - 0.5) * 2 * pi) * sin((y - 0.5) * 2 * pi) ReDim dataZ((UBound(dataX) + 1) * (UBound(dataY) + 1) - 1) For yIndex = 0 To UBound(dataY) y = (dataY(yIndex) - 0.5) * 2 * 3.1416 For xIndex = 0 To UBound(dataX) x = (dataX(xIndex) - 0.5) * 2 * 3.1416 dataZ(yIndex * (UBound(dataX) + 1) + xIndex) = Sin(x) * Sin(y) Next Next ' the perspective level perspective = chartIndex * 12 ' Create a SurfaceChart object of size 360 x 360 pixels, with white (ffffff) background and grey ' (888888) border. Set c = cd.SurfaceChart(360, 360, &Hffffff, &H888888) ' Set the perspective level Call c.setPerspective(perspective) Call c.addTitle("Perspective = " & perspective) ' Set the center of the plot region at (195, 165), and set width x depth x height to 200 x 200 x 150 ' pixels Call c.setPlotRegion(195, 165, 200, 200, 150) ' Set the plot region wall thichness to 5 pixels Call c.setWallThickness(5) ' Set the elevation and rotation angles to 30 and 30 degrees Call c.setViewAngle(30, 30) ' Set the data to use to plot the chart Call c.setData(dataX, dataY, dataZ) ' Spline interpolate data to a 40 x 40 grid for a smooth surface Call c.setInterpolation(40, 40) ' Use smooth gradient coloring. Call c.colorAxis().setColorGradient() ' Output the chart Response.ContentType = "image/jpeg" Response.BinaryWrite c.makeChart2(cd.JPG) Response.End %>```

[Windows Version (in Visual Basic)] vbdemo\surfaceperspective.cls
 ```Public Sub createChart(viewer As Object, chartIndex As Integer) Dim cd As New ChartDirector.API ' The x and y coordinates of the grid Dim dataX() dataX = Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0) Dim dataY() dataY = Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0) ' The values at the grid points. In this example, we will compute the values using the formula z ' = sin((x - 0.5) * 2 * pi) * sin((y - 0.5) * 2 * pi) ReDim dataZ((UBound(dataX) + 1) * (UBound(dataY) + 1) - 1) Dim yIndex As Long For yIndex = 0 To UBound(dataY) Dim y As Double y = (dataY(yIndex) - 0.5) * 2 * 3.1416 Dim xIndex As Long For xIndex = 0 To UBound(dataX) Dim x As Double x = (dataX(xIndex) - 0.5) * 2 * 3.1416 dataZ(yIndex * (UBound(dataX) + 1) + xIndex) = Sin(x) * Sin(y) Next Next ' the perspective level Dim perspective As Long perspective = chartIndex * 12 ' Create a SurfaceChart object of size 360 x 360 pixels, with white (ffffff) background and grey ' (888888) border. Dim c As SurfaceChart Set c = cd.SurfaceChart(360, 360, &Hffffff, &H888888) ' Set the perspective level Call c.setPerspective(perspective) Call c.addTitle("Perspective = " & perspective) ' Set the center of the plot region at (195, 165), and set width x depth x height to 200 x 200 x ' 150 pixels Call c.setPlotRegion(195, 165, 200, 200, 150) ' Set the plot region wall thichness to 5 pixels Call c.setWallThickness(5) ' Set the elevation and rotation angles to 30 and 30 degrees Call c.setViewAngle(30, 30) ' Set the data to use to plot the chart Call c.setData(dataX, dataY, dataZ) ' Spline interpolate data to a 40 x 40 grid for a smooth surface Call c.setInterpolation(40, 40) ' Use smooth gradient coloring. Call c.colorAxis().setColorGradient() ' Output the chart Set viewer.Picture = c.makePicture() End Sub```