next up previous contents index
Next: Volumes and 3D Finite Up: Geom2d Previous: Debug Methods on Geom2d

Other Methods on Geom2d

 

   tex2html_wrap44282    tex2html_wrap44284
GEOM2D * geom
These methods compute vertex normals for a Geom2d instance and store them in the normal array, if normal is NULL new memory is allocated. Most methods which need normals call "compute-normals-send" if normal is NULL or GEOM2D_USERNORM is not set in the geom-> flag.

"compute-normals-send" computes the normal at each vertex by averaging the triangle normals of the adjacent triangles. "get-vertex-wnormals-send" additionally weights the triangles normals with the angle of the triangle at the vertex, this needs a little more time but the result is much better.

"get-vertex-wnormals-send" sets the GEOM2D_USERNORM flag, therefore the geom should not be changed after this method has been called.

   GRAPE(geom, "flip-normals-send")()
GEOM2D * geom
Change the orientation of the normals. This might be necessary if the orientation of the normals computed by an algorithms differs from the ``natural'' orientation induced by the orientation of the triangle (this is for example the case for surfaces computed with project Amandus).

   tex2html_wrap44288    tex2html_wrap44290
GEOM2D * geom
SCENE * scene
"compute-symmetries" expects geom to be a part of a triply periodic surface bounded by planar symmetry lines. It returns a list of Triang1d instances describing the symmetry polyeder which bounds geom.

The methods "compute-symmetries-send" allows to insert such a list into the data hierarchy. The object of scene must be of class Geom2d, the list returned by the "compute-symmetries" call on the object is inserted as object of scene-> next_scene (which is created if necessary).

   tex2html_wrap44292    tex2html_wrap44294
GEOM2D * geom
Prints the lenghts of the boundary curves resp. the periods (i.e. the distances between planar boundary curves whose planes are parallel) of geom to stdout.

   tex2html_wrap44296    tex2html_wrap44298
GEOM2D * geom
Equiangulate geom by switching diagonals between adjacent triangles if the angles opposite to the diagonal add up to more than pi (see the same methods on Triang2d in section 6.3.1.4). The boundary neighbours have to be corrected after this operation. The s3-method does the same operation but the points are projected to the three-sphere first.

   tex2html_wrap44300    tex2html_wrap44302
GEOM2D * geom
Mollify geom by averaging the points. "mollify-send" extends the superclass method, if the ``mollify boundary'' flag (a pointer to it can be obtained by "get-mollify-bnd") is TRUE, boundary points will also be mollified. Of course this only makes sense if boundary restrictions are available.

   tex2html_wrap44304    tex2html_wrap44306
GEOM2D * geom
"center-send" moves geom to make the minimum and maximum x/y/z-coordinates identical (apart from the sign), i.e. it centers geom at zero. "normalize-send" additionally scales geom so that it fits into the [-1, +1] cube.

Both methods extend the superclass methods, they additionally correct the coordinates of the boundary points.

It is not recommended to use these methods to get geom in a better position for viewing it, for this you should use "fit2window-send" which changes the GraphicDevice's transformation matrix instead of the coordinates of the geom points.

   GRAPE(geom, "make-bnd-send")()
GEOM2D * geom
Compute the boundary of a Geom2d instance. All boundary edges are determined using the neighbour information, they are used to create boundary curves. If the angle between two edges at a commen vertex is too small (less than 125 degrees) this vertex is used a start resp.\ endpoint.

   GRAPE(geom, "assign-bnd-send")()
GEOM2D * geom
Call "assign-curve-send" (see 6.2.2.5) on all active boundaries in geom-> bnd_curve to update the boundary curve coordinates.

   GRAPE(geom, "restrict-bnd-send")()
GEOM2D * geom
Call the restriction function for all active boundaries in geom-> bnd_curve. This is for example done after refining geom to correct the coordinates of new boundary points.

   GRAPE(geom, "fix-bnd-send")()
GEOM2D * geom
Remove all boundary curve restriction. Most methods respect the boundary restrictions, these methods will not move any boundary points after this methods has been called.

   (int * ) GRAPE(geom, "get-bnd-index")(point, dist)
GEOM2D * geom
VEC3 point
double dist
Search all active boundary curves in geom-> bnd_curve for a point that has a distance less than dist from point. If such a boundary is found a pointer to its index is returned, otherwise the method returns NULL.

Normally this method is called after "find-pick" or "find-pick-index" (both methods return a point picked with the mouse) to find the boundary the picked point belongs to.

   tex2html_wrap44318    tex2html_wrap44320
GEOM2D * geom, * geom1, * geom2
double factor, fac1, fac2
These methods extend the superclass interpolation methods, they additionally interpolate all special Geom2d components (normals, colors, boundary curves and parameter lines) if present.

   GRAPE(geom, "merge")(geom_two)
GEOM2D * geom, * geom_two
Merge geom_two into geom by appending all geom_two lists to those of geom. New memory is allocated if necessary, if something fails the method returns NULL.

geom_two should be deleted after "merge" because some objects of geom_two, e.g. the boundary curves, are assigned to geom, they no longer are connected to geom_two. This might be changed in a future version.

   tex2html_wrap44324    tex2html_wrap44326
GEOM2D * geom
CLASS * Geom2d
If geom consist of several separate surface patches which meet at boundary curves (e.g. if geom was created with the surface builder or build by reflection and "merge" was called) "close-send" identifies the double (or multiple if more than two boundaries meet) points and extends the neighbour connectivity over the whole surface. References within boundary curves or parameter lines to the points that are no longer used are corrected.

"close-config-send" pops up a configuration layer which allows to change the distance upto which points are identified, to select whether very small boundaries should be removed completly and whether some debugging information should be printed, see section 8.2.1.

Since the identified points and curves are only deactivated it might be a good idea to call "optimize-mem-send" after "close-send" to remove them.

   tex2html_wrap44328    tex2html_wrap44330
GEOM2D * geom
MATRIX44 trfmat
int orient
int type
VEC3 points[3]
Both methods create a new Geom2d instance by reflecting geom and return it.

"reflect" transforms all points and normals with trfmat, boundary curves and parameter lines are also transformed by calling "reflect" on them. If orient is negative the triangle orientation is changed, if g_fabs(orient) > 1 the normal orientation is also changed.

"reflection-non-linear" knows R tex2html_wrap_inline44272 circle, H tex2html_wrap_inline44272 plane, line, point and normal and S tex2html_wrap_inline44272 plane and line reflection (type bitwise from 0x20 to 0x800). The points describe the point, line, plane or normal, for H tex2html_wrap_inline44272 the Klein model and for S tex2html_wrap_inline44272 the stereographic projection is used.

   tex2html_wrap44332    tex2html_wrap44334
GEOM2D * geom
These methods extend the superclass methods "refine-local" and "coarsen-global-send". After refining geom2d "restrict-bnd-send" is called to correct new boundary points, after coarsening new boundaries are created with "make-bnd-send".

   GRAPE(geom, "reset")()
GEOM2D * geom
Reset the number_of_points/elements of geom and all boundary curves and parameter lines to zero.

   GRAPE(geom, "export-evolver-send")(
)GEOM2D * geom
Export a Geom2d instance in Evolver format. The data is written into the file grape.fe in the current directory. Planar constraints are preserved, therefore it is possible to create initial surfaces with free planar boundaries with GRAPE and to minimize them with the Evolver.


next up previous contents index
Next: Volumes and 3D Finite Up: Geom2d Previous: Debug Methods on Geom2d

SFB 256 Universität Bonn and IAM Universität Freiburg

Copyright © by the Sonderforschungsbereich 256 at the Institut für Angewandte Mathematik, Universität Bonn.