⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 triangle.h

📁 最新delaunay 算法源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*! \file triangle.h        \brief Exports triangulateio structure for use in del_impl.hpp		You should not use struct triangulateio in your application		if you are using this wrapper. *//*****************************************************************************//*                                                                           *//*  (triangle.h)                                                             *//*                                                                           *//*  Include file for programs that call Triangle.                            *//*                                                                           *//*  Accompanies Triangle Version 1.6                                         *//*  July 28, 2005                                                            *//*                                                                           *//*  Copyright 1996, 2005                                                     *//*  Jonathan Richard Shewchuk                                                *//*  2360 Woolsey #H                                                          *//*  Berkeley, California  94705-1927                                         *//*  jrs@cs.berkeley.edu                                                      *//*                                                                           *//*****************************************************************************//*****************************************************************************//*                                                                           *//*  How to call Triangle from another program                                *//*                                                                           *//*                                                                           *//*  If you haven't read Triangle's instructions (run "triangle -h" to read   *//*  them), you won't understand what follows.                                *//*                                                                           *//*  Triangle must be compiled into an object file (triangle.o) with the      *//*  TRILIBRARY symbol defined (generally by using the -DTRILIBRARY compiler  *//*  switch).  The makefile included with Triangle will do this for you if    *//*  you run "make trilibrary".  The resulting object file can be called via  *//*  the procedure triangulate().                                             *//*                                                                           *//*  If the size of the object file is important to you, you may wish to      *//*  generate a reduced version of triangle.o.  The REDUCED symbol gets rid   *//*  of all features that are primarily of research interest.  Specifically,  *//*  the -DREDUCED switch eliminates Triangle's -i, -F, -s, and -C switches.  *//*  The CDT_ONLY symbol gets rid of all meshing algorithms above and beyond  *//*  constrained Delaunay triangulation.  Specifically, the -DCDT_ONLY switch *//*  eliminates Triangle's -r, -q, -a, -u, -D, -Y, -S, and -s switches.       *//*                                                                           *//*  IMPORTANT:  These definitions (TRILIBRARY, REDUCED, CDT_ONLY) must be    *//*  made in the makefile or in triangle.c itself.  Putting these definitions *//*  in this file (triangle.h) will not create the desired effect.            *//*                                                                           *//*                                                                           *//*  The calling convention for triangulate() follows.                        *//*                                                                           *//*      void triangulate(triswitches, in, out, vorout)                       *//*      char *triswitches;                                                   *//*      struct triangulateio *in;                                            *//*      struct triangulateio *out;                                           *//*      struct triangulateio *vorout;                                        *//*                                                                           *//*  `triswitches' is a string containing the command line switches you wish  *//*  to invoke.  No initial dash is required.  Some suggestions:              *//*                                                                           *//*  - You'll probably find it convenient to use the `z' switch so that       *//*    points (and other items) are numbered from zero.  This simplifies      *//*    indexing, because the first item of any type always starts at index    *//*    [0] of the corresponding array, whether that item's number is zero or  *//*    one.                                                                   *//*  - You'll probably want to use the `Q' (quiet) switch in your final code, *//*    but you can take advantage of Triangle's printed output (including the *//*    `V' switch) while debugging.                                           *//*  - If you are not using the `q', `a', `u', `D', `j', or `s' switches,     *//*    then the output points will be identical to the input points, except   *//*    possibly for the boundary markers.  If you don't need the boundary     *//*    markers, you should use the `N' (no nodes output) switch to save       *//*    memory.  (If you do need boundary markers, but need to save memory, a  *//*    good nasty trick is to set out->pointlist equal to in->pointlist       *//*    before calling triangulate(), so that Triangle overwrites the input    *//*    points with identical copies.)                                         *//*  - The `I' (no iteration numbers) and `g' (.off file output) switches     *//*    have no effect when Triangle is compiled with TRILIBRARY defined.      *//*                                                                           *//*  `in', `out', and `vorout' are descriptions of the input, the output,     *//*  and the Voronoi output.  If the `v' (Voronoi output) switch is not used, *//*  `vorout' may be NULL.  `in' and `out' may never be NULL.                 *//*                                                                           *//*  Certain fields of the input and output structures must be initialized,   *//*  as described below.                                                      *//*                                                                           *//*****************************************************************************//*****************************************************************************//*                                                                           *//*  The `triangulateio' structure.                                           *//*                                                                           *//*  Used to pass data into and out of the triangulate() procedure.           *//*                                                                           *//*                                                                           *//*  Arrays are used to store points, triangles, markers, and so forth.  In   *//*  all cases, the first item in any array is stored starting at index [0].  *//*  However, that item is item number `1' unless the `z' switch is used, in  *//*  which case it is item number `0'.  Hence, you may find it easier to      *//*  index points (and triangles in the neighbor list) if you use the `z'     *//*  switch.  Unless, of course, you're calling Triangle from a Fortran       *//*  program.                                                                 *//*                                                                           *//*  Description of fields (except the `numberof' fields, which are obvious): *//*                                                                           *//*  `pointlist':  An array of point coordinates.  The first point's x        *//*    coordinate is at index [0] and its y coordinate at index [1], followed *//*    by the coordinates of the remaining points.  Each point occupies two   *//*    REALs.                                                                 *//*  `pointattributelist':  An array of point attributes.  Each point's       *//*    attributes occupy `numberofpointattributes' REALs.                     *//*  `pointmarkerlist':  An array of point markers; one int per point.        *//*                                                                           *//*  `trianglelist':  An array of triangle corners.  The first triangle's     *//*    first corner is at index [0], followed by its other two corners in     *//*    counterclockwise order, followed by any other nodes if the triangle    *//*    represents a nonlinear element.  Each triangle occupies                *//*    `numberofcorners' ints.                                                *//*  `triangleattributelist':  An array of triangle attributes.  Each         *//*    triangle's attributes occupy `numberoftriangleattributes' REALs.       *//*  `trianglearealist':  An array of triangle area constraints; one REAL per *//*    triangle.  Input only.                                                 *//*  `neighborlist':  An array of triangle neighbors; three ints per          *//*    triangle.  Output only.                                                *//*                                                                           *//*  `segmentlist':  An array of segment endpoints.  The first segment's      *//*    endpoints are at indices [0] and [1], followed by the remaining        *//*    segments.  Two ints per segment.                                       *//*  `segmentmarkerlist':  An array of segment markers; one int per segment.  *//*                                                                           *//*  `holelist':  An array of holes.  The first hole's x and y coordinates    *//*    are at indices [0] and [1], followed by the remaining holes.  Two      *//*    REALs per hole.  Input only, although the pointer is copied to the     *//*    output structure for your convenience.                                 *//*                                                                           *//*  `regionlist':  An array of regional attributes and area constraints.     *//*    The first constraint's x and y coordinates are at indices [0] and [1], *//*    followed by the regional attribute at index [2], followed by the       *//*    maximum area at index [3], followed by the remaining area constraints. *//*    Four REALs per area constraint.  Note that each regional attribute is  *//*    used only if you select the `A' switch, and each area constraint is    *//*    used only if you select the `a' switch (with no number following), but *//*    omitting one of these switches does not change the memory layout.      *//*    Input only, although the pointer is copied to the output structure for *//*    your convenience.                                                      *//*                                                                           *//*  `edgelist':  An array of edge endpoints.  The first edge's endpoints are */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -