Next: Volumes and 3D Finite
Up: Geom2d
Previous: Debug Methods on Geom2d
-
- 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).
-
- 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).
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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 circle, H plane, line, point
and normal and S plane and line reflection (type bitwise from
0x20 to 0x800). The points describe the point, line, plane or
normal, for H the Klein model and for S the stereographic
projection is used.
-
- 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: 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.