Skip to content

Commit ea0e4d8

Browse files
committed
Some documentation updates
1 parent eab5d22 commit ea0e4d8

File tree

12 files changed

+642
-236
lines changed

12 files changed

+642
-236
lines changed

Doxyfile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,8 @@ EXAMPLE_PATH = ttl/examples/hesimplest \
755755
parameterization/examples \
756756
sisl/examples \
757757
implicitization/examples \
758-
gotools-core/examples
758+
gotools-core/examples \
759+
igeslib/examples
759760

760761
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
761762
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
@@ -775,10 +776,7 @@ EXAMPLE_RECURSIVE = NO
775776
# directories that contain image that are included in the documentation (see
776777
# the \image command).
777778

778-
IMAGE_PATH = gotools-core/doc/images \
779-
compositemodel/doc/images \
780-
trivariate/doc/images \
781-
trivariatemodel/doc/images \
779+
IMAGE_PATH = doc/images \
782780
ttl/doc/images
783781

784782
# The INPUT_FILTER tag can be used to specify a program that doxygen should

compositemodel/include/GoTools/compositemodel/compositemodel-doxymain.h

Lines changed: 193 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -44,35 +44,198 @@
4444
// DOCUMENTATION ON MAIN PAGE
4545
//===========================================================================
4646

47-
/// \page compositemodel GoTools CompositeModel
48-
///
49-
/// Contains tools for representing composite models.
50-
///
51-
/// \if null
52-
/// An overview documentation for this module can be found in
53-
/// \ref compositemodel_doc.
54-
/// \endif
55-
///
56-
/// This module depends on the following GoTools modules:
57-
/// - GoTools Core
58-
/// - GoTools Implicitization
59-
/// - GoTools Intersection
60-
/// - GoTools Parametrization
61-
/// - GoTools Igeslib
62-
/// - GoTools Topology
63-
///
64-
/// and the following modules external to GoTools:
65-
/// - SISL (SINTEF)
66-
/// - TTL (SINTEF)
67-
/// - The newmat matrix library, which is freely available from <a
68-
/// href ="http://www.robertnz.net/">www.robertnz.net</a>.
69-
///
70-
/// SISL, TTL and newmat is included for convenience.
71-
72-
// /// \namespace Go
73-
// /// The Go namespace is the common namespace for all GoTools modules.
74-
75-
// /// \namespace hetriang
76-
// /// Namespace for classes in the half-edge data structure.
47+
/**
7748
49+
\page compositemodel GoTools CompositeModel
50+
51+
Contains tools for representing composite models.
52+
53+
This module depends on the following GoTools modules:
54+
- GoTools Core
55+
- GoTools Implicitization
56+
- GoTools Intersection
57+
- GoTools Parametrization
58+
- GoTools Igeslib
59+
- GoTools Topology
60+
61+
and the following modules external to GoTools:
62+
- SISL (SINTEF)
63+
- TTL (SINTEF)
64+
- The newmat matrix library, which is freely available from <a
65+
href ="http://www.robertnz.net/">www.robertnz.net</a>.
66+
67+
SISL, TTL and newmat is included for convenience.
68+
69+
\section comp_sec1 Brep topology
70+
A CAD model can normally not be represented by one geometry entity like
71+
the ones in gotools-core. The need for sets of entities, adjacency analysis and
72+
representation of adjacency arises. There is a need for topological structures.
73+
74+
\link Go::Body \endlink is a boundary represented solid model. It is a virtual volume limited
75+
by one or more shells, one outer and possibly a number of inner ones. The
76+
shells are represented by the class SurfaceModel which is also the entity used
77+
to represent a face set. In addition to being a topological entity, \link Go::SurfaceModel \endlink
78+
provides an interface which views the set of surfaces as one entity. Thus, an
79+
operation like closest point computation can be performed without caring
80+
about which surface is closest to the point.
81+
82+
The surface model consists of a set of faces represented by the class
83+
\link Go::ftSurface \endlink. The face represents the abstract idea of a bounded surface, but it also
84+
has a pointer to the geometric representation of this surface. The geometric
85+
surface is a \link Go::ParamSurface \endlink, it may be a NURBS surface, an elementary surface
86+
or a trimmed version thereof. The face is bounded by one or more loops,
87+
one outer and possibly a number of inner ones. The inner loops represents
88+
holes in the surface. Then the geometric surface will always be a \link Go::BoundedSurface \endlink. All
89+
faces have an outer loop which either represents an outer trimming curve in
90+
the case of a BoundedSurface or the surface boundary.
91+
92+
A loop consists of a number of edges represented by ftEdge. The edges
93+
have a geometric representation by a ParamCurve. This is the level where
94+
adjacency information related to faces or surfaces is stored. An ftEdge is a
95+
half edge. It knows the face to which it belongs and the geometry of the curve
96+
it corresponds to. This curve is normally a CurveOnSurface curve. Then,
97+
both parameter and geometry information are available. The ftEdge has a
98+
pointer to a twin edge. This edge belongs to the adjacent ftSurface meeting
99+
the current one along the boundary represented by the current ftEdge. This
100+
construction is a very flexible one, but it does not automatically ensure C 0
101+
continuity as the curves pointed at by the two twin edges, are normally not
102+
the same.
103+
An edge is limited by two vertices which has a geometric representation
104+
as a point. A vertex has knowledge about all edges meeting in this point.
105+
106+
\section comp_sec2 CompositeModel
107+
SurfaceModel represents the shell in a boundary represented geometry model,
108+
but it is also the entity that is used to view a surface set as one unity. In
109+
this context, it inherits the abstract superclass \link Go::CompositeModel \endlink that defines
110+
an interface for a unity of geometry entities of the same type. All composite
111+
models can
112+
Report how many entities it consist of
113+
\li Evaluate a given entity in a given parameter or parameter pair
114+
\li Compute the closest point from a given pont to the entity set
115+
\li Compute the extremal point of the entity set in a given direction
116+
\li Intersect itself with a plane
117+
\li Intersect itself with a line
118+
\li Compute the bounding box surrounding the entity set
119+
\li Check whether one specified entity is degenerate
120+
\li Turn parameter directions corresponding to one or all entities
121+
\li Tesselate itself
122+
\li Clone itself
123+
124+
Tesselation is performed in the gotools-core submodule tesselator. The methods
125+
here expect information about the tesselation resulution. For each parameter
126+
direction in the object, the number of tringles or line strips must
127+
be specified. The resolution is defined from the composite model. This can
128+
either be done setting a resolution for all entities or by a density parameter
129+
that governs the resolution. The composite model tesselation routines return
130+
a vector of shared pointers to a GeneralMesh. The type of meshes used for the
131+
concrete tesselation results are \link Go::LineStrip \endlink,
132+
\link Go::RegularMesh \endlink and \link Go::GenericTriMesh \endlink.
133+
134+
The control polygon of the composite model or a selected subset of the
135+
model may be tesselated. In that case the output mesh is represented as a
136+
\link Go::LineCloud \endlink. LineCloud is an entity in gotools-core/geometry.
137+
138+
\subsection comp_sec2_2 CompositeCurve
139+
A \link Go::CompositeCurve composite curve \endlink
140+
is an ordered collection of curves. The class expects a set
141+
of curves and will orient them order them in a sequence. The curve set should
142+
preferably be continuous, but also discontinuous set may be represented.
143+
144+
A composite curve will contain a number of \link Go::ParamCurves \endlink, ordering
145+
information and continuity information. The curve sequence will be parameterized as a
146+
unity. Curve indices follow the indices for the curves given as
147+
input to the object. The class has the following type specific functionality:
148+
\li Fetch an individual curve
149+
\li Fetch the parameter interval of the composite curve
150+
\li Given a parameter value of one individual curve, get the corresponding parameter
151+
value in the composite curve, and vice versa. Given a
152+
parameter value of the composite curve, get the index and parameter
153+
value of the individual curve.
154+
\li Evaluate the composite curve as one unity
155+
Hit test. Compute the closest point in the composite curve to a given
156+
point along a given line
157+
\li Append a new curve to the composite curve
158+
159+
All the curves in the composite curve can be tesselated with respect to a
160+
default value, or a value given by the application, or a given subset of the
161+
composite curve can be tesselated with respect to the defined resolution. It
162+
is also possible to set the number of line segments for each curve relative
163+
to a given density parameter. Then the length of each line segment should
164+
roughly approximate this density. The density should be set according to
165+
the total size of the model. An upper bound of the tesselation size exists,
166+
but a large model combined with a small density will still lead to a heavy
167+
visualization model.
168+
169+
\subsection comp_sec2_3 CurveModel
170+
A \link Go::CurveModel curve model \endlink is an incomplete class
171+
inheriting a composite model. Not all
172+
the functionality defined in CompositeModel is implemented in this class. Its
173+
main purpose is to take a set of curves, for instance read from an IGES file,
174+
compute the topology of the curve set, use the topology information to order
175+
the curves into sequences, and return these sequences as composite curves.
176+
177+
Nevertheless, a curve model may be evaluated, tesselated and we can
178+
fetch a particular curve in the set by index or find the associated index given
179+
a curve. The index corresponds to the order of the input curves to this class.
180+
It is also possible to compute the bounding box surronding the curve set and
181+
the curve model may copy itself.
182+
183+
\subsection comp_sec2_4 SurfaceModel
184+
A \link Go::SurfaceModel surface model \endlink represents a surface set or a shell.
185+
It contains a number
186+
of parametric surfaces and topology information representing adjacency
187+
between surfaces in the set. The input surfaces to a surface model may be
188+
given as parametric surfaces or faces, i.e. \link Go::ftSurface \endlink.
189+
In the latter case, the
190+
adjacency information may be given or not. A surface model may consist of
191+
several disjoint surface sets.
192+
SurfaceModel has some specific functionality:
193+
\li Reset topology tolerances and recompute adjacency information
194+
Return a specified surface or face
195+
\li Perform intersection with a line or a plane and represent the output in
196+
a surface specific manner
197+
\li Intersect the surface set with a plane, and trim the result with respect
198+
to the orientation of the plane
199+
\li Hit test. Compute the closest point in the surface set to a given point
200+
along a given line
201+
\li Append one or more new faces to the surface set
202+
\li Append another surface set to the current one
203+
\li Return information about the number of boundary loops in the surface
204+
set. One boundary loop will correspond to either a continuous subset
205+
of surface or a hole in the surface set.
206+
\li Return informations of gaps between surfaces in the set
207+
\li Return informations of kinks between surfaces in the set
208+
\li Return informations of sharp edges between surfaces in the set
209+
\li Triangulate the surface set with respect to a density parameter, and join
210+
the individual triangulations for each surface into one triangulation.
211+
\li Fetch information about neighbouring surfaces with inconsistent direc-
212+
tion of the surface normals
213+
\li Fetch all vertices in the surface set
214+
\li Fetch vertices lying at the boundaries of the surface set
215+
216+
Some functionality is special for isogeometric models where each surface
217+
is expected to be a non-trimmed spline surface and the surfaces should lie in
218+
a corner-to-corner configuration
219+
220+
\li Check if all surfaces are splines
221+
\li Check if the surface configuration is corner-to-corner
222+
\li Ensure a corner-to-corner configuration if this is not the case. The
223+
function applies only to spline surfaces
224+
\li Ensure that the spline surfaces in the model shares the spline space at
225+
common boundaries
226+
227+
All the surfaces in the surface model can be tesselated with respect to a
228+
default value or a pair of values given by the application, or a given subset
229+
of the surface model can be tesselated with respect to this resolution. The
230+
application can also specify the approximate number of quads in the tessela-
231+
tion. Each quad are divided into two triangles. Then a long and thin surface
232+
will get more triangles in the long direction. It is also possible to set the
233+
number of triangles in each parameter direction for each surface relative to
234+
a given density parameter. Then the length of each triangle should roughly
235+
approximate this density. The density should be set according to the total
236+
size of the model. An upper bound of the tesselation size exists, but a large
237+
model combined with a small density will still lead to a heavy visualization
238+
model.
239+
240+
*/
78241
#endif // _COMPOSITEMODEL_DOXYMAIN_H

gotools-core/include/GoTools/geometry/examples_doxymain.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ Example programs in gotools-core:
6969
- \ref surface_of_revolution
7070
- \ref torus
7171
72+
Example program in igeslib
73+
- \ref intersect_with_plane The program demonstrates reading from and writing to an IGES file and
74+
intersection between a \beginlink \link Go::ParamSurface parametric surface \endlink and a plane.
75+
7276
The module trivariate has the following example programs:
7377
- \ref coons_patch_volume_gen
7478
- \ref createCoonsVolume

0 commit comments

Comments
 (0)