| Contents | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Previous | Next |
| 22. 3D Graphic Window |
|
SimplexNumerica used the left-handed coordinate system (see figure). If you point your left thumb along the Z axis in the positive direction in a left-handed coordinate system, your fingers also curl in the direction leading from the X axis toward the Y axis.
The measure angle of rotation is used counterclockwise. This rotation direction has the advantage that rotating around the Z axis agrees with rotation in two dimensions. If you look down the positive Z-xis toward the origin, angles increase as you rotate from the positive x-axis toward the positive Y-axis.
You can show a 3D coordinate system as a 2D system with the following parameter:
It will looks like the next figure:
|
| Perspective 3D Parameter | Top |
|
Because our computer’s screen is two dimensional, it cannot directly display three-dimensional objects. If we want to display three-dimensional objects on our two-dimensional screen, we must project the objects from three dimensional to two.
Most generally, a projection translates an object’s representation from one set dimensions to another. The most common projection types are called Planar Geometric Projections. They are defined by the passing of a ray called a projector from a center of projection through the points being projected onto a plane of projection. The next figure shows the projection of a triangle.
The next dialog is for the Perspective 3D Parameter in SimplexNumerica. You can put in
· Projections · Rotation Angle · View Point · Light Vector
Planar geometric projections can be grouped into two glasses: parallel and perspective. These are described in the following sections.
The view point is similar to the place of the projectors. The Light Vector coordinates is the Sun Point.
3D Animation Window
A Perspective Projection C Cavalier Projection B Parallel Projection D Cabinet Projection Parallel ProjectionIn the parallel projection, the projectors are parallel to each other. If you move the center of projection farther and farther away from the plane of projection, the projectors become closer and closer to parallel. If you take this to its limit, you need to specify a direction of projection.
The next picture shows the parallel projection of a chart.
Isometric ProjectionsAn Isometric Projection is a common type of axonometric orthographic projection in which the direction of projection makes equal angles with all three coordinate axes.
Because the direction of projection makes the same angle with all three axes, yo can measure distances along all three axes using the same scale.
Orthographic and Oblique ProjectionsLike front, top, and side view orthographic projections, oblique projections are made with the plane of projections perpendicular to one of the coordinate axes. Because the projectors are not perpendicular to the plane of projection, however, more than one face of an object is visible.
Because one face of the object is parallel to the plane of projection, you can measure distances and angles on that face.
Orthographic: Projectors are perpendicular to the projection plane
Oblique: Projectors are not necessarily perpendicular to the projection plane
Cavalier ProjectionsThis is a standard type in SimplexNumerica. Here the projectors meet the plane of projection at a 45-degree angle. With this sort of projection, a line perpendicular to the plane of projection is transformed into a line that has the same length as the original line. This means that you can measure as well lengths using the same scale along all three axes.
The next picture shows the Cavalier projection of a chart.
Cabinet ProjectionsThis is also a standard type in SimplexNumerica. In a cavalier projection, the projectors meet the plane of projection at a 45-degree angle but in the cabinet projection, the projectors meet the plane of projection at an angle of atan(2). In other words, the tangent of the angle between the direction of projection and the plane of projection is 2.
The next picture shows the Cabinet projection of a chart.
While distances are preserved along all three axes by a cavalier projection, distances in one direction are scaled by a factor of ½ in a cabinet projection. This makes cabinet projections a bit more aesthetically appealing than cavalier projections. Making the receding axis shorter than the others agrees more closely with orthographic projections and maybe your visual experience, so the picture looks more realistic.
Perspective ProjectionIn a perspective projection, the projectors pass from a center of projection through each point in the object to the plane projection. Because the projectors pass through a single point, the projection of an object far from the center of projection is smaller than the projection of an object that is closer.
The next figure shows e.g. a surface plot with a contour on top in perspective projection.
|
| Dimensions | Top |
|
The previous chapter described the most of the perspective 3D parameter in SimplexNumerica. The dimensions of the chart have also influence on the manifestation of a 3D Object.
Although the Animation Window is already explained in the previous chapter we will show it here for the dimension parts in it.
You can do this stretching certainly with accurate meter values as shown in the next dialogbox.
Call this dialogbox either with help of the right mouse button or from the Pulldown-menu <Edit>, menu point <Dimensions>. You can edit the data directly in the metric unit mm.
Augmentation Factor (Zoom Factor) Maybe Zoom Factor is the better word for it. It should be clear what it does.
|
| Number Format | Top |
|
In the number format dialogbox is for each 3D axis an entry available. Select the appropriated axis and setup the format for it. Press the button apply if you want to setup more than one axis to the same time.
The following formats are available:
<Automatic Decimal Places> sets the <Decimal Places> automatically via program. If you don’t like that, then unhook the checkbox and set the value for the right axis manually.
The date format can be changed with the help of the right Combobox.
The button <Apply> applies the setup without to leave the dialog.
The <Exponent> is for the number of places behind the <E> (e.g. 123.4E02). The Power of ten can be shown either e.g. as 123.4E02 or 123.4 102, respectively.
The <Decimal Separation Character> can be set to <Comma> or <Point> (Dot).
|
| Grid | Top |
|
Use the colour combo box to setup the best colour for your grid lines.
|
| Interval & AutoScale | Top |
|
AutoScale is used to automatically scale the axes interval of any chart based on the extremes (maximum/minimum) of all Memory Record Graphs.
Autoscaling may be set individually on the x, y or z axis or globally on all extra axes. The default is to AutoScale all axes.
When Autoscaling, the axis range is automatically computed and the dependent axis is scaled to include the range of the graph or data being plotted.
In the TestMode an AutoScale dialogbox for the interval calculation appears after each calculation, which leads to an output in the coordinate system. This dialogbox and the dialogbox for the interval input and partitioning of the interval are explained in the following chapter.
The program flow will be improved by this AutoScale dialogbox crucially, because the user does not have to look in a Pulldown-menu for the continuation of the program, because it is explicitly referred what to do next.
The AutoScale dialogbox inquires to you whether SimplexNumerica is to make the interval scaling automatically or whether it will be done manually, whereby you can combine both methods.
By which data array the interval boundaries are calculated is depend from selection SampleData or CurveData.
Meaning of the individual branches:
AutoScale (automatic interval calculation and scaling) Call that AutoScale routine for the calculation of optimal interval delimitation and rounded numbers at the axes. How the interval delimitation has to take place can be decided under Pulldown-menu <Edit>, menu option <Properties>.
Manual with Auto (manually with automatic interval calculation) Here the AutoScale menu option will become executed and the values are automatically entered in an interval dialogbox, of where they can be edited. The automatically calculated physical dimensions are thus always only once to be entered.
Manual without Auto (manually without automatic interval calculation) Here the menu option AutoScale is not executed. Use it, if you like to determine the interval boundaries manually.
Remain (Interval like before) Here the originally available interval will be preserved. If you want to use the same interval delimitation several times consecutively, please click on remain button, and the coordinate system is represented immediately. An exception represents the logarithmic coordinate system; whereby a dialogbox will be appearing for the input of the logarithmic interval border.
Cancel (Does nothing) Clicking cancel causes that the following program run will be interrupted, i.e. the coordinate system is not re-structured.
Next, the editing boxes of the interval delimitation and partitioning follows.
The following dialogbox appears after pressing the Manual buttons:
The 3D interval dialogbox differences from the 2D counterpart. Here you can set only the axes interval and not the interval from the graph.
If you want, then you can <Calc Axis Subdivision> manually or automatically by the program. <Use AutoScale> for the interval border to get even good numbers for it. Unhook each checkbox to fill the fields by yourself.
You can call this dialogbox also with the help of the right mouse button from the popup menu.
Furthermore additional characters can be attached for Scaling Text. This can take place separately for each axis, or even for further axes, e.g. the right hand axis. Use also here subscript and superscript for text input.
Note: Demystification in the 3D Chart can often be done with the help of the AutoScale algorithm.
Use following shortcuts (keys) for faster call of the AutoScale functions.
Redraw (Shift + ESC)Redraw does only that what it says. It refreshed the content of the 3D-Window. Sometimes the program will not redraw all the time another window(s) because of the performance during runtime. So if necessary, you can do that manually with the help of this menu or with key <Shift + ESC>.
AutoScale (ESC)This menu item automatically scales the diagram so that all records and limits are displayed. It is similar to the direct call of the button AutoScale in the next dialog.
New Interval (Tab)<New Interval> calls the above Interval Dialogbox. The button AutoScale can also be direct called via previous menu.
Remain Will not change the interval limits after recalculation of the chart.
|
| Settings | Top |
|
The settings are mainly for the 3D charts. Call the next dialogbox with the right mouse button or from the Pulldown-menu <Edit>, menu point <Settings>.
Here you can set
Play around the parameters and try to find the best look for you. You can also use the Animation Window to change the appearance of the chart.
|
| Properties | Top |
|
The 3D properties are depending from the chart on the 3D-Window. You can call this dialogbox best with right mouse button and the popupmenu. Also possible is to call it over the Pulldown-menu <Edit>, popup menu <Properties> and depend on the chart on the screen, either the next properties for are possible.
Please go to each individual chapter for a detailed description.
|
| Cloud Points | Top |
|
|
| Polygon | Top |
|
|
| Slices | Top |
|
|
| 2D-Curve | Top |
|
|
| Ribbon Chart | Top |
|
|
| Bar Chart | Top |
|
|
| Block Chart | Top |
|
|
| Tube Chart | Top |
|
|
| Surface & Contour Plot | Top |
|
Because a viewer’s perception of the surface plots depends on the viewpoint, they are sometimes called perspective plots. It is desirable for you to vary the grid size and the perspective of the surface plot while doing data exploration.
In order to overcome the viewpoint limitation, a contour plot takes a bird’s eye view. In a contour plot, the y-Axis is hidden and the data values in y are represented by connected lines at discrete levels. Although a contour plot is less viewpoint-dependent than a surface plot, it is still not as perspective-free as a volume model.
Another shortcoming of a contour plot is that in some cases it cannot show "holes" in the data. For example, when a dataset has lower data values at the center, a contour plot cannot show the "hole" clearly, because it assumes that contour lines of lower levels are longer and are located at the outer edge while the shorter isolines denote higher values. Moreover, the band height of the isolines determines how a contour plot appears. Therefore, you should consider construct contour plots with different band heights in order to not to be "stuck" in one drawing.
This picture is brought in this manual via Windows Metafile Format from SimplexNumerica to Word. By the way, there is one (or more) problem with metafiles under Windows (also XP). It is, no doubt, a vector file format but without any knowledge about device information. For instance, each font type has stored information about its height and length. SimplexNumerica calls Windows functions for the information, e.g. for setting a text vertical centric in the middle of tickmark. Now, when writing a metafile, this information about the height is zero and the text can not set correctly.
You can call the surface plot either with the right mouse button from the popupmenu or from the Pulldown-menu <Display>, menu point <3D-Surface>. The properties of the surface can be set in the next dialogbox.
Surface DensityThe Surface Density is the mesh grid in x and z direction of the 3D chart. The grid is the number of equidistant data points along the axes. Values around 60 are usual densities.
Surface GridThere are some parameter to vary the surface grid and the mesh.
3D Demo FunctionsThe demo mode is nice for playing around the 3D part with some prepared functions and intervals. Each function maybe has a different interval (xmin, etc.) that is normally very confuse to setup. So that the program has the best matching ones prepared for you.
Switch the demo mode off for using real data from the ArrayEditor (or from external).
Iceberg Demo Function
Approximation and Interpolation3D Approximation and Interpolation is sometimes difficult to handle. The result is very depended from the sample data and the used algorithm.
SimplexNumerica has integrated some different algorithm for 3D fits. The following fits are implemented:
Thin Plate Surface SplineThin Plate Surface Spline, or TPS for short, is an interpolation method that finds a "minimally bended" smooth surface that passes through all given points. TPS of 3 control points is a plane, more than 3 is generally a curved surface and less than 3 is undefined.
The name "Thin Plate" comes from the fact that a TPS more or less simulates how a thin metal plate would behave if it was forced through the same control points. Thin plate splines are particularly popular in representing shape transformations, for example, image morphing or shape detection. Consider two equally sized sets of 2D-points, A being the original shape and B the target shape. Let zi=Bix - Aix. Then fit a TPS over points (aix, aiy, zi) to get interpolation function for translation of points in x direction. Repeat the same for y.
In some cases, e.g. when the control point coordinates are noisy, you may want to relax the interpolation requirements slightly so that the resulting surface doesn't have to go exactly exactly through the control points. This is called regularization and is controlled by regularization parameter λ. If λ is zero, interpolation is exact and if it's very large, the resulting TPS surface is reduced to a least squares fitted plane ("bending energy" of a plane is 0). In our example, the regularization parameter is also made scale invariant with an extra parameter α.
Given set C of p 3D control points....
...and regularization parameter λ, solve unknown TPS weights w and a from from linear equation system...
..., where K, P and O are sub matrices and w, a, v and o are column vectors, given by:
Note that L, and thus also its submatrix K, is symmetric so you can calculate elements for upper triangle only and copy them to the lower one. Also, α (mean of distances between control points' xy-projections) is a constant only present on the diagonal of K, so you can easily calculate it while filling up the upper and lower triangles.
Then, once you know values for w and a, you can interpolate z for arbitrary points (x,y) from:
Bending energy (scalar) of a TPS is given by:
Note: The TPS algorithms in SimplexNumerica are suitable only for a small number of SampleData points (ca. up to 150).
Bivariate Cubic SplineThe authors Jörg Haber, Frank Zeilfelder, Oleg Davydov and Hans-Peter Seidel from Max-Planck-Institut für Informatik, Saarbrücken, have described an article about <Smooth Approximation and Rendering of Large Scattered Data Sets>. So search in the internet for this article about Bivariate Cubic Splines.
They have presented an efficient method to automatically compute smooth approximations of large sets of unorganized scattered data points. The method is based on the construction of a differentiable bivariate spline with respect to a uniform triangle mesh over an arbitrarily shaped planar domain. For a uniformly distributed subset of triangles we compute local polynomial least squares approximations by using singular value decomposition (SVD) of small matrices.
The smooth approximating spline is constructed by gluing together these patches using Bernstein-Bezier smoothness conditions. We emphasize the following key features of our method: They develop a completely local approach, which means that we do not use any global optimization or other techniques involving computation with large portions of the data set. They employ the rank-revealing features of SVD to control the polynomial degree of the initial patches, which allows taking into account the local variation and distribution of the data points.
Nearest Neighbor AlgorithmThe nearest neighbor query ranks all objects in terms of their distance from a query object which is a a point. The point query object is specified by positioning the mouse over it and clicking it. The objects are displayed in the order of their distance from the query object along with their position in the ranking.
The neighboring objects are found in an incremental manner. In other words, having found the k nearest neighbors, in order to find the k+1st nearest neighbor, the algorithm does not recompute the set of k+1 nearest neighbors; it just finds the additional neighbor. The incremental nearest neighbor algorithm (see G. Hjaltason and H. Samet, Ranking in spatial databases in Advances in Spatial Databases - 4th Symposium, SSD'95, M. J. Egenhofer and J. R. Herring, Eds., Lecture Notes in Computer Science 951, Springer-Verlag, Berlin, 1995, 83-95) makes use of a priority queue where the queue elements are the blocks of the underlying data structure as well as the objects themselves. The priority queue is ordered on the basis of the distance of its elements from the location of the query object which is a point in our implementation. In case of a tie between two spatial objects (i.e., two non-block objects have the same distance from query point p ) and if the distance is zero and if the object has extent and area (i.e., a rectangle), then use the distance from p to the nearest boundary of an object that contains p (if such an object exists) as the discriminator for the ordering.
The algorithm works in a top-down manner in the sense that as elements are removed from the queue, they are checked if they correspond to blocks that are not at the lowest level of the hierarchy (i.e., nonleaf nodes). If this is the case, then their immediate descendants (i.e., the sons) are inserted in the queue ordered according to their distance from the query object. Otherwise, the objects that they contain are inserted into the queue ordered according to their distance from the query object. If the element e that has been removed from the queue is a data object, then e is reported as the next nearest neighbor of the query object.
|
| Contents | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Previous | Next |
| Copyright © 1988-2006 Dipl.-Phys.-Ing. Ralf Wirtz
Author: Ralf Wirtz |
Last modified: 3 Mar 2006 15:14 Authored in CALnet |