mi32/tinfuncs.h

Go to the documentation of this file.
00001 /********************************************************************
00002 *
00003 * mi32/tinfuncs.h - TIN manipulation functions include file
00004 *
00005 * \if NODOC
00006 * $Id: tinfuncs.h_v 1.36 2003/09/15 13:49:56 fileserver!dwilliss Exp $
00007 *
00008 * $Log: tinfuncs.h_v $
00009 * Revision 1.36  2003/09/15 13:49:56  fileserver!dwilliss
00010 * Doxygen
00011 *
00012 * Revision 1.35  2002/10/04 21:46:04  scowan
00013 * nc.
00014 *
00015 * Revision 1.34  2001/12/27 18:32:21  scowan
00016 * More const for parms.
00017 *
00018 * Revision 1.33  2000/10/10 21:39:57  msmith
00019 * Genitor documentation.
00020 *
00021 * Revision 1.32  2000/09/01 13:16:02  mju
00022 * Include rvcqtree.h for QTREEHANDLE defn.
00023 *
00024 * Revision 1.31  2000/08/31 21:51:54  scowan
00025 * Undo changes.
00026 *
00027 * Revision 1.30  2000/05/12 16:00:22  scowan
00028 * Added grouping.
00029 *
00030 * Revision 1.29  1999/10/20 20:43:49  mju
00031 * const filenames.
00032 *
00033  * Revision 1.28  1999/10/04  21:03:33  scowan
00034  * Fixed elem type changes.
00035  *
00036 * Revision 1.27  1999/07/30 21:57:08  dfrolov
00037 * add MfTINMerge() function
00038 *
00039  * Revision 1.26  1999/05/26  16:00:15  mju
00040  * Add headers and forward declarations so will compile on own.
00041  *
00042 *
00043 * \endif
00044 *********************************************************************/
00045 
00046 #ifndef  INC_MI32_TINFUNCS_H
00047 #define  INC_MI32_TINFUNCS_H
00048 
00049 #ifndef  INC_MI32_STDDEFNS_H
00050 #include <mi32/stddefns.h>
00051 #endif
00052 
00053 #ifndef  INC_MI32_FNAMEMAX_H
00054 #include <mi32/fnamemax.h>
00055 #endif
00056 
00057 #ifndef  INC_MI32_ELEMTYPE_H
00058 #include <mi32/elemtype.h>
00059 #endif
00060 
00061 #ifndef  INC_MI32_RVCQTREE_H
00062 #include <mi32/rvcqtree.h>
00063 #endif
00064 
00065 /* Forward declarations */
00066 
00067 struct RVCTININFO;
00068 struct RVCTINEDGE;
00069 struct DBLISTELMT;
00070 
00071 
00072 typedef void* TEHANDLE;
00073 
00074 struct MftAnyCallbackStruct {
00075    TEHANDLE th;
00076    UINT32 reason;
00077    INT32 ElemNum;
00078    INT32 OtherElemNum;        //!<  Set if reason is a Delete 
00079    ELEMTYPE ElemType;
00080    };
00081 
00082 struct TEDCBL {
00083    void (*NotifyCB)(MftAnyCallbackStruct*, void*);
00084    void *NotifyUserData;
00085    TEDCBL *next;
00086    };
00087 
00088 #define MftCR_Add          0x00000001
00089 #define MftCR_Delete       0x00000002
00090 #define MftCR_MoveBegin    0x00000004
00091 #define MftCR_MoveEnd      0x00000008
00092 
00093 #define MftSave_ComputeStat 0x00000001
00094 #define MftRebuild_Hulls    0x00000002
00095 
00096 #define TINCLIPMODE_Include   1
00097 #define TINCLIPMODE_Exclude   2
00098 
00099 struct TEDITINFO {
00100    UNICODE filename[FILENAME_MAX];
00101    int findex;                      //!<  Handle to open RVC file 
00102    int TINid;                       //!<  Handle to open tin object 
00103    int dbid;                        //!<  TIN database handle 
00104    RVCTININFO *Info;
00105    double SnapDist;
00106    UINT32 SnapOpt;
00107    QTREEHANDLE triQtree;
00108    QTREEHANDLE nodeQtree;
00109    QTREEHANDLE edgeQtree;
00110    bool WasPreOpened;
00111    bool EnableCallback;
00112    bool IsChanged;      //!<  set to 1 if any changes was made 
00113    TEDCBL *NotifyCBList;
00114    UINT32 flags;
00115    
00116    //! Call notify callback.
00117    void CallNotifyCallback (
00118       UINT32 reason, 
00119       ELEMTYPE ElemType, 
00120       INT32 ElemNum, 
00121       INT32 OtherElemNum
00122       );
00123 
00124    //! Remove all q-tree from the memory.
00125    ERRVALUE ShutdownQTrees (
00126       );
00127       
00128    };
00129    
00130 
00131 #define MFTFLAG_NoSaveQTree      0x00000010
00132 
00133 #if defined(__cplusplus)
00134 extern "C" {
00135 #endif
00136 
00137 //!:Associate with "TIN Toolkit"
00138 //!\addtogroup TINToolkit TIN Toolkit
00139 //!@{
00140 
00141 //! Initialize TIN toolkit handle.
00142 //!
00143 //! @return TIN Handle
00144 TEHANDLE MftInit (
00145    void
00146    );
00147 
00148 //! Open TIN object and setup.
00149 int MftOpen (
00150    TEHANDLE vh,                        //!< TIN toolkit handle
00151    const UNICODE *filename,            //!< Filename to open
00152    INT32 inode,                        //!< Inode of TIN object
00153    RVCTININFO *vinfo,                  //!< TIN info
00154    UINT32 flags                        //!< Flags
00155    );
00156 
00157 //! Setup TIN toolkit for specified TIN object.
00158 int MftSetup (
00159    TEHANDLE vh,                        //!< TIN toolkit handle
00160    int id,                             //!< Id of TIN object
00161    RVCTININFO *tinfo,                  //!< TIN info
00162    UINT32 flags                        //!< Flags
00163    );
00164 
00165 //! Create new TIN object and initialize toolkit
00166 int MftNew (
00167    TEHANDLE vh,                        //!< TIN toolkit handle
00168    const UNICODE *filename,            //!< Filename to open
00169    RVCTININFO *Info,                   //!< TIN info
00170    UINT32 flags                        //!< Flags
00171    );
00172 
00173 //! Get TIN handle.
00174 //!
00175 //! @return TIN id
00176 int MftGetHandle (
00177    TEHANDLE th                         //!< TIN toolkit handle
00178    );
00179 
00180 //! Enable/disable callback calls.
00181 int MftEnableCallbacks (
00182    TEHANDLE vh,                        //!< TIN toolkit handle
00183    bool Flag                           //!< Enable / disable callback flag
00184    );
00185 
00186 //! Recompute extents for whole TIN object.
00187 int MftComputeExtents (
00188    TEHANDLE th                         //!< TIN toolkit handle
00189    );
00190 
00191 //! Close current TIN object.
00192 int MftClose (
00193    TEHANDLE th,                        //!< TIN toolkit handle
00194    UINT32 flags                        //!< Flags
00195    );
00196 
00197 //! Save TIN object in the suppled object.
00198 int MftSave (
00199    TEHANDLE th,                        //!< TIN toolkit handle
00200    int dfindex,
00201    RVCGENINFO *geninfo,
00202    UINT32 flags                        //!< Flags
00203    );
00204 
00205 //! Set flags.
00206 UINT32 MftSetFlags (
00207    TEHANDLE vh,                        //!< TIN toolkit handle
00208    UINT32 flags                        //!< Flags
00209    );
00210 
00211 //! Assign notify callback.
00212 void MftSetNotifyCallback (
00213    TEHANDLE th,                        //!< TIN toolkit handle
00214    void (*NotifyCB)(MftAnyCallbackStruct*, void*), //! Callback function
00215    void *udata                         //!< Callback data
00216    );
00217 
00218 //! Remove previously assigned notify callback.
00219 void MftRemoveNotifyCallback (
00220    TEHANDLE th,                        //!< TIN toolkit handle
00221    void (*NotifyCB)(MftAnyCallbackStruct*, void*)  //! Callback function
00222    );
00223 
00224 //! Does nothing now.
00225 void MftSetDatabaseMode (
00226    TEHANDLE th,                        //!< TIN toolkit handle
00227    int ElemType,                       //!< Element type
00228    UINT32 dbtype                       //!< Database type
00229    );
00230 
00231 //! Get qtree handle for specified element.
00232 void *MftGetQTree (
00233    TEHANDLE th,                        //!< TIN toolkit handle
00234    int ElemType                        //!< Element type
00235    );
00236 
00237 //! Get number of element of specified type.
00238 INT32 MftGetNumElements (
00239    TEHANDLE th,                        //!< TIN toolkit handle
00240    int ElemType                        //!< Element type
00241    );
00242 
00243 //! Does nothing now.
00244 int MftGetDBHandle (
00245    TEHANDLE th,                        //!< TIN toolkit handle
00246    int ElemType                        //!< Element type
00247    );
00248 
00249 //! Does nothing now.
00250 int MftGetStyleHandle (
00251    TEHANDLE th                         //!< TIN toolkit handle
00252    );
00253 
00254 //! Get extents for specified element.
00255 int MftGetElemRect (
00256    TEHANDLE vh,                        //!< TIN toolkit handle
00257    int ElemType,                       //!< Element type
00258    INT32 ElemNum,                      //!< Element number
00259    DRECT2D *rect                       //!< Extents rectangle returned
00260    );
00261 
00262 //! Get internal z-value of TIN node.
00263 //!
00264 //! @return z-value
00265 double MftGetZValue (
00266    TEHANDLE th,                        //!< TIN toolkit handle
00267    int ElemType,                       //!< Element type
00268    INT32 ElemNum                       //!< Element number
00269    );
00270 
00271 //! Set internal z-value (for TIN node).
00272 int MftSetZValue (
00273    TEHANDLE vh,                        //!< TIN toolkit handle
00274    int ElemType,                       //!< Element type
00275    INT32 ElemNum,                      //!< Element number
00276    double zvalue                       //!< Z-value
00277    );
00278 
00279 //! Set qtree handle for specified ELEMENTTYPE.
00280 void MftSetQTree (
00281    TEHANDLE vh,                        //!< TIN toolkit handle
00282    int ElemType,                       //!< Element type
00283    QTREEHANDLE qtree                   //!< Qtree handle
00284    );
00285 
00286 //! Close & free TIN toolkit.
00287 void MftStop (
00288    TEHANDLE th                         //!< TIN toolkit handle
00289    );
00290 
00291 //! Add a "hard edge" breakline to the TIN structure.
00292 int MftAddLine (
00293    TEHANDLE th,                        //!< TIN toolkit handle
00294    DPOINT3D *Line,                     //!< Line to add
00295    INT32 Num                           //!< Number of points in line
00296    );
00297 
00298 //! Add a "hard edge" breakline to the TIN structure, with elevation control.
00299 int MftAddLineExt (
00300    TEHANDLE th,                        //!< TIN toolkit handle
00301    DPOINT3D *Line,                     //!< Line to add
00302    INT32 Num,                          //!< Number of points in line
00303    int HasElevation                    //!< Set to TRUE if this is a "real" 3D line, otherwise set to FALSE
00304    );
00305 
00306 //! Add new node to the TIN structure.
00307 int MftAddNode (
00308    TEHANDLE th,                        //!< TIN toolkit handle
00309    DPOINT3D *P                         //!< New node location
00310    );
00311 
00312 //! Add new node to TIN.
00313 int MftAddNodeExt (
00314    TEHANDLE th,                        //!< TIN toolkit handle
00315    DPOINT3D *P,                        //!< New node location
00316    int TryOutside
00317    );
00318 
00319 //! Add breaklines to the TIN structure from the vector object.
00320 int MftAddVectorBreaklines (
00321    TEHANDLE th,                        //!< TIN toolkit handle
00322    const UNICODE *filename,                  //!< Vector filename
00323    INT32 inode,                        //!< Vector object inode
00324    INT32 gvectinode                    //!< Inode of the georeference subobject to use
00325    );
00326 
00327 //! Add a breakline to the TIN structure as a 2 point segment.
00328 int MftAddSegment (
00329    TEHANDLE th,                        //!< TIN toolkit handle
00330    DPOINT3D *start,                    //!< Start point
00331    DPOINT3D *end,                      //!< End point
00332    UINT8 type,                         //!< 0 for "soft" edge, TINEDGE_Hard for "hard" edge
00333    int HasElevation                    //!< Number of points in line - not set when breakline doesn't have an elevation
00334    );
00335 
00336 //! Remove all triangles that fall within given list of exclude areas (polygons).
00337 int MftApplyExclude (
00338    TEHANDLE th,                        //!< TIN toolkit handle
00339    DPOLYGON *Exclude,                  //!< List of polygons
00340    INT32 NumExclude                    //!< Number of exclude polygons
00341    );
00342 
00343 //! Create list of connected edges for each node (Node-to-Edge link table).
00344 int MftBuildNodeToEdgeLinks (
00345    TEHANDLE th                         //!< TIN toolkit handle
00346    );
00347 
00348 //! Clip TIN structure using vector object.
00349 int MftClipByVector (
00350    TEHANDLE th,                        //!< TIN toolkit handle
00351    const UNICODE *filename,                  //!< Vector filename
00352    INT32 inode,                        //!< Vector object inode
00353    INT32 gvectinode,                   //!< Inode of the georeference subobject to use
00354    int ClipMode                        //!< Flag: TINCLIPMODE_Include or TINCLIPMODE_Exclude
00355    );
00356 
00357 //! Compute z-value for a given x,y location.
00358 int MftComputeElevation (
00359    TEHANDLE thandle,                   //!< TIN toolkit handle
00360    DPOINT3D *P                         //!< Point to calculate z-value from
00361    );
00362 
00363 //! Compute standart statistics for TIN triangles.
00364 int MftComputeStatistics (
00365    TEHANDLE th                         //!< TIN toolkit handle
00366    );
00367 
00368 //! Create TIN from scratch or replace existing TIN.
00369 int MftCreateTIN (
00370    TEHANDLE th,                        //!< TIN toolkit handle
00371    DPOINT3D *Nodes,                    //!< List of input points
00372    INT32 NumNodes,                     //!< Number of input points
00373    DOUBLE zscale,                      //!< Scale coeff
00374    DOUBLE zoffset,                     //!< Offset coeff
00375    DOUBLE xytolerance                  //!< Tolerance, minim. allowed distance between points
00376    );
00377 
00378 //! Create TIN from scratch with minimized memory usage.
00379 //!
00380 //! NO QTREE WILL BE MAINTAINED !!!
00381 //! THIS FUNCTIONS IS NOT FOR USAGE WITHIN TNTedit!
00382 int MftCreateTINBatch (
00383    TEHANDLE th,                        //!< TIN toolkit handle
00384    DPOINT3D **Data,
00385    INT32 NumNodes,                     //!< Number of nodes
00386    DOUBLE zscale,                      //!< Z scale
00387    DOUBLE zoffset,                     //!< Z offset
00388    DOUBLE xytolerance                  //!< XY tolerance
00389    );
00390 
00391 //! Delete given node and recompute triangulation in affected area.
00392 int MftDeleteNode (
00393    TEHANDLE th,                        //!< TIN toolkit handle
00394    INT32 Num                           //!< Node number to delete
00395    );
00396 
00397 //! Delete set of nodes.
00398 int MftDeleteNodes (
00399    TEHANDLE th,                        //!< TIN toolkit handle
00400    INT32 *NodeList,                    //!< Nodes to delete
00401    INT32 Nums                          //!< Number of nodes
00402    );
00403 
00404 //! Delete set of nodes.
00405 int MftDeleteNodesHole (
00406    TEHANDLE th,                        //!< TIN toolkit handle
00407    INT32 *NodeList,                    //!< Nodes to delete
00408    INT32 Nums                          //!< Number of nodes
00409    );
00410 
00411 //! Delete node from tin object and make a hole there.
00412 //!
00413 //! IMPORTANT: Do not use this function to delete more than one node,
00414 //!      UNLESS you have sorted NodeNum in descending order.
00415 //!      Node numbers might changed after each call.
00416 int MftDeleteNodeHole (
00417    TEHANDLE th,                        //!< TIN toolkit handle
00418    INT32 NodeNum                       //!< Number of node
00419    );
00420 
00421 //! Delete set of triangles.
00422 int MftDeleteTriangles (
00423    TEHANDLE th,                        //!< TIN toolkit handle
00424    INT32 *List,                        //!< Triangles to delete
00425    INT32 Nums                          //!< Number of triangles
00426    );
00427 
00428 //! Make a "hole" from triangle.
00429 //!
00430 //! IMPORTANT: Do not use this function to delete more than one triangle,
00431 //!      UNLESS you have sorted Nums in descending order.
00432 //!      Triangle numbers might changed after each call.
00433 int MftDeleteTriangleHole (
00434    TEHANDLE th,                        //!< TIN toolkit handle
00435    INT32 Num                           //!< Triangle number
00436    );
00437 
00438 //! Delete edge (and 2 adj. triangles) and make a hole in the TIN.
00439 //!
00440 //! IMPORTANT: Do not use this function to delete more than one edge,
00441 //!      UNLESS you have sorted Nums in descending order.
00442 //!      Edge numbers might changed after each call.
00443 int MftDeleteEdgeHole (
00444    TEHANDLE th,                        //!< TIN toolkit handle
00445    INT32 Num                           //!< Edge Number
00446    );
00447 
00448 //! Delete set of edges.
00449 int MftDeleteEdges (
00450    TEHANDLE th,                        //!< TIN toolkit handle
00451    INT32 *List,                        //!< Edges to delete
00452    INT32 Nums                          //!< Number of edges
00453    );
00454 
00455 //! Get list of all nodes connected to given node.
00456 //!
00457 //! @return number of nodes - on success, < 0 on error.
00458 //! NOTE: this function assumes that TIN object has node-to-edge links,
00459 //!       if not call MftBuildNodeToEdgeLinks(..) function.
00460 int MftGetConnectedNodeList (
00461    TEHANDLE th,                        //!< TIN toolkit handle
00462    INT32 Num,                          //!< Node number
00463    INT32 **list                        //!< List of node numbers returned
00464    );
00465 
00466 //! Get orienation for the given edge.
00467 //!
00468 //! NOTE: angle measured in radians
00469 int MftGetEdgeAzimuth (
00470    TEHANDLE th,                        //!< TIN toolkit handle
00471    INT32 NodeNum,                      //!< Node number that will be a start point
00472    RVCTINEDGE *Edge,                   //!< Edge description (passed)
00473    DOUBLE *Angle                       //!< Orientation angle (returned)
00474    );
00475 
00476 //! General function for building TINs.
00477 //!   AVOID USING THIS FUNCTION UNLESS YOUR COMPLETELY UNDERSTAND
00478 //!   THE FOLLOWING INFORMATION. USE SPECIALIZED FUNCTIONS INSTEAD.
00479 //!
00480 //! WARNING: This function intended to rebuild topology for entire TIN or add
00481 //! one hull (!). If programmer wants to rebuild entire TIN and not to use
00482 //! any cliping areas or exclude areas - set all NumNodes, NumEdges and
00483 //! NumTriangles to zero. Otherwise, this function will add new elements
00484 //! to the end of each table. If programmer wants to build complex TIN
00485 //! object with multiple hulls - call this function for each separate hull.
00486 //! Programmers needs in this case description of "CLIP" polygon and
00487 //! list of exclude areas. Clip polygon can be only one per hull.
00488 //! WARNING: if you want to rebuild entire tin object do not forget to
00489 //! set minval and maxval before calling this function to DBL_MAX & DBL_MIN.
00490 //!
00491 //! Note : This function will NOT UPDATE hull structure unless flag is set.
00492 //! ATTENTION: This function will update QTrees.
00493 //! ATTENTION: New nodes should be not in Qtree structure before calling
00494 //! this function - in this case there will be a redundancy.
00495 int MftGenerateTIN (
00496    TEHANDLE th,                        //!< TIN toolkit handle
00497    DPOINT3D *Pool,                     //!< Input points, not necessary all points should belong to this hull
00498    INT32 NumPoints,                    //!< Number of input points
00499    DPOLYGON *Clip,                     //!< Clip polygon
00500    DPOLYGON *Exclude,                  //!< List of exclude areas
00501    INT32 NumExclude,                   //!< Number of exclude areas in the previous list
00502    INT32 Flag                          //!< Flag: 1 - update all hull strcutures, 0 - skip
00503    );
00504 
00505 //! Get sorted list of edges that connected to this node.
00506 //!
00507 //! @return number of edges or error if < 0
00508 //! IMPORTANT: This function assumes that there is no Node-to-Edge link
00509 //!      table in TIN object. This function used to build such list.
00510 INT32 MftGetNodeEdges (
00511    TEHANDLE vh,                        //!< TIN toolkit handle
00512    INT32 Num,                          //!< Node number
00513    INT32 **edgelist                    //!< List of edge numbers returned
00514    );
00515 
00516 //! Get a list of tin nodes as DPOINT3D/DPOINT2D/RVCTINNODE array.
00517 int MftGetNodes (
00518    TEHANDLE th,                        //!< TIN toolkit handle
00519    INT32 NodeNum,                      //!< Node number
00520    INT32 *NumNodes,                    //!< Number of connected nodes returned
00521    void  **Array,                      //!< Nodes data returned
00522    INT32 **List,                       //!< List of connected node numbers
00523    INT32 flag                          //!< if flag = 0, output is RVCTINNODE, 1 - DPOINT3D, 2 - DPOINT2D
00524    );
00525 
00526 //! Compute plane equation coefficients for given triangle.
00527 //!
00528 //! NOTE: a * x + b * y + c * z + d = 0
00529 int MftGetPlaneEquation (
00530    TEHANDLE thandle,                   //!< TIN toolkit handle
00531    INT32 TriNum,                       //!< Triangle number
00532    DOUBLE* a,                          //!< X coefficient returned
00533    DOUBLE* b,                          //!< Y coefficient returned
00534    DOUBLE* c,                          //!< Z coefficient returned
00535    DOUBLE *d                           //!< offset returned
00536    );
00537 
00538 //! Get list of triangles which have given node as vertex.
00539 int MftGetSurroundTriangles (
00540    TEHANDLE th,                        //!< TIN toolkit handle
00541    INT32 NodeNum,                      //!< Node number
00542    INT32 **TriList,                    //!< List of triangles returned
00543    INT32 **EdgeList,                   //!< List of surround edges returned
00544    INT32 **NodeList,                   //!< List of surround nodes returned
00545    INT32 *trinum,                      //!< Number of triangles
00546    INT32 *edgenum,                     //!< Number of edges
00547    INT32 *nodenum                      //!< Number of nodes
00548    );
00549 
00550 //! Get list of triangles that are within (even partially) given polygon.
00551 int MftGetTrianglesPoly (
00552    TEHANDLE th,                        //!< TIN toolkit handle
00553    DPOLYGON *poly,                     //!< Polygon description
00554    INT32 **TList,                      //!< List of triangles  returned
00555    INT32 *num                          //!< Number of triangles returned
00556    );
00557 
00558 //! Filter TIN structure.
00559 int MftMedianFiltering (
00560    TEHANDLE thandle                    //!< TIN toolkit handle
00561    );
00562 
00563 //! Recreate hull structures.
00564 //!
00565 //! 1. Read edges and find any that has "universe" triangle as neighbor.
00566 //! 2. Start tracing hull from this point until "chain" will be closed
00567 //! 3. Determine is it "universe" or "exclude" hull
00568 //! 4. Save information about this hull and start again until any unprocessed
00569 //!    edge exists. All processed edges are marked in the binary array.
00570 int MftRebuildHulls (
00571    TEHANDLE th                         //!< TIN toolkit handle
00572    );
00573 
00574 //! Rebuild entire TIN as one hull without any respect to exclude areas.
00575 int MftRebuildTIN (
00576    TEHANDLE th                         //!< TIN toolkit handle
00577    );
00578 
00579 //! Recover from the undo operation.
00580 ERRVALUE MftRecoverFromUndo (
00581    TEHANDLE th                         //!< TIN toolkit handle
00582    );
00583 
00584 //! Removes nodes that connected to nodes with z-value equal to its own.
00585 //!
00586 //! This function removes FLAT TRIANGLES using tolerance.
00587 int MftRemoveFlatNodes (
00588    TEHANDLE thandle,                   //!< TIN toolkit handle
00589    DOUBLE dz,                          //!< Tolerance: max. allowed difference in z-values
00590    DOUBLE minedge                      //!< Minimum edge length between 2 nodes that are within dz-tolerance
00591    );
00592 
00593 //! This function will delete edges that are longer than specified length and create empty holes in those areas.
00594 int MftRemoveLongEdges (
00595    TEHANDLE th,                        //!< TIN toolkit handle
00596    DOUBLE distance                     //!< Maximum possible distance
00597    );
00598 
00599 //! Validate TIN topology for entire object.
00600 //!
00601 //! THIS FUNCTION CAN'T FIX TOPOLOGY!
00602 int MftValidateTINTopology (
00603    TEHANDLE th,                        //!< TIN toolkit handle
00604    INT32 flag                          //!< If flag equals to 0 process will not check node-edge connectivity
00605    );
00606 
00607 //! This function blindly combines 2 TINs (using georeference) into one, and recomputes topology.
00608 //!
00609 //! This function is not a member of TIN toolkit, but it uses it internally.
00610 //! Georeference handling: The output TIN object will have a georeference
00611 //! based on first (A) TIN object.
00612 int MfTINMerge (
00613    int idA,                            //!< Input TIN object 1
00614    INT32 ginodeA,                      //!< Georeference inode for TIN object 1
00615    int idB,                            //!< Input TIN object 2
00616    INT32 ginodeB,                      //!< Georeference inode for TIN object 2
00617    RVC::OBJITEM& ObjItem            //!< output object
00618    );
00619 
00620 //!@}
00621 
00622 #if defined(__cplusplus)
00623 }
00624 #endif
00625 
00626 #endif

Generated on Thu Aug 12 06:19:10 2004 for TNTsdk by doxygen 1.3.4-20031026