Compare commits
11 Commits
v1.5.1
...
894bf6f1f0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
894bf6f1f0 | ||
|
|
99bdc3352e | ||
|
|
de574f0c50 | ||
|
|
f4ac74fe5f | ||
|
|
a47324183d | ||
|
|
6bbb6e1b15 | ||
|
|
f2b3fd216a | ||
|
|
38047844c1 | ||
|
|
95546ba14c | ||
|
|
535f9c41f4 | ||
|
|
70f58eb910 |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -1,4 +1,24 @@
|
|||||||
# TetGen: Release Notes
|
# TetGen: Release Notes
|
||||||
|
## Version 1.6.0 (August 31, 2020)
|
||||||
|
|
||||||
|
- Improved the speed of the Bowyer-Watson point insertion algorithm
|
||||||
|
for creating Delaunay tetrahedralization.
|
||||||
|
- Improved the robustness of the boundary recovery algorithm (-p -Y
|
||||||
|
options) for creating constrained tetrahedralizations. Now the
|
||||||
|
default algorithm for the \`\`-p\" option (boundary recobvery) is
|
||||||
|
the constrained tetrahedralization algorithm. It is robust and it
|
||||||
|
uses less Steiner points than the constrained Delaunay
|
||||||
|
tetrahedralization (CDT) algorothm uses. The option to use the CDT
|
||||||
|
algorithm is \`\`-p -D\".
|
||||||
|
- A new implementation of the constrained Delaunay refinement
|
||||||
|
algorithm (-q option). It uses new Steiner points insertion schemes
|
||||||
|
to remove badly-shaped elements.
|
||||||
|
- Implemented a new set of mesh smoothing and mesh improvement
|
||||||
|
operations (-O -o) for optimizing the quality of the meshes. The
|
||||||
|
overall mesh quality has been improved.
|
||||||
|
- (Change of the -d option) To detect self-intersection in the input
|
||||||
|
surface mesh is now directly done in the constrained
|
||||||
|
tetrahedralization algorithm (the -p option).
|
||||||
|
|
||||||
## Version 1.5.0 (November 4, 2013)
|
## Version 1.5.0 (November 4, 2013)
|
||||||
|
|
||||||
|
|||||||
20
LICENSE
20
LICENSE
@@ -1,23 +1,3 @@
|
|||||||
TetGen License
|
|
||||||
--------------
|
|
||||||
|
|
||||||
TetGen is distributed under a dual licensing scheme. You can
|
|
||||||
redistribute it and/or modify it under the terms of the GNU Affero
|
|
||||||
General Public License as published by the Free Software Foundation,
|
|
||||||
either version 3 of the License, or (at your option) any later
|
|
||||||
version. A copy of the GNU Affero General Public License is reproduced
|
|
||||||
below.
|
|
||||||
|
|
||||||
If the terms and conditions of the AGPL v.3. would prevent you from
|
|
||||||
using TetGen, please consider the option to obtain a commercial
|
|
||||||
license for a fee. These licenses are offered by the Weierstrass
|
|
||||||
Institute for Applied Analysis and Stochastics (WIAS). As a rule,
|
|
||||||
licenses are provided "as-is", unlimited in time for a one time
|
|
||||||
fee. Please send corresponding requests to:
|
|
||||||
tetgen@wias-berlin.de. Please do not forget to include some
|
|
||||||
description of your company and the realm of its activities.
|
|
||||||
|
|
||||||
=====================================================================
|
|
||||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
Version 3, 19 November 2007
|
Version 3, 19 November 2007
|
||||||
|
|||||||
25
README
25
README
@@ -1,25 +0,0 @@
|
|||||||
This is TetGen version 1.5.1 (released on August, 2018)
|
|
||||||
|
|
||||||
Please see the documentation of TetGen for compiling and using TetGen.
|
|
||||||
It is available at the following link:
|
|
||||||
|
|
||||||
http://www.tetgen.org
|
|
||||||
|
|
||||||
For more information on this product, contact :
|
|
||||||
|
|
||||||
Hang Si
|
|
||||||
Research Group of Numerical Mathematics and Scientific Computing
|
|
||||||
Weierstrass Institute for Applied Analysis and Stochastics
|
|
||||||
Mohrenstr. 39
|
|
||||||
10117 Berlin, Germany
|
|
||||||
|
|
||||||
Phone: +49 (0) 30-20372-446 Fax: +49 (0) 30-2044975
|
|
||||||
EMail: <si@wias-berlin.de>
|
|
||||||
Web Site: http://www.wias-berlin.de/~si
|
|
||||||
|
|
||||||
------------------- IMPORTANCE NOTICE -----------------------------
|
|
||||||
|
|
||||||
BEFORE INTALLING OR USING TetGen(R) READ the
|
|
||||||
GENERAL LICENSE TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
30
README.md
Normal file
30
README.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
TetGen
|
||||||
|
======
|
||||||
|
|
||||||
|
TetGen is a program to generate tetrahedral meshes of any 3D polyhedral domains. TetGen generates exact constrained Delaunay tetrahedralizations, boundary conforming Delaunay meshes, and Voronoi partitions.
|
||||||
|
|
||||||
|
TetGen versions up to v1.6.0 have been developed headed by [Hang Si](https://github.com/sihang0592) during his affiliation with [Weierstrass Institute for Applied Analysis and Stochastics, (WIAS) Berlin](https://www.wias-berlin.de/software/tetgen).
|
||||||
|
|
||||||
|
The primary development repository is [https://codeberg.org/TetGen/TetGen](https://codeberg.org/TetGen/TetGen). Please
|
||||||
|
open any issues in this repository. The github repository [https://github.com/TetGen/Tetgen](https://github.com/TetGen/Tetgen)
|
||||||
|
is a mirror of the codeberg repository.
|
||||||
|
|
||||||
|
This repository provides the source code of the most recent versions of TetGen.
|
||||||
|
The following releases are provided:
|
||||||
|
- [v1.4.3, 2011](https://codeberg.org/TetGen/TetGen/archive/v1.4.3.tar.gz): [MIT license with noncommercial clause](https://raw.githubusercontent.com/TetGen/TetGen/refs/tags/v1.4.3/LICENSE).
|
||||||
|
- [v1.5.0, 2013](https://codeberg.org/TetGen/TetGen/archive/v1.5.0.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html).
|
||||||
|
- [v1.5.1, 2018](https://codeberg.org/TetGen/TetGen/archive/v1.5.1.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html), recommended as most stable version.
|
||||||
|
- [v1.6.0, 2020](https://codeberg.org/TetGen/TetGen/archive/v1.6.0.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html), most recent version with some rough edges.
|
||||||
|
|
||||||
|
It is planned to resume active development of TetGen in cooperation between the main developer Hang Si and the Weierstrass Institute. Future versions of TetGen will be published via this repository.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
- Manuals are available in https://codeberg.org/TetGen/Manuals.
|
||||||
|
- A technical paper about TetGen is available at [Hang Si, "TetGen, a Delaunay-Based Quality Tetrahedral Mesh Generator". ACM Trans. on Mathematical Software. 41 (2), 2015](http://doi.acm.org/10.1145/2629697)
|
||||||
|
|
||||||
|
|
||||||
|
## Commercial licensing
|
||||||
|
|
||||||
|
TetGen versions developed at WIAS are distributed under a dual licensing scheme. As an alternative to the use of TetGen under the AGPLv3 license, consider the option to obtain a commercial license for a fee. These licenses are offered by the Weierstrass Institute for Applied Analysis and Stochastics (WIAS). As a rule, licenses are provided "as-is", unlimited in time for a one time fee. Please send corresponding requests to: `tetgen at wias-berlin.de`. Please do not forget to include some description of your company and the realm of its activities.
|
||||||
|
|
||||||
|
Due to the change of affiliation of Hang Si, details about the continuation of this dual licensing scheme for future versions of TetGen will be announced in the future. Please feel free to contact us if you have any questions.
|
||||||
0
example.poly
Normal file → Executable file
0
example.poly
Normal file → Executable file
@@ -399,7 +399,7 @@ static REAL ispstaticfilter;
|
|||||||
// http://www.math.utah.edu/~beebe/software/ieee/
|
// http://www.math.utah.edu/~beebe/software/ieee/
|
||||||
// The original program was "fpinfo2.c".
|
// The original program was "fpinfo2.c".
|
||||||
|
|
||||||
double fppow2(int n)
|
static double fppow2(int n)
|
||||||
{
|
{
|
||||||
double x, power;
|
double x, power;
|
||||||
x = (n < 0) ? ((double)1.0/(double)2.0) : (double)2.0;
|
x = (n < 0) ? ((double)1.0/(double)2.0) : (double)2.0;
|
||||||
@@ -412,12 +412,12 @@ double fppow2(int n)
|
|||||||
|
|
||||||
#ifdef SINGLE
|
#ifdef SINGLE
|
||||||
|
|
||||||
float fstore(float x)
|
static float fstore(float x)
|
||||||
{
|
{
|
||||||
return (x);
|
return (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_float(int verbose)
|
static int test_float(int verbose)
|
||||||
{
|
{
|
||||||
float x;
|
float x;
|
||||||
int pass = 1;
|
int pass = 1;
|
||||||
@@ -467,12 +467,12 @@ int test_float(int verbose)
|
|||||||
|
|
||||||
# else
|
# else
|
||||||
|
|
||||||
double dstore(double x)
|
static double dstore(double x)
|
||||||
{
|
{
|
||||||
return (x);
|
return (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_double(int verbose)
|
static int test_double(int verbose)
|
||||||
{
|
{
|
||||||
double x;
|
double x;
|
||||||
int pass = 1;
|
int pass = 1;
|
||||||
@@ -881,7 +881,7 @@ int expansion_sum_zeroelim2(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
|||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
static int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
||||||
/* h cannot be e or f. */
|
/* h cannot be e or f. */
|
||||||
{
|
{
|
||||||
REAL Q;
|
REAL Q;
|
||||||
@@ -953,7 +953,7 @@ int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
|||||||
/* properties. */
|
/* properties. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
int fast_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
int fast_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f, REAL *h)
|
||||||
/* h cannot be e or f. */
|
/* h cannot be e or f. */
|
||||||
{
|
{
|
||||||
@@ -1165,7 +1165,7 @@ int linear_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f,
|
|||||||
/* will h.) */
|
/* will h.) */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
|
int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
|
||||||
/* e and h cannot be the same. */
|
/* e and h cannot be the same. */
|
||||||
{
|
{
|
||||||
@@ -1211,7 +1211,7 @@ int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
|
|||||||
/* will h.) */
|
/* will h.) */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
|
int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
|
||||||
/* e and h cannot be the same. */
|
/* e and h cannot be the same. */
|
||||||
{
|
{
|
||||||
@@ -1263,7 +1263,7 @@ int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
|
|||||||
/* nonadjacent expansion. */
|
/* nonadjacent expansion. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
int compress(int elen, REAL *e, REAL *h)
|
int compress(int elen, REAL *e, REAL *h)
|
||||||
/* e and h may be the same. */
|
/* e and h may be the same. */
|
||||||
{
|
{
|
||||||
@@ -1306,7 +1306,7 @@ int compress(int elen, REAL *e, REAL *h)
|
|||||||
/* See either version of my paper for details. */
|
/* See either version of my paper for details. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
REAL estimate(int elen, REAL *e)
|
REAL estimate(int elen, REAL *e)
|
||||||
{
|
{
|
||||||
REAL Q;
|
REAL Q;
|
||||||
@@ -1344,7 +1344,7 @@ REAL estimate(int elen, REAL *e)
|
|||||||
/* nearly so. */
|
/* nearly so. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
static
|
||||||
REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
|
REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
|
||||||
{
|
{
|
||||||
REAL acx, bcx, acy, bcy;
|
REAL acx, bcx, acy, bcy;
|
||||||
@@ -1356,6 +1356,7 @@ REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
|
|||||||
return acx * bcy - acy * bcx;
|
return acx * bcy - acy * bcx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
REAL orient2dexact(REAL *pa, REAL *pb, REAL *pc)
|
REAL orient2dexact(REAL *pa, REAL *pb, REAL *pc)
|
||||||
{
|
{
|
||||||
INEXACT REAL axby1, axcy1, bxcy1, bxay1, cxay1, cxby1;
|
INEXACT REAL axby1, axcy1, bxcy1, bxay1, cxay1, cxby1;
|
||||||
@@ -4181,7 +4182,7 @@ REAL insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
|
|||||||
/* See my Robust Predicates paper for details. */
|
/* See my Robust Predicates paper for details. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
//static
|
||||||
REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
||||||
REAL aheight, REAL bheight, REAL cheight, REAL dheight,
|
REAL aheight, REAL bheight, REAL cheight, REAL dheight,
|
||||||
REAL eheight)
|
REAL eheight)
|
||||||
@@ -4397,6 +4398,7 @@ REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
|||||||
return deter[deterlen - 1];
|
return deter[deterlen - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
REAL orient4dadapt(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
REAL orient4dadapt(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
||||||
REAL aheight, REAL bheight, REAL cheight, REAL dheight,
|
REAL aheight, REAL bheight, REAL cheight, REAL dheight,
|
||||||
REAL eheight, REAL permanent)
|
REAL eheight, REAL permanent)
|
||||||
@@ -4700,3 +4702,9 @@ REAL orient4d(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
17883
tetgen.cxx
17883
tetgen.cxx
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user