Showing preview only (2,459K chars total). Download the full file or copy to clipboard to get everything.
Repository: inducer/meshpy
Branch: main
Commit: a4f35d5f9293
Files: 71
Total size: 2.3 MB
Directory structure:
gitextract_18fujhnm/
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── autopush.yml
│ ├── ci.yml
│ └── wheels.yml
├── .gitignore
├── .gitlab-ci.yml
├── CITATION.cff
├── LICENSE
├── README.rst
├── doc/
│ ├── conf.py
│ ├── faq.rst
│ ├── geometry.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── tri-tet.rst
│ └── upload-docs.sh
├── examples/
│ ├── MESH_README.txt
│ ├── airfoil3d.py
│ ├── box-in-box.py
│ ├── clean.sh
│ ├── demo.py
│ ├── jw_mesh_examples.ipynb
│ ├── jw_meshtools.py
│ ├── ka-6d.ply
│ ├── mesh_ply.py
│ ├── nico_mesh.py
│ ├── test_ball.py
│ ├── test_cylinder.py
│ ├── test_tet_torus.py
│ ├── test_tetgen.py
│ ├── test_tetgen_2.py
│ ├── test_tri_pml.py
│ ├── test_tri_quadratic.py
│ ├── test_tri_simple_square.py
│ ├── test_triangle.py
│ ├── test_triangle_refine.py
│ ├── test_triangle_with_specified_points.py
│ ├── tet-size-control.py
│ ├── tri-boundary-markers.py
│ ├── tri-refinement-spec.py
│ └── write_dolfin.py
├── meshpy/
│ ├── __init__.py
│ ├── common.py
│ ├── geometry.py
│ ├── naca.py
│ ├── ply.py
│ ├── tet.py
│ ├── tools.py
│ └── triangle.py
├── meson.build
├── patches/
│ ├── mk-patch
│ ├── tetgen-1.4.2.patch
│ └── tetgen-1.4.3.patch
├── pyproject.toml
├── src/
│ └── cpp/
│ ├── foreign_array.hpp
│ ├── foreign_array_wrap.hpp
│ ├── predicates.cpp
│ ├── tetgen-LICENSE
│ ├── tetgen.cpp
│ ├── tetgen.h
│ ├── triangle.cpp
│ ├── triangle.h
│ ├── wrap_tetgen.cpp
│ ├── wrap_triangle.cpp
│ └── wrapper.cpp
└── test/
└── test_meshpy.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# https://editorconfig.org/
# https://github.com/editorconfig/editorconfig-vim
# https://github.com/editorconfig/editorconfig-emacs
root = true
[*]
indent_style = space
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.py]
indent_size = 4
[*.rst]
indent_size = 4
[*.cpp]
indent_size = 2
[*.hpp]
indent_size = 2
[*.yml]
indent_size = 4
# There may be one in doc/
[Makefile]
indent_style = tab
# https://github.com/microsoft/vscode/issues/1679
[*.md]
trim_trailing_whitespace = false
================================================
FILE: .gitattributes
================================================
.github/ export-ignore
.gitignore export-ignore
.gitattributes export-ignore
.gitlab-ci.yml export-ignore
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Environment (please complete the following information):**
- OS: [e.g. iOS]
- MeshPy version: [e.g 2021.1]
- Python version: [e.g. 3.10]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
- name: ❓ Question
url: https://github.com/inducer/meshpy/discussions/categories/q-a
about: Ask and answer questions about MeshPy on Discussions
- name: 🔧 Troubleshooting
url: https://github.com/inducer/meshpy/discussions/categories/troubleshooting
about: For troubleshooting help, see the Discussions
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
# Set update schedule for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
actions:
patterns:
- "*"
# vim: sw=4
================================================
FILE: .github/workflows/autopush.yml
================================================
name: Gitlab mirror
on:
push:
branches:
- main
jobs:
autopush:
name: Automatic push to gitlab.tiker.net
if: startsWith(github.repository, 'inducer/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
mirror_github_to_gitlab
env:
GITLAB_AUTOPUSH_KEY: ${{ secrets.GITLAB_AUTOPUSH_KEY }}
# vim: sw=4
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
pull_request:
schedule:
- cron: '17 3 * * 0'
concurrency:
group: ${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
ruff:
name: Ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- uses: actions/setup-python@v6
- name: "Main Script"
run: |
pip install ruff
ruff check
pytest:
name: Pytest on Py${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.12', '3.x']
steps:
- uses: actions/checkout@v6
-
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: "Main Script"
run: |
PROJECT_INSTALL_FLAGS="--no-build-isolation"
EXTRA_INSTALL="numpy pybind11 meson-python ninja"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
. ./build-and-test-py-project.sh
pytest-macos:
name: Pytest on macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
-
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: "Main Script"
run: |
export CC=gcc
PROJECT_INSTALL_FLAGS="--no-build-isolation"
EXTRA_INSTALL="numpy pybind11 meson-python ninja"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
. ./build-and-test-py-project.sh
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
-
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: "Main Script"
run: |
PROJECT_INSTALL_FLAGS="--no-build-isolation"
EXTRA_INSTALL="numpy pybind11 meson-python ninja"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
. ci-support.sh
build_py_project_in_venv
build_docs
================================================
FILE: .github/workflows/wheels.yml
================================================
name: Build wheels
# inspired by: https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml
on:
push:
branches:
- main
tags:
- v*
pull_request:
release:
types: [created]
jobs:
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Build sdist
run: pipx run build --sdist
- uses: actions/upload-artifact@v7
with:
name: cibw-sdist
path: dist/*.tar.gz
build_wheels:
name: Build wheels on ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-15-intel, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Build wheels
uses: pypa/cibuildwheel@v3.4.1
env:
CIBW_SKIP: "*-musllinux_i686 *-manylinux_i686 *-win32 cp31?t-*"
- uses: actions/upload-artifact@v7
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
deploy:
needs: [build_sdist, build_wheels]
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
name: Deploy
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v6
- name: download artifacts
uses: actions/download-artifact@v8
with:
pattern: cibw-*
path: dist
merge-multiple: true
- name: deploy
uses: pypa/gh-action-pypi-publish@v1.13.0
================================================
FILE: .gitignore
================================================
build
*.dat
test/*.lua
MANIFEST
*.vtk
*.ele
*.face
*.neu
*.poly
*.node
.*.swp
test/ParaViewTrace*.pvs
dist
*~
Makefile
siteconf.py
tags
doc/html
*.orig
*.egg-info
*.pyc
*.pyo
doc/.build
*.pyd
*.so
setuptools*egg
setuptools*pth
setuptools*tar.gz
setuptools*pth
.sw[op]
.eggs
.cache
CMakeCache*
CMakeFiles
cmake_install.cmake
tmp
.ipynb_checkpoints
================================================
FILE: .gitlab-ci.yml
================================================
Ruff:
script: |
pipx install ruff
ruff check
tags:
- docker-runner
except:
- tags
Python 3:
script: |
PROJECT_INSTALL_FLAGS="--no-build-isolation"
EXTRA_INSTALL="numpy pybind11 meson-python ninja"
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
. ./build-and-test-py-project.sh
tags:
- python3
except:
- tags
artifacts:
reports:
junit: test/pytest.xml
Documentation:
script: |
PROJECT_INSTALL_FLAGS="--no-build-isolation"
EXTRA_INSTALL="numpy pybind11 meson-python ninja"
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-docs.sh
. ./build-docs.sh
tags:
- python3
================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Kloeckner"
given-names: "Andreas"
orcid: "https://orcid.org/0000-0003-1228-519X"
- family-names: Brun
given-names: Lorenz
- family-names: Liu
given-names: Benyuan
- family-names: Klemenc
given-names: Simon
- family-names: Fkikl
given-names: Alex
- family-names: Gohlke
given-names: Christoph
- family-names: Coon
given-names: Ethan
- family-names: Oxberry
given-names: Geoffrey
- family-names: Veselý
given-names: Jozef
- family-names: Wala
given-names: Matt
- family-names: Smith
given-names: Matt
- family-names: Potrowl
given-names: Peter
- family-names: Kurtz
given-names: Aidan
title: "MeshPy"
version: 2022.1.1
doi: 10.5281/zenodo.7296572
date-released: 2022-11-06
url: "https://github.com/inducer/meshpy"
license: MIT
================================================
FILE: LICENSE
================================================
-------------------------------------------------------------------------------
Triangle License
-------------------------------------------------------------------------------
Copyright 1993, 1995, 1997, 1998, 2002, 2005 Jonathan Richard Shewchuk
2360 Woolsey #H
Berkeley, California 94705-1927
Please send bugs and comments to jrs@cs.berkeley.edu
Created as part of the Quake project (tools for earthquake simulation).
Supported in part by NSF Grant CMS-9318163 and an NSERC 1967 Scholarship.
There is no warranty whatsoever. Use at your own risk.
Triangle generates exact Delaunay triangulations, constrained Delaunay
triangulations, conforming Delaunay triangulations, Voronoi diagrams, and
high-quality triangular meshes. The latter can be generated with no small
or large angles, and are thus suitable for finite element analysis.
Show Me graphically displays the contents of the geometric files used by
Triangle. Show Me can also write images in PostScript form.
Information on the algorithms used by Triangle, including complete
references, can be found in the comments at the beginning of the triangle.c
source file. Another listing of these references, with PostScript copies
of some of the papers, is available from the Web page
http://www.cs.cmu.edu/~quake/triangle.research.html
------------------------------------------------------------------------------
These programs may be freely redistributed under the condition that the
copyright notices (including the copy of this notice in the code comments
and the copyright notice printed when the `-h' switch is selected) are
not removed, and no compensation is received. Private, research, and
institutional use is free. You may distribute modified versions of this
code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT
IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH
SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND
CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS. Distribution of this code as
part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT
WITH THE AUTHOR. (If you are not directly supplying this code to a
customer, and you are instead telling them how they can obtain it for
free, then you are not required to make any arrangement with me.)
-------------------------------------------------------------------------------
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
Version 3, 19 November 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
(See src/cpp/tetgen-LICENSE for the full license text)
-------------------------------------------------------------------------------
Wrapper license
-------------------------------------------------------------------------------
The wrapper is licensed to you under the following terms:
Copyright (c) 2004-2008 Andreas Kloeckner
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.rst
================================================
MeshPy: Simplicial Mesh Generation from Python
==============================================
.. image:: https://gitlab.tiker.net/inducer/meshpy/badges/main/pipeline.svg
:alt: Gitlab Build Status
:target: https://gitlab.tiker.net/inducer/meshpy/commits/main
.. image:: https://github.com/inducer/meshpy/actions/workflows/ci.yml/badge.svg
:alt: Github Build Status
:target: https://github.com/inducer/meshpy/actions/workflows/ci.yml
.. image:: https://badge.fury.io/py/MeshPy.svg
:alt: Python Package Index Release Page
:target: https://pypi.org/project/meshpy/
.. image:: https://zenodo.org/badge/2757253.svg
:alt: Zenodo DOI for latest release
:target: https://zenodo.org/badge/latestdoi/2757253
MeshPy offers quality triangular and tetrahedral mesh generation for Python.
Meshes of this type are mainly used in finite-element simulation codes, but
also have many other applications ranging from computer graphics to robotics.
In order to generate 2D and 3D meshes, MeshPy provides Python interfaces to
two well-regarded mesh generators: `Triangle
<http://www.cs.cmu.edu/~quake/triangle.html>`__ by J. Shewchuk and `TetGen
<http://tetgen.berlios.de/>`__ by Hang Si. The two are included in the
package in slightly modified versions.
For an interface to `gmsh <http://www.geuz.org/gmsh/>`__, by Christophe Geuzaine
and Jean-Francois Remacle, see `gmsh_interop <https://github.com/inducer/gmsh_interop>`__.
Online resources
================
* `Home page <https://mathema.tician.de/software/meshpy>`__
* `Documentation <http://documen.tician.de/meshpy>`__
* `Source <https://github.com/inducer/meshpy>`__
* `Package index <https://pypi.org/project/MeshPy>`__
* `Discussions <https://github.com/inducer/meshpy/discussions>`__
================================================
FILE: doc/conf.py
================================================
from importlib import metadata
from urllib.request import urlopen
_conf_url = \
"https://raw.githubusercontent.com/inducer/sphinxconfig/main/sphinxconfig.py"
with urlopen(_conf_url) as _inf:
exec(compile(_inf.read(), _conf_url, "exec"), globals())
copyright = "2013-24, Andreas Kloeckner and contributors"
release = metadata.version("meshpy")
version = ".".join(release.split(".")[:2])
================================================
FILE: doc/faq.rst
================================================
Licensing Information
=====================
Wrapper License
---------------
MeshPy (the wrapper) is licensed to you under the MIT/X Consortium license:
Copyright (c) 2008 Andreas Klöckner
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Triangle License
----------------
Copyright 1993, 1995, 1997, 1998, 2002, 2005 Jonathan Richard Shewchuk
2360 Woolsey #H
Berkeley, California 94705-1927
Please send bugs and comments to jrs@cs.berkeley.edu
Created as part of the Quake project (tools for earthquake simulation).
Supported in part by NSF Grant CMS-9318163 and an NSERC 1967 Scholarship.
There is no warranty whatsoever. Use at your own risk.
Triangle generates exact Delaunay triangulations, constrained Delaunay
triangulations, conforming Delaunay triangulations, Voronoi diagrams, and
high-quality triangular meshes. The latter can be generated with no small
or large angles, and are thus suitable for finite element analysis.
Show Me graphically displays the contents of the geometric files used by
Triangle. Show Me can also write images in PostScript form.
Information on the algorithms used by Triangle, including complete
references, can be found in the comments at the beginning of the triangle.c
source file. Another listing of these references, with PostScript copies
of some of the papers, is available from the Web page
https://www.cs.cmu.edu/~quake/triangle.research.html
These programs may be freely redistributed under the condition that the
copyright notices (including the copy of this notice in the code comments
and the copyright notice printed when the '-h' switch is selected) are
not removed, and no compensation is received. Private, research, and
institutional use is free. You may distribute modified versions of this
code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT
IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH
SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND
CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS. Distribution of this code as
part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT
WITH THE AUTHOR. (If you are not directly supplying this code to a
customer, and you are instead telling them how they can obtain it for
free, then you are not required to make any arrangement with me.)
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.
For details, see the
`TetGen web page <https://wias-berlin.de/software/tetgen/FAQ-license.jsp>`__
================================================
FILE: doc/geometry.rst
================================================
Geometry Generation
===================
.. automodule:: meshpy.geometry
================================================
FILE: doc/index.rst
================================================
Welcome to MeshPy's documentation!
==================================
.. toctree::
:maxdepth: 2
:hidden:
installation
tri-tet
geometry
faq
🚀 Github <https://github.com/inducer/meshpy>
💾 Download Releases <https://pypi.org/project/meshpy>
MeshPy offers quality triangular and tetrahedral mesh generation for Python.
Meshes of this type are chiefly used in finite-element simulation codes, but
also have many other applications ranging from computer graphics to robotics.
In order to generate these 2D and 3D meshes, MeshPy provides Python interfaces
to a few well-regarded mesh generators:
* `Triangle <https://www.cs.cmu.edu/~quake/triangle.html>`__ by J. Shewchuk.
* `TetGen <https://wias-berlin.de/software/tetgen>`__ by Hang Si.
Triangle and TetGen are included in the package in slightly modified versions.
An interface for `Gmsh <https://gmsh.info/>`__ was also part of MeshPy, but is
now its own package `gmsh_interop <https://github.com/inducer/gmsh_interop>`__.
MeshPy has its own `web page <https://mathema.tician.de/software/meshpy>`_,
where you can find updated software, news, a forum, and documentation.
Show me! I need examples!
-------------------------
This file is included in the :mod:`meshpy` distribution as
:download:`examples/demo.py <../examples/demo.py>`.
.. literalinclude:: ../examples/demo.py
As a result of this, you will get::
Mesh Points:
0 [0.0, 0.0, 0.0]
1 [2.0, 0.0, 0.0]
2 [2.0, 2.0, 0.0]
3 [0.0, 2.0, 0.0]
4 [0.0, 0.0, 12.0]
5 [2.0, 0.0, 12.0]
6 [2.0, 2.0, 12.0]
7 [0.0, 2.0, 12.0]
8 [1.000116, 0.0, 0.0]
9 [0.0, 0.99960499999999997, 0.0]
10 [0.0, 0.99934199999999995, 12.0]
11 [1.0006170000000001, 0.0, 12.0]
...
Point numbers in tetrahedra:
0 [21, 39, 38, 52]
1 [9, 50, 2, 3]
2 [12, 45, 15, 54]
3 [39, 43, 20, 52]
4 [41, 45, 24, 54]
...
and a file :file:`test.vtk` that you can view with
`Paraview <https://www.paraview.org>`__ or
`Visit <https://visit-dav.github.io/visit-website/>`__.
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
================================================
FILE: doc/installation.rst
================================================
.. highlight:: sh
Installation
============
This tutorial will walk you through the process of building MeshPy. To follow,
you really only need three basic things:
* A UNIX-like machine with web access.
* A working `Python <https://www.python.org>`__ installation.
* A recent C++ compiler. We use `pybind11 <https://pybind11.readthedocs.io/en/stable>`__
to create the wrappers, so see their documentation for minimal required versions
if in doubt.
* `meson-python <https://meson-python.readthedocs.io/en/latest/>`__ and
`ninja <https://ninja-build.org/>`__, which are used to build the wrapper.
See the `[buildsystem]` section in `pyproject.toml` for an up to date list.
Step 1: Download and unpack MeshPy
----------------------------------
`Download MeshPy <https://pypi.org/project/MeshPy>`_ and unpack it::
$ tar xfz MeshPy-VERSION.tar.gz
If you're downloading from ``git`` instead::
$ git clone https://github.com/inducer/meshpy.git
Step 2: Build MeshPy
--------------------
MeshPy uses `meson-python <https://meson-python.readthedocs.io/en/latest>`__ as
its build system. For additional compilation options (e.g. compiling in debug mode),
see their official documentation.
First, just type::
$ cd MeshPy-VERSION # if you're not there already
If you want to just build a source distribution or a wheel for MeshPy, you can
run::
$ python -m build --sdist .
$ python -m build --wheel .
or with the trusty ``pip``::
$ python -m pip wheel --no-deps .
If you want to install MeshPy in editable mode for development, use::
$ python -m pip install --no-build-isolation --editable .
(the ``--no-build-isolation`` flag is very important!). At this point, you can
also pass additional configuration options to ``meson``. For example, to build
in debug mode, run::
$ python -m pip install \
--no-build-isolation -Csetup-args=-Dbuildtype=debug \
--editable .
Once that works, congratulations! You've successfully built MeshPy.
Step 3: Test MeshPy
-------------------
Just type::
$ python -m pytest -v -s test
================================================
FILE: doc/tri-tet.rst
================================================
Triangle/TetGen interface
=========================
.. module:: meshpy
Some common notions
-------------------
.. class:: ForeignArray
Note that :class:`ForeignArray` instances are not usually created by users,
and :class:`ForeignArray` is not a class name available in MeshPy. It is
just used to explain the interface provided.
Almost all input and output data in MeshPy can be accessed using the
:class:`ForeignArray` interface. It is called "foreign" because it
provides access to an area of memory accessible by a pointer managed by an
outside piece of software, such as a mesh generator.
Note that :class:`ForeignArray` has no *append* method. Instead, use
:meth:`ForeignArray.resize` and then set the consecutive entries of the
array.
.. method:: __len__()
Return the number of entries in the array. If the array is 2D (i.e. has
non-1 :attr:`unit`), :meth:`ForeignArray.__len__` only returns the
length of the leading dimension. For example, for an array of points
in *n*-dimensional space, :meth:`__len__` returns the number of points.
.. attribute:: unit
If this :class:`ForeignArray` represents a two-dimensional array, such
as an array of point coordinates, :meth:`ForeignArray.unit` gives the
size of the subordinate dimension.
For example, for an array of points in 3-dimensional space,
:meth:`ForeignArray.__len__` returns the number of dimensions (3).
.. attribute:: allocated
Return a :class:`bool` indicating whether storage has
been allocated for this array. This is only meaningful if the size
of this array is tied to that of another, see :meth:`ForeignArray.setup`.
.. method:: resize(new_size)
Change the length of the array as returned by :meth:`ForeignArray.__len__`.
.. method:: setup()
Set up (i.e. allocate) storage for the array. This only works on arrays
whose size is tied to that of other arrays, such as an array of point
markers, which necessarily has the same size as the associated array of
points, if it is allocated.
.. method:: deallocate()
Release any storage associated with the array.
.. method:: __getitem__(index)
__setitem__(index, value)
Get and set entries in the array. If this foreign array is 2D
(see :attr:`ForeignArray.unit`), index may be a 2-tuple of integers, as in::
points[2,1] = 17
:mod:`meshpy.triangle` -- Triangular Meshing
--------------------------------------------
.. module:: meshpy.triangle
:synopsis: Generate triangular meshes
.. moduleauthor:: Andreas Klöckner <inform@tiker.net>
.. class:: ForeignArray
See :class:`meshpy.ForeignArray` for shared documentation.
.. class:: MeshInfo
:class:`MeshInfo` objects are picklable.
.. attribute:: points
A 2D :class:`ForeignArray` of :class:`float` with dimension *(N,2)*,
providing a list of points that are referred to by index from other
entries of this structure.
.. attribute:: point_attributes
If :attr:`MeshInfo.number_of_point_attributes` is non-zero, this is a
:class:`ForeignArray` of :class:`float`\ s of point attributes.
This element's size is tied to that of :attr:`MeshInfo.points`.
.. attribute:: point_markers
:class:`ForeignArray` of :class:`float`\ s of point attributes.
This element's size is tied to that of :attr:`MeshInfo.points`.
.. attribute:: elements
.. attribute:: element_attributes
This element's size is tied to that of :attr:`MeshInfo.elements`.
.. attribute:: element_volumes
This element's size is tied to that of :attr:`MeshInfo.elements`.
.. attribute:: neighbors
.. attribute:: facets
.. attribute:: facet_markers
.. attribute:: holes
.. attribute:: regions
.. attribute:: faces
.. attribute:: face_markers
.. attribute:: normals
.. attribute:: number_of_point_attributes
.. attribute:: number_of_element_vertices
Defautls to 4 for linear tetrahedra. Change to 10 for second-order
tetrahedra.
.. attribute:: number_of_element_attributes
Convenient setters:
.. method:: set_points(points, point_markers=None)
.. method:: set_holes(points, hole_starts)
.. method:: set_facets(facets, facet_markers=None)
Other functionality:
.. method:: copy()
Return a duplicate copy of this object.
.. function:: subdivide_facets(subdivisions, points, facets, facet_markers)
Subdivide facets into *subdivisions* subfacets.
This routine is useful if you have to prohibit the insertion of Steiner
points on the boundary of your triangulation to allow the mesh to conform
either to itself periodically or another given mesh. In this case, you may
use this routine to create the necessary resolution along the boundary
in a predefined way.
*subdivisions* is either an :class:`int`, indicating a uniform number of
subdivisions throughout, or a list of the same length as *facets*,
specifying a subdivision count for each individual facet.
*points*
a list of points referred to from the facets list.
*facets*
a list of old facets, in the form *[(p1, p2), (p3,p4), ...]*.
*facet_markers*
either *None* or a list of facet markers of the same length
as *facets*.
Returns a tuple *(new_points, new_facets)*,
or *(new_points, new_facets, new_facet_markers)* if *facet_markers* is not
*None*.
.. function:: build(mesh_info, verbose=False, refinement_func=None, attributes=False, volume_constraints=True, max_volume=None, allow_boundary_steiner=True, allow_volume_steiner=True, quality_meshing=True, generate_edges=None, generate_faces=False, min_angle=None)
.. function:: refine(input_p, verbose=False, refinement_func=None, quality_meshing=True, min_angle=None)
.. function:: write_gnuplot_mesh(filename, out_p, facets=False)
:mod:`meshpy.tet` -- Tetrahedral Meshing
----------------------------------------
.. module:: meshpy.tet
:synopsis: Generate triangular meshes
.. moduleauthor:: Andreas Klöckner <inform@tiker.net>
.. class:: ForeignArray
See :class:`meshpy.ForeignArray` for shared documentation.
.. class:: Options(switches='pq', **kwargs)
Run time switches for TetGen. See the TetGen documentation for the meaning of each
switch.
Using the *kwargs* constructor argument, all the attributes defined
below can be set. This setting will occur after
:meth:`Options.parse_switches` is called with the *switches* parameter.
.. attribute:: plc
.. attribute:: quality
.. attribute:: refine
.. attribute:: coarse
.. attribute:: metric
.. attribute:: varvolume
.. attribute:: fixedvolume
.. attribute:: insertaddpoints
.. attribute:: regionattrib
.. attribute:: conformdel
.. attribute:: diagnose
.. attribute:: zeroindex
.. attribute:: optlevel
.. attribute:: optpasses
.. attribute:: order
.. attribute:: facesout
.. attribute:: edgesout
.. attribute:: neighout
.. attribute:: voroout
.. attribute:: meditview
.. attribute:: gidview
.. attribute:: geomview
.. attribute:: nobound
.. attribute:: nonodewritten
.. attribute:: noelewritten
.. attribute:: nofacewritten
.. attribute:: noiterationnum
.. attribute:: nomerge
.. attribute:: nobisect
.. attribute:: noflip
.. attribute:: nojettison
.. attribute:: steiner
.. attribute:: fliprepair
.. attribute:: docheck
.. attribute:: quiet
.. attribute:: verbose
.. attribute:: useshelles
.. attribute:: minratio
.. attribute:: goodratio
.. attribute:: minangle
.. attribute:: goodangle
.. attribute:: maxvolume
.. attribute:: maxdihedral
.. attribute:: alpha1
.. attribute:: alpha2
.. attribute:: alpha3
.. attribute:: epsilon
.. attribute:: epsilon2
.. method:: parse_switches(switches)
.. class:: Polygon
.. attribute:: vertices
.. class:: Facet
.. attribute:: polygons
.. attribute:: holes
.. class:: PBCGroup
.. attribute:: facet_marker_1
.. attribute:: facet_marker_2
.. attribute:: point_pairs
.. attribute:: matrix
.. class:: MeshInfo
.. attribute:: points
.. attribute:: point_attributes
.. attribute:: point_metric_tensors
.. attribute:: point_markers
.. attribute:: elements
.. attribute:: element_attributes
.. attribute:: element_volumes
.. attribute:: neighbors
.. attribute:: facets
.. attribute:: facet_markers
.. attribute:: holes
.. attribute:: regions
.. attribute:: facet_constraints
.. attribute:: segment_constraints
.. attribute:: pbc_groups
.. attribute:: faces
.. attribute:: adjacent_elements
.. attribute:: face_markers
.. attribute:: edges
.. attribute:: edge_markers
.. attribute:: edge_adjacent_elements
.. versionadded:: 2016.1
.. attribute:: number_of_point_attributes
.. attribute:: number_of_element_attributes
Convenient setters:
.. method:: set_points(points, point_markers=None)
.. method:: set_holes(points, hole_starts)
.. method:: set_facets(facets, markers=None)
Set a list of simple, single-polygon factes. Unlike
:meth:`MeshInfo.set_facets_ex`, this method does not allow holes and
only lets you use a single polygon per facet.
*facets*
a list of facets, where each facet is a single
polygons, represented by a list of point indices.
*markers*
Either None or a list of integers of the same
length as facets. Each integer is the facet marker assigned
to its corresponding facet.
.. note::
When the above says "list", any repeatable iterable
also accepted instead.
.. method:: set_facets_ex(facets, facet_holestarts=None, markers=None)
Set a list of complicated facets. Unlike :meth:`MeshInfo.set_facets`,
this method allows holes and multiple polygons per facet.
*facets*
a list of facets, where each facet is a list
of polygons, and each polygon is represented by a list
of point indices.
*facet_holestarts*
Either None or a list of hole starting points
for each facet. Each facet may have several hole starting points.
The mesh generator starts "eating" a hole into the facet at each
starting point and continues until it hits a polygon specified
in this facet's record in *facets*.
*markers*
Either None or a list of integers of the same
length as *facets*. Each integer is the facet marker assigned
to its corresponding facet.
.. note::
When the above says "list", any repeatable iterable
also accepted instead.
Other functionality:
.. attribute:: face_vertex_indices_to_face_marker
.. method:: dump()
.. method:: write_vtk(filename)
TetGen-provided loading and saving:
.. method:: save_nodes(filename)
.. method:: save_elements(filename)
.. method:: save_faces(filename)
.. method:: save_edges(filename)
.. method:: save_neighbors(filename)
.. method:: save_poly(filename)
.. method:: load_node(filename)
.. method:: load_pbc(filename)
.. method:: load_var(filename)
.. method:: load_mtr(filename)
.. method:: load_poly(filename)
.. method:: load_ply(filename)
.. method:: load_stl(filename)
.. method:: load_medit(filename)
.. method:: load_plc(filename)
.. method:: load_tetmesh(filename)
.. function:: build(mesh_info, options=Options("pq"), verbose=False, attributes=False, volume_constraints=False, max_volume=None, diagnose=False, insert_points=None, mesh_order=None)
:param insert_points: a :class:`MeshInfo` object specifying additional points to be inserted
================================================
FILE: doc/upload-docs.sh
================================================
#! /bin/sh
rsync --verbose --archive --delete .build/html/ doc-upload:doc/meshpy
================================================
FILE: examples/MESH_README.txt
================================================
-------------------------------------------------------------------------------
Mesh licensing
-------------------------------------------------------------------------------
This file summarizes the licenses surrounding data files in this directory.
When using them for research or demonstration purposes, please be mindful of
proper attribution.
-------------------------------------------------------------------------------
ka-6d.ply:
The mesh 'ka-6d.ply' is a derivative work of a mesh in FlightGear and is thus
licensed under the GNU GPL.
(C) Flightgear Developers & Contributors
(C) Andreas Kloeckner
-------------------------------------------------------------------------------
================================================
FILE: examples/airfoil3d.py
================================================
def main():
import numpy
from meshpy.geometry import GeometryBuilder, Marker, generate_extrusion, make_box
from meshpy.naca import get_naca_points
from meshpy.tet import MeshInfo, build
geob = GeometryBuilder()
box_marker = Marker.FIRST_USER_MARKER
wing_length = 2
wing_subdiv = 5
rz_points = (
[
(0, -wing_length * 1.05),
(0.7, -wing_length * 1.05),
]
+ [
(r, x)
for x, r in zip(
numpy.linspace(-wing_length, 0, wing_subdiv, endpoint=False),
numpy.linspace(0.8, 1, wing_subdiv, endpoint=False),
strict=True
)
]
+ [(1, 0)]
+ [
(r, x)
for x, r in zip(
numpy.linspace(wing_length, 0, wing_subdiv, endpoint=False),
numpy.linspace(0.8, 1, wing_subdiv, endpoint=False),
strict=True
)
][::-1]
+ [(0.7, wing_length * 1.05), (0, wing_length * 1.05)]
)
geob.add_geometry(
*generate_extrusion(
rz_points=rz_points,
base_shape=get_naca_points("0012", verbose=False, number_of_points=20),
ring_markers=(wing_subdiv * 2 + 4) * [box_marker],
)
)
from meshpy.tools import make_swizzle_matrix
swizzle_matrix = make_swizzle_matrix("z:x,y:y,x:z")
geob.apply_transform(lambda p: numpy.dot(swizzle_matrix, p))
def deform_wing(p):
x, y, z = p
return numpy.array(
[
x,
y + 0.1 * abs(x / wing_length) ** 2,
z + 0.8 * abs(x / wing_length) ** 1.2,
]
)
geob.apply_transform(deform_wing)
points, facets, _, facet_markers = make_box(
numpy.array([-wing_length - 1, -1, -1.5]),
numpy.array([wing_length + 1, 1, 3])
)
geob.add_geometry(points, facets, facet_markers=facet_markers)
mesh_info = MeshInfo()
geob.set(mesh_info)
mesh_info.set_holes([(0, 0, 0.5)])
mesh = build(mesh_info)
print(f"{len(mesh.elements)} elements")
mesh.write_vtk("airfoil3d.vtk")
if __name__ == "__main__":
main()
================================================
FILE: examples/box-in-box.py
================================================
def main():
import numpy
from meshpy.geometry import GeometryBuilder, Marker, make_box
from meshpy.tet import MeshInfo, build
geob = GeometryBuilder()
box_marker = Marker.FIRST_USER_MARKER
extent_small = 0.3 * numpy.ones(3, dtype=numpy.float64)
points, facets, _, _ = make_box(-extent_small, extent_small)
geob.add_geometry(points, facets, facet_markers=box_marker)
points, facets, _, facet_markers = make_box(
numpy.array([-1, -1, -1]), numpy.array([1, 1, 5])
)
geob.add_geometry(points, facets, facet_markers=facet_markers)
mesh_info = MeshInfo()
geob.set(mesh_info)
# mesh_info.set_holes([(0, 0, 0)])
# region attributes
mesh_info.regions.resize(1)
mesh_info.regions[0] = [
# point in region
0, 0, 0,
# region number
1,
# max volume in region
0.001,
]
mesh = build(mesh_info, max_volume=0.06,
volume_constraints=True, attributes=True)
print(f"{len(mesh.elements)} elements")
mesh.write_vtk("box-in-box.vtk")
if __name__ == "__main__":
main()
================================================
FILE: examples/clean.sh
================================================
#! /bin/sh
rm -f *.{vtk,ele,poly,node,lua}
================================================
FILE: examples/demo.py
================================================
from meshpy.tet import MeshInfo, build
mesh_info = MeshInfo()
mesh_info.set_points(
[
(0, 0, 0),
(2, 0, 0),
(2, 2, 0),
(0, 2, 0),
(0, 0, 12),
(2, 0, 12),
(2, 2, 12),
(0, 2, 12),
]
)
mesh_info.set_facets(
[
[0, 1, 2, 3],
[4, 5, 6, 7],
[0, 4, 5, 1],
[1, 5, 6, 2],
[2, 6, 7, 3],
[3, 7, 4, 0],
]
)
mesh = build(mesh_info, max_volume=0.5)
print("Mesh Points:")
for i, p in enumerate(mesh.points):
print(i, p)
print("Point numbers in tetrahedra:")
for i, t in enumerate(mesh.elements):
print(i, t)
mesh.write_vtk("test.vtk")
================================================
FILE: examples/jw_mesh_examples.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "82dbbafd-ed23-43fd-924b-1916d0ea7dca",
"metadata": {},
"source": [
"## Making Meshes with MeshPy ( using meshtools )\n",
"\n",
"Gallery with short code comments\n",
"\n",
"by\n",
"\n",
"Jürgen Weizenecker\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "458bfac7-3661-433f-93fc-64d283245089",
"metadata": {},
"outputs": [],
"source": [
"import jw_meshtools as mt\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import numpy.linalg as la\n",
"\n",
"from meshpy import triangle\n",
"\n",
"\n",
"length = 0.3"
]
},
{
"cell_type": "markdown",
"id": "b89c83ea-18f5-4209-bba5-bf3a6e3d1a06",
"metadata": {},
"source": [
"### Figure 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cf6de630-1bb1-4196-af4e-a070d464ddc0",
"metadata": {},
"outputs": [],
"source": [
"# Simple mesh rectangle\n",
"\n",
"# Define closed boundary around a 2D region\n",
"p, v = mt.RectangleSegments([-1.0, -1.0], [2.5, 3.0], edge_length=length)\n",
"# Make mesh of this region\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)\n",
"\n",
"print(\"Points, \", poi[0:5], \"....\", flush=True)\n",
"print(\"Elements, \", tri[0:5], \"...\", flush=True)\n",
"print(\"Boundary edges\", BouE, flush=True)\n",
"print(\"List for boundary edges\", li_BE, flush=True)\n",
"print(\"Boundary triangles\", bou_elem, flush=True)\n",
"\n",
"# Help\n",
"print(\"\\n\\n################ Help string :\")\n",
"print(mt.RectangleSegments.__doc__)\n",
"print(mt.DoTriMesh.__doc__)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "32664d46-c5e3-48b7-ab03-bdc6d5d05fb2",
"metadata": {},
"outputs": [],
"source": [
"# Simple mesh rectangle with numbers\n",
"p, v = mt.RectangleSegments([-1.0, -1.0], [2.5, 3.0], edge_length=3 * length)\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(\n",
" p, v, edge_length=3 * length, show=False\n",
")\n",
"\n",
"mt.PlotMeshNumbers(poi, tri)"
]
},
{
"cell_type": "markdown",
"id": "ceda42b2-ae3e-4e76-a085-c743d4f0679f",
"metadata": {},
"source": [
"### Figure 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3c1294da-6150-4718-9d5f-6da18e40d777",
"metadata": {},
"outputs": [],
"source": [
"# construct boundary curve from simple lines\n",
"p1, v1 = mt.LineSegments([-0.5, 0.5], [-1, -1], edge_length=length / 5)\n",
"p2, v2 = mt.LineSegments([-1, -1], [0.0, 0.5], edge_length=length / 5)\n",
"p3, v3 = mt.LineSegments([0.0, 0.5], [1, 1], edge_length=length / 7)\n",
"p4, v4 = mt.LineSegments([1, 1], [-0.5, 0.5], edge_length=length / 7)\n",
"p, v = mt.AddMultipleSegments(p1, p2, p3, p4)\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)"
]
},
{
"cell_type": "markdown",
"id": "9a442dae-a4b5-4234-8148-6829b23edd74",
"metadata": {},
"source": [
"### Figure 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "97c236dd-3cf2-4fc0-802f-9f0c6689f97d",
"metadata": {},
"outputs": [],
"source": [
"# circle as boundary curve\n",
"p, v = mt.CircleSegments([1, 2], 2, edge_length=length)\n",
"mt.DoTriMesh(p, v, edge_length=length)\n",
"print(mt.CircleSegments.__doc__)"
]
},
{
"cell_type": "markdown",
"id": "41f16cdb-d126-4e0e-b9e9-3a23eca164f9",
"metadata": {},
"source": [
"### Figure 4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1780dc04-6ddf-47d3-bfdf-9add14c1b60d",
"metadata": {},
"outputs": [],
"source": [
"p1, v1 = mt.LineSegments([2, 2], [-1, -3], edge_length=length)\n",
"p2, v2 = mt.LineSegments([-1, -4], [3, -1], num_points=10)\n",
"p, v = mt.AddSegments(p1, p2, closed=True)\n",
"mt.DoTriMesh(p, v, edge_length=length);"
]
},
{
"cell_type": "markdown",
"id": "3303ac64-5d98-4d75-a9b5-81b2b348e2b2",
"metadata": {},
"source": [
"### Figure 5"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2dc39822-6da2-4c2d-8e76-be91e097da8f",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle with smooth corners\n",
"#\n",
"p, v = mt.ORecSegments([1, 2], [7, 6], 0.3, edge_length=length, num_pc=10)\n",
"mt.DoTriMesh(p, v, edge_length=length);"
]
},
{
"cell_type": "markdown",
"id": "48319034-6631-449f-9189-97826a74df87",
"metadata": {},
"source": [
"### Figure 6"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "265a94cf-c9cc-45ad-bf9b-4ca02edc5935",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# two semicircles\n",
"#\n",
"p1, v1 = mt.CircleSegments(\n",
" [1.0, 0], 1, a_min=-np.pi / 2, a_max=np.pi / 2, num_points=20\n",
")\n",
"p2, v2 = mt.CircleSegments(\n",
" [1, 0], 3, a_min=np.pi / 2.0, a_max=3.0 * np.pi / 2, num_points=20\n",
")\n",
"p, v = mt.AddSegments(p1, p2, closed=True)\n",
"# plot mesh\n",
"mt.DoTriMesh(p, v, edge_length=length);"
]
},
{
"cell_type": "markdown",
"id": "7c46029b-50cb-4b00-9785-e475883dbc44",
"metadata": {},
"source": [
"### Figure 7"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1c0403d3-bade-49a8-85fe-a5170bfdacbe",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# boundary curve defined by simple points\n",
"#\n",
"t = np.linspace(0, 2 * np.pi, 120)\n",
"r = 3 + np.sin(8 * t)\n",
"x = r * np.cos(t)\n",
"y = r * np.sin(t)\n",
"p = [(x[j], y[j]) for j in range(len(t))]\n",
"p1, v1 = mt.PointSegments(p)\n",
"mt.DoTriMesh(p1, v1, edge_length=length);"
]
},
{
"cell_type": "markdown",
"id": "d4185d69-a93b-4b2d-8dee-960487adfd59",
"metadata": {},
"source": [
"### Figure 8, without meshtools"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aa7295b4-291c-45d8-a4b5-e6bff05773a1",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# Example for using directly triangle\n",
"#\n",
"\n",
"\n",
"def round_trip_connect(start, end):\n",
" return [(i, i + 1) for i in range(start, end)] + [(end, start)]\n",
"\n",
"\n",
"points = [(1, 0), (1, 1), (-1, 1), (-1, -1), (1, -1), (1, 0)]\n",
"facets = round_trip_connect(0, len(points) - 1)\n",
"\n",
"circ_start = len(points)\n",
"points.extend(\n",
" (3 * np.cos(angle), 3 * np.sin(angle))\n",
" for angle in np.linspace(0, 2 * np.pi, 29, endpoint=False)\n",
")\n",
"\n",
"facets.extend(round_trip_connect(circ_start, len(points) - 1))\n",
"\n",
"\n",
"def needs_refinement(vertices, area):\n",
" bary = np.sum(np.array(vertices), axis=0) / 3\n",
" max_area = 0.01 + abs(la.norm(bary, np.inf) - 1) * 0.1\n",
" return bool(area > max_area)\n",
"\n",
"\n",
"info = triangle.MeshInfo()\n",
"info.set_points(points)\n",
"info.set_holes([(0, 0)])\n",
"info.set_facets(facets)\n",
"\n",
"mesh = triangle.build(info, refinement_func=needs_refinement)\n",
"# mesh = triangle.build(info)\n",
"\n",
"mesh_points = np.array(mesh.points)\n",
"mesh_tris = np.array(mesh.elements)\n",
"\n",
"print(mesh_points[0:5], \"...\")\n",
"print(mesh_tris[0:5], \"....\")\n",
"plt.triplot(mesh_points[:, 0], mesh_points[:, 1], mesh_tris)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "84f14d0f-9610-42b0-b0df-b5d01025e8b7",
"metadata": {},
"source": [
"### Figure 9, Add inner curves"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f32c17c2-21d1-4e92-9624-62c3da778b4d",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle and inner circle\n",
"#\n",
"p1, v1 = mt.RectangleSegments([-2, -2], [2.5, 3], edge_length=length)\n",
"\n",
"p2, v2 = mt.CircleSegments([1, 1], 1, edge_length=length / 5)\n",
"p, v = mt.AddCurves(p1, v1, p2, v2)\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)\n",
"print(\"Points, \", poi[0:5], \"...\")\n",
"print(\"Elements, \", tri[0:5], \"...\")\n",
"print(\"Boundary Edges\", BouE[0:5], \"...\")\n",
"print(\"List boundary edges\", li_BE)\n",
"print(\"Inner Curves\", CuE[0:5], \"...\")\n",
"print(\"List inner Curve\", li_CE)"
]
},
{
"cell_type": "markdown",
"id": "4205b7df-dea3-418d-8725-bd7576b3e10a",
"metadata": {},
"source": [
"### Figure 10"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b6a82bae-0ef6-4896-b5cb-782bcb3835cf",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle and inner line\n",
"#\n",
"p1, v1 = mt.RectangleSegments([-2, -2], [2.5, 3], edge_length=length)\n",
"p2, v2 = mt.LineSegments([0, 0], [1, 1], edge_length=length / 5)\n",
"\n",
"\n",
"p3, v3 = mt.LineSegments([-1, 1], [0, -1], edge_length=length / 5)\n",
"p4, v4 = mt.LineSegments([0, -1], [1, -1], edge_length=length / 5)\n",
"# connect line 3 and 4 first\n",
"p5, v5 = mt.AddSegments(p3, p4)\n",
"\n",
"p, v, indizes = mt.AddMultipleCurves(p1, v1, p2, v2, p5, v5)\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)"
]
},
{
"cell_type": "markdown",
"id": "ff201c3a-f65f-41e4-a68d-7e3a04590738",
"metadata": {},
"source": [
"### Figure 11"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "21f930ce-c156-4f9b-8db5-4cb9a3572332",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle and more complicated inner curves\n",
"#\n",
"p1, v1 = mt.RectangleSegments([-2, -2], [2.5, 3], edge_length=length)\n",
"\n",
"p2, v2 = mt.CircleSegments([1, 1], 1, edge_length=length / 5)\n",
"p, v = mt.AddCurves(p1, v1, p2, v2)\n",
"\n",
"# use connect if segments might have nearly the same points\n",
"p3, v3 = mt.LineSegments([-1, -2], [-1, 3], edge_length=length / 4)\n",
"p, v = mt.AddCurves(p, v, p3, v3, connect=True, eps=1e-12)\n",
"\n",
"p4, v4 = mt.LineSegments([-1, 1], [0, 1], edge_length=length / 5)\n",
"p, v = mt.AddCurves(p, v, p4, v4, connect=True, eps=1e-12)\n",
"\n",
"# or shift inner curve slightly\n",
"\n",
"epsilon = 1e-6\n",
"p5, v5 = mt.LineSegments([1, -2 + epsilon], [3 - epsilon, -1], edge_length=length / 5)\n",
"p, v = mt.AddCurves(p, v, p5, v5)\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)"
]
},
{
"cell_type": "markdown",
"id": "90d432d9-1829-41f1-a5eb-ecd23a1fde1b",
"metadata": {},
"source": [
"### Figure 12, Holes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5a35bb11-2ad6-4557-98b9-2446cc7fe355",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle with holes\n",
"p1, v1 = mt.LineSegments([-2, -3], [2, -3], num_points=12)\n",
"p2, v2 = mt.LineSegments([2, 3], [-2, 3], num_points=12)\n",
"p, v = mt.AddSegments(p1, p2, closed=True)\n",
"\n",
"# define the boundary curves of holes\n",
"p3, v3 = mt.CircleSegments([-0.5, 0.5], 0.5, edge_length=length)\n",
"p, v = mt.AddCurves(p, v, p3, v3)\n",
"p4, v4 = mt.CircleSegments([1, -1], 0.5, edge_length=length)\n",
"p, v = mt.AddCurves(p, v, p4, v4)\n",
"\n",
"# the array holes contain points in the regions to be removed\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(\n",
" p, v, edge_length=length, holes=[(-0.4, 0.4), (0.95, -0.8)]\n",
")"
]
},
{
"cell_type": "markdown",
"id": "6af9f075-6b4d-4f26-982d-ccdb45c9a404",
"metadata": {},
"source": [
"### Figure 13, Find closest nodes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "80d6d1d8-3aa9-4676-88ef-18011bfcc391",
"metadata": {},
"outputs": [],
"source": [
"# boundary nodes\n",
"# rectangle with holes\n",
"p, v = mt.RectangleSegments([-2, -3], [2, 3], edge_length=length)\n",
"\n",
"p3, v3 = mt.CircleSegments([-0.5, 0.5], 0.5, edge_length=length)\n",
"p4, v4 = mt.CircleSegments([1, -1], 0.5, edge_length=length)\n",
"p, v, ii = mt.AddMultipleCurves(p, v, p3, v3, p4, v4)\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(\n",
" p, v, edge_length=length, holes=[(-0.4, 0.4), (0.95, -0.8)], show=False\n",
")\n",
"\n",
"# node numbers used for search\n",
"all_nodes = np.arange(len(poi))\n",
"# points to be found\n",
"p0 = [[2 * np.cos(t), 2 * np.sin(t)] for t in np.linspace(0, 2 * np.pi, 15)]\n",
"\n",
"# search\n",
"nn, dd = mt.FindClosestNode(all_nodes, poi, p0)\n",
"\n",
"\n",
"print(\"Points given\\n\", p0)\n",
"print(\"Node number\\n\", nn)\n",
"print(\"Distance from p0\\n\", dd)\n",
"\n",
"plt.triplot(poi[:, 0], poi[:, 1], tri)\n",
"plt.plot(poi[nn, 0], poi[nn, 1], \"or\");"
]
},
{
"cell_type": "markdown",
"id": "943592f6-4f12-4bf3-b53d-26ed1950b6a1",
"metadata": {},
"source": [
"### Figure 14 , Find Boundary"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "87148906-ef5e-4750-b045-db968b96d096",
"metadata": {},
"outputs": [],
"source": [
"# take mesh from above\n",
"\n",
"# Find boundary nodes/segments between the points below\n",
"# Two types of boundaries, Nodes or segments\n",
"# Ps:\n",
"Ps = [[-2, 3], [2, -3], [-2, 3], [-0.5, 0.5], [-0.5, 0.5], [1, -1], [1, -1]]\n",
"Ps_types = [\"Nodes\", \"Segments\", \"Nodes\", \"Segments\"]\n",
"\n",
"bseg = mt.RetrieveSegments(poi, BouE, li_BE, Ps, Ps_types)\n",
"for i in range(len(Ps_types)):\n",
" print(\"bseg[\", i, \"] : \", Ps_types[i], \"\\n\", bseg[i])\n",
"\n",
"# !!!!!!!!!!!!!!!!!!!!!!!!!\n",
"# bseg[0] contains all nodes (Ps_types[0]) between Ps[0] and Ps[1]\n",
"# bseg[1] contains all segments (Ps_types[1]) between Ps[1] and Ps[2]\n",
"# No connection between Ps[2] and Ps[3] , skip\n",
"# bseg[2] contains all nodes (Ps_types[2]) between Ps[3] and Ps[4]\n",
"# bseg[3] contains all nodes (Ps_types[3]) between Ps[4] and Ps[5]\n",
"\n",
"\n",
"plt.triplot(poi[:, 0], poi[:, 1], tri)\n",
"\n",
"for i in range(len(Ps_types)):\n",
" mt.PlotBoundary(poi, bseg[i], Ps_types[i])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "79bbafb9-e201-4913-8b32-9628f2424435",
"metadata": {},
"source": [
"### Figure 15 , Find Inner Curves"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c99a3ba9-4f77-4a10-ac82-e2dd8932360c",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle with holes\n",
"p, v = mt.RectangleSegments([-2.0, -3.0], [2, 3.0], edge_length=length)\n",
"p3, v3 = mt.CircleSegments([-0.5, 0.5], 0.5, edge_length=length / 4)\n",
"p, v = mt.AddCurves(p, v, p3, v3)\n",
"p4, v4 = mt.CircleSegments([1, -1], 0.5, edge_length=length / 4)\n",
"p, v = mt.AddCurves(p, v, p4, v4)\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(\n",
" p, v, edge_length=length, show=False\n",
")\n",
"\n",
"# same as before, with CuE and li_DE\n",
"Ps = [[-0.5, 0.5], [-0.5, 0.5], [1, -1], [1, -1]]\n",
"Ps_types = [\"Nodes\", \"Segments\"]\n",
"\n",
"cseg = mt.RetrieveSegments(poi, CuE, li_CE, Ps, Ps_types)\n",
"print(\"cseg\", cseg)\n",
"\n",
"plt.triplot(poi[:, 0], poi[:, 1], tri)\n",
"\n",
"mt.PlotBoundary(poi, cseg[0], \"Nodes\")\n",
"mt.PlotBoundary(poi, cseg[1], \"Segments\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "228ca89f-1724-4748-9699-d2b6d8279b04",
"metadata": {},
"source": [
"### Figure 16"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4b682b06-fa37-4cee-934f-234e2dd51f70",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle and inner line\n",
"#\n",
"p1, v1 = mt.RectangleSegments([-2, -2], [2.5, 3], edge_length=length)\n",
"\n",
"p2, v2 = mt.CircleSegments([1, 1], 1, edge_length=length / 5)\n",
"p, v = mt.AddCurves(p1, v1, p2, v2)\n",
"\n",
"# use connect if segments might have nearly the same points\n",
"p3, v3 = mt.LineSegments([-1, -2], [-1, 3], edge_length=length / 4)\n",
"p, v = mt.AddCurves(p, v, p3, v3, connect=True, eps=1e-12)\n",
"\n",
"p4, v4 = mt.LineSegments([-1, 1], [0, 1], edge_length=length / 5)\n",
"p, v = mt.AddCurves(p, v, p4, v4, connect=True, eps=1e-12)\n",
"\n",
"# or shift inner curve slightly away from existing points/curves\n",
"epsilon = 1e-6\n",
"p5, v5 = mt.LineSegments([1, -2 + epsilon], [3 - epsilon, -1], edge_length=length / 5)\n",
"p, v = mt.AddCurves(p, v, p5, v5)\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, edge_length=length)\n",
"\n",
"# plot all boundaries and inner curves\n",
"mt.PlotBoundary(poi, BouE, \"Segments\")\n",
"mt.PlotBoundary(poi, CuE, \"Curves\")"
]
},
{
"cell_type": "markdown",
"id": "e74dc712-957f-4b42-af13-ec9dc2029ead",
"metadata": {},
"source": [
"### Figure 17, Refinement"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "92680253-2c90-47d0-bc74-25d9df2b247a",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# rectangle and local refinement\n",
"#\n",
"p1, v1 = mt.RectangleSegments([0, 0], [1, 1], num_points=100)\n",
"p2, v2 = mt.RectangleSegments([0.05, 0.05], [0.95, 0.95], num_points=40)\n",
"p, v = mt.AddCurves(p1, v1, p2, v2)\n",
"p3, v3 = mt.RectangleSegments([0.1, 0.1], [0.9, 0.9], num_points=20)\n",
"p, v = mt.AddCurves(p, v, p3, v3)\n",
"mt.DoTriMesh(p, v, edge_length=length);"
]
},
{
"cell_type": "markdown",
"id": "2230ff02-9618-4732-b520-b745ba69c5b0",
"metadata": {},
"source": [
"### Figure 18"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b7d7df4d-aa92-4e26-b9d5-6bd43859fb04",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# 2D curve with local mesh refinement I\n",
"#\n",
"#\n",
"t = np.linspace(0, 2 * np.pi, 120)\n",
"r = 3 + np.sin(8 * t)\n",
"x = r * np.cos(t)\n",
"y = r * np.sin(t)\n",
"p = [(x[j], y[j]) for j in range(len(t))]\n",
"p1, v1 = mt.PointSegments(p)\n",
"# function for refinement\n",
"\n",
"\n",
"def myrefine1(tri_points, area):\n",
" center_tri = np.sum(np.array(tri_points), axis=0) / 3.0\n",
" x = center_tri[0]\n",
" _y = center_tri[1]\n",
" if x > 0:\n",
" max_area = 0.05 * (1 + 3 * x)\n",
" else:\n",
" max_area = 0.05\n",
" return bool(area > max_area)\n",
"\n",
"\n",
"mt.DoTriMesh(p1, v1, tri_refine=myrefine1);"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "20215917-888d-4137-aed3-53d11ab4b275",
"metadata": {},
"outputs": [],
"source": [
"# function for refinement\n",
"def myrefine2(tri_points, area):\n",
" center_tri = np.sum(np.array(tri_points), axis=0) / 3.0\n",
" r = np.sqrt(center_tri[0] ** 2 + center_tri[1] ** 2)\n",
" max_area = 0.3 + (0.01 - 0.3) / (1 + 0.5 * (r - 1) ** 2)\n",
" return bool(area > max_area)\n",
"\n",
"\n",
"mt.DoTriMesh(p1, v1, tri_refine=myrefine2);"
]
},
{
"cell_type": "markdown",
"id": "60c3e79a-4fa1-4742-b5c5-d6bcbad9fe12",
"metadata": {},
"source": [
"### Figure 19"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "419ae0ef-271d-4b2a-8952-ac34614d67a8",
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# 2D curve with local refinement II\n",
"# !! 2 plots\n",
"#\n",
"# take p1 from above\n",
"p2, v2 = mt.CircleSegments([0, 0], 1, edge_length=0.05)\n",
"p, v = mt.AddCurves(p1, v1, p2, v2)\n",
"\n",
"\n",
"def myrefine3(tri_points, area):\n",
" center_tri = np.sum(np.array(tri_points), axis=0) / 3.0\n",
" r = np.sqrt(center_tri[0] ** 2 + center_tri[1] ** 2)\n",
" max_area = 0.4 + (0.01 - 0.3) / (1 + 0.5 * (r - 1) ** 2)\n",
" return bool(area > max_area)\n",
"\n",
"\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(p, v, tri_refine=myrefine3)"
]
},
{
"cell_type": "markdown",
"id": "26fde227-9d44-4b40-b72f-e38d8ad7b532",
"metadata": {},
"source": [
"### Figure 20"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a9de5900-987b-4bae-9566-7fa395b040da",
"metadata": {},
"outputs": [],
"source": [
"from scipy.spatial import cKDTree\n",
"\n",
"\n",
"#\n",
"# 2D curve with local refinement III\n",
"#\n",
"#\n",
"# take p1 from above\n",
"nodes = range(len(p1))\n",
"# define tree to speed up node search\n",
"p1tree = cKDTree(np.array(p1))\n",
"\n",
"\n",
"# function for refinement\n",
"def myrefine3(tri_points, area):\n",
" center_tri = np.sum(np.array(tri_points), axis=0) / 3.0\n",
" p0 = [(center_tri[0], center_tri[1])]\n",
" _node, r = mt.FindClosestNode(nodes, [], p0, tree=p1tree)\n",
" r = r[0]\n",
" max_area = 0.3 + (0.01 - 0.3) / (1 + r**2)\n",
" return bool(area > max_area)\n",
"\n",
"\n",
"mt.DoTriMesh(p1, v1, tri_refine=myrefine3);"
]
},
{
"cell_type": "markdown",
"id": "fa0ff70f-1d6c-4e92-89a6-b5ef2c1374ba",
"metadata": {},
"source": [
"### Figure 21"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "da73da19-a9f8-409a-b57b-5ebed6791759",
"metadata": {},
"outputs": [],
"source": [
"# Simple mesh rectangle with second order points\n",
"p, v = mt.RectangleSegments([-1.0, -1.0], [2.5, 3.0], edge_length=length)\n",
"poi, tri, BouE, li_BE, bou_elem, CuE, li_CE = mt.DoTriMesh(\n",
" p, v, edge_length=length, order=2, show=None\n",
")\n",
"\n",
"plt.triplot(poi[:, 0], poi[:, 1], tri[:, 0:3])\n",
"maxi = np.max(tri[:, 0:3]) + 1\n",
"plt.plot(poi[maxi:, 0], poi[maxi:, 1], \"k*\")\n",
"mt.PlotBoundary(poi, np.array(BouE), \"Segments\")\n",
"plt.show()\n",
"print(\"points:\", poi[0:5], \"....\")\n",
"print(\"elements\", tri[0:5], \"....\")\n",
"print(\"boundary\", BouE)"
]
},
{
"cell_type": "markdown",
"id": "a582e22d-f57b-4252-b818-dfa8841cb60c",
"metadata": {},
"source": [
"### Figure 22, connect meshes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "df38635e-d937-4aad-9dc3-111aaa1d043b",
"metadata": {},
"outputs": [],
"source": [
"# connect mesh\n",
"\n",
"# mesh A\n",
"p1, v1 = mt.LineSegments([0, 1], [0, 0], edge_length=length)\n",
"p2, v2 = mt.LineSegments([0, 0], [1, 0], edge_length=length)\n",
"p, v = mt.AddSegments(p1, p2)\n",
"p1, v1 = mt.CircleSegments([0, 0], 1, a_min=0, a_max=np.pi / 2, edge_length=length)\n",
"p, v = mt.AddSegments(p, p1)\n",
"pA, tA, bA, lA, bou_elemA, cuA, lcA = mt.DoTriMesh(p, v, edge_length=length)\n",
"\n",
"# mesh B\n",
"p1, v1 = mt.CircleSegments([0, 0], 1, a_min=0, a_max=np.pi / 2, edge_length=length)\n",
"p2, v2 = mt.LineSegments([0, 1], [2, 2], edge_length=length)\n",
"p, v = mt.AddSegments(p1, p2)\n",
"p1, v1 = mt.CircleSegments(\n",
" [0, 0], 2 * np.sqrt(2), a_min=np.pi / 4, a_max=0, edge_length=length\n",
")\n",
"p, v = mt.AddSegments(p, p1)\n",
"p1, v1 = mt.LineSegments([2 * np.sqrt(2), 0], [1, 0], edge_length=length)\n",
"p, v = mt.AddSegments(p, p1)\n",
"pB, tB, bB, lB, bou_elemB, cuB, lcB = mt.DoTriMesh(p, v, edge_length=length)\n",
"\n",
"# connect\n",
"p, t, b, bl, idn = mt.ConnectMesh(pA, tA, bA, pB, tB, bB, epsilon=1e-8)\n",
"plt.triplot(p[:, 0], p[:, 1], t[:, 0:3])\n",
"k = [x[0] for x in idn]\n",
"plt.plot(p[k, 0], p[k, 1], \"ro\", mfc=\"none\")\n",
"\n",
"mt.PlotBoundary(p, np.array(b), \"Segments\")\n",
"plt.show()\n",
"\n",
"Ps = [[1, 0], [1, 0]]\n",
"bseg = mt.RetrieveSegments(p, b, bl, Ps, [\"Nodes\"])\n",
"mt.PlotBoundary(p, bseg[0], \"Nodes\")\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.14.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: examples/jw_meshtools.py
================================================
"""Toolbox for generating a mesh."""
from collections import Counter
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from scipy.spatial import cKDTree
from meshpy import triangle
def RefineMeshElements(poi, tri, uu, n=1):
t_new = []
if n == 1:
for t in tri:
t_new += [[t[0], t[3], t[5]]]
t_new += [[t[3], t[1], t[4]]]
t_new += [[t[3], t[4], t[5]]]
t_new += [[t[4], t[2], t[5]]]
return poi, np.array(t_new), uu
else:
p_new = list(poi)
u_new = list(uu)
NN = len(poi)
for t in tri:
n1 = t[0]
n2 = t[1]
n3 = t[2]
n4 = t[3]
n5 = t[4]
n6 = t[5]
p1 = poi[n1]
p2 = poi[n2]
p3 = poi[n3]
p4 = poi[n4]
p5 = poi[n5]
p6 = poi[n6]
# define new points
q1 = (p1 + p4 + p6) / 3.0
q2 = (p4 + p2 + p5) / 3.0
q3 = (p3 + p6 + p5) / 3.0
q4 = (p4 + p5 + p6) / 3.0
# compute values at new points
b1 = poi[n2, 1] - poi[n3, 1]
b2 = poi[n3, 1] - poi[n1, 1]
b3 = poi[n1, 1] - poi[n2, 1]
c1 = poi[n3, 0] - poi[n2, 0]
c2 = poi[n1, 0] - poi[n3, 0]
c3 = poi[n2, 0] - poi[n1, 0]
a1 = poi[n2, 0] * poi[n3, 1] - poi[n3, 0] * poi[n2, 1]
a2 = poi[n3, 0] * poi[n1, 1] - poi[n1, 0] * poi[n3, 1]
a3 = poi[n1, 0] * poi[n2, 1] - poi[n2, 0] * poi[n1, 1]
twodelta = b1 * c2 - c1 * b2
PHI = uu[t]
phi_inner = []
for Q in [q1, q2, q3, q4]:
N1 = 1.0 / twodelta * (a1 + b1 * Q[0] + c1 * Q[1])
N2 = 1.0 / twodelta * (a2 + b2 * Q[0] + c2 * Q[1])
N3 = 1.0 / twodelta * (a3 + b3 * Q[0] + c3 * Q[1])
Basefunc = [
(2 * N1 - 1) * N1,
(2 * N2 - 1) * N2,
(2 * N3 - 1) * N3,
4 * N1 * N2,
4 * N2 * N3,
4 * N1 * N3,
]
phi_inner += [sum(Basefunc * PHI)]
p_new += [q1, q2, q3, q4]
u_new += phi_inner
t_new += [[n1, NN, n6], [n1, n4, NN], [n4, n6, NN]]
t_new += [[n4, NN + 1, n5], [n4, n2, NN + 1], [n2, n5, NN + 1]]
t_new += [[n5, NN + 2, n6], [n5, n3, NN + 2], [n3, n6, NN + 2]]
t_new += [[n5, NN + 3, n4], [n5, n6, NN + 3], [n6, n4, NN + 3]]
NN += 4
print(t_new)
p_new = np.array(p_new)
t_new = np.array(t_new)
u_new = np.array(u_new)
return p_new, t_new, u_new
def PlotMeshNumbers(p, t, edges=None, pltshow=True):
"""
PlotMeshNumbers(p,t,edges=[],pltshow=True)
---------------
p : points of the triangular mesh
t : elements of the mesh (first order 3 numbers, second order 6 numbers)
"""
if edges is None:
edges = []
plt.triplot(p[:, 0], p[:, 1], t[:, 0:3])
# annotate nodes
for i in range(len(p)):
buf = f"{i}"
x = p[i, 0]
y = p[i, 1]
plt.plot(x, y, "ok", markersize=5)
plt.text(x, y, buf, color="r", fontsize=13)
# annotate elements
for n in range(len(t)):
buf = f"{n}"
ps = (p[t[n, 0], :] + p[t[n, 1], :] + p[t[n, 2], :]) / 3.0
plt.text(ps[0], ps[1], buf, color="b", fontsize=9)
if edges != []:
for n in range(len(edges)):
buf = f"{n}"
ps = (p[edges[n][0], :] + p[edges[n][1], :]) / 2.0
plt.text(ps[0], ps[1], buf, color="g", fontsize=11)
if pltshow:
plt.show()
# only for a small number of triangles fast enough
def PlotSurfaceMesh(p, t, color="b"):
ae, _b, _be = FindEdges(t)
fig = plt.figure()
ax = Axes3D(fig)
for x in ae:
P1 = p[x[0]]
P2 = p[x[1]]
X = np.array([P1[0], P2[0]])
Y = np.array([P1[1], P2[1]])
Z = np.array([P1[2], P2[2]])
ax.plot(X, Y, Z, color)
plt.show()
# btype can be 'Nodes' or 'Segments'
#
def PlotBoundary(p, boundary, btype):
"""
PlotBoundary(p,boundary,btype)
------------------------------
plot a segment curve, a node curve, or a line graph
boundary : list of edges or nodes to be plotted
btype : string of curve type ('Segments', 'Nodes', 'Curve')
"""
bound = np.array(boundary)
if btype == "Nodes":
X = p[bound, 0]
Y = p[bound, 1]
plt.plot(X, Y, "bo")
elif btype == "Lines":
X = p[bound, 0]
Y = p[bound, 1]
plt.plot(X, Y, "-og")
else:
for b in bound:
P1 = p[b[0], :]
P2 = p[b[1], :]
if btype == "Segments":
farbe = "r"
plt.plot([P1[0], P2[0]], [P1[1], P2[1]], farbe, lw=1)
# arrows at segments
dX = P2 - P1
ls = np.sqrt(np.sum(dX**2))
v1 = [-dX[0] - dX[1], dX[0] - dX[1]]
av1 = np.sqrt(v1[0] ** 2 + v1[1] ** 2)
v1 = v1 / av1 * ls / 2
v2 = [dX[1] - dX[0], -dX[0] - dX[1]]
av2 = np.sqrt(v2[0] ** 2 + v2[1] ** 2)
v2 = v2 / av2 * ls / 2
pm = (P1 + P2) / 2.0
xx = [pm[0] + v1[0], pm[0], pm[0] + v2[0]]
yy = [pm[1] + v1[1], pm[1], pm[1] + v2[1]]
plt.plot(xx, yy, "y")
else:
farbe = "g"
plt.plot([P1[0], P2[0]], [P1[1], P2[1]], farbe)
# plt.show()
def MakeSurfaceMesh(xstr, ystr, zstr, u0, u1, v0, v1, n1, n2):
eps = 1e-13
all_u = np.linspace(u0, u1, n1)
all_v = np.linspace(v0, v1, n2)
# make u-v boundary for desired mesh
uv_bound = [[all_u[i], all_v[0]] for i in range(n1)]
uv_bound += [[all_u[-1], all_v[i]] for i in range(1, n2 - 1)]
uv_bound += [[all_u[i], all_v[-1]] for i in range(n1)[-1::-1]]
uv_bound += [[all_u[0], all_v[i]] for i in range(1, n2 - 1)[-1::-1]]
max_len = max([np.max(np.diff(all_u)), np.max(np.diff(all_v))])
# make mesh
uv_points = np.array([*uv_bound, uv_bound[0]])
p1, v1 = PointSegments(uv_points)
p_uv, elements, bou, li_bou = DoTriMesh(p1, v1, edge_length=max_len, show=False)
# PlotMeshNumbers(p_uv,elements)
# sort boundary points
UVs = [[u0, v0], [u0, v0]]
bseg = RetrieveSegments(p_uv, bou, li_bou, UVs, ["Nodes"])[0]
bseg = np.sort(bseg)
N = len(bseg)
if N != len(uv_bound):
print(
"WARNING: Additional boundary points inserted by triangle.c "
"(du too different from dv)"
)
# calculate boundary points of 3D surface mesh
bound_p = np.zeros((N, 3))
for i in bseg:
# u = p_uv[i, 0]
# v = p_uv[i, 1]
p = np.array([eval(xstr), eval(ystr), eval(zstr)])
bound_p[i, :] = p
# check for identical points on boundary
NN = len(p_uv)
identical_nodes = []
table_nodes = np.arange(NN)
for i in range(N):
id = ()
for j in range(i + 1, N):
# check if points are the same
if (
bseg[j] >= 0
and bseg[i] >= 0
and np.sum((bound_p[i, :] - bound_p[j, :]) ** 2) < eps
):
id += (bseg[j],)
# mark already identified nodes
table_nodes[bseg[j]] = -1
bseg[j] = -1
if len(id) != 0:
id += (bseg[i],)
identical_nodes += [id[-1::-1]]
# delete all identical nodes
table_nodes = table_nodes[table_nodes >= 0]
# calculate 3D points from uv points
all_p = np.zeros((NN, 3))
for i in range(NN):
# u = p_uv[i, 0]
# v = p_uv[i, 1]
p = np.array([eval(xstr), eval(ystr), eval(zstr)])
all_p[i, :] = p
# final correspondace table
final_table = np.arange(NN)
# rename the nodes
table_nodes = list(table_nodes)
for j in table_nodes:
final_table[j] = table_nodes.index(j)
# rename identical nodes
del_nodes = []
for x in identical_nodes:
for j in x[1::]:
final_table[j] = final_table[x[0]]
del_nodes += [j]
# delete identical nodes
del_nodes = np.sort(del_nodes)[-1::-1]
for j in del_nodes:
all_p = np.delete(all_p, j, axis=0)
# rename nodes in elements
elements = np.array(elements).flatten()
elements = final_table[elements].reshape(-1, 3)
elements = np.array([list(x) for x in elements if len(set(x)) == 3])
# mal.triangular_mesh(all_p[:,0],all_p[:,1],all_p[:,2],elements)
# mal.show()
return all_p, elements
# PlotSurfaceMesh(all_p,elements,color='b')
# plt.show()
def MakeSphere(P0, R, mesh_len, epsilon=1e-8, type="cart"):
if type == "cart":
# make part of the sphere
xstr = f"{R:g}*np.cos(u)*np.sin(v)"
ystr = f"{R:g}*np.sin(u)*np.sin(v)"
zstr = f"{R:g}*np.cos(v)"
Nu = int(2 * np.pi * R / mesh_len)
pp, tt = MakeSurfaceMesh(
xstr, ystr, zstr, 0, 2 * np.pi, np.pi / 4.0, np.pi / 2.0, Nu, int(Nu / 3.0)
)
_edges, bou, _bel = FindEdges(tt)
# add upper part
ubou = []
# count number of points on upper circle
for x in bou:
if pp[x[0], 2] > R / 10.0:
ubou += [x]
# use upper segments for new 2D circle
ubou, _bl = SortSegments(ubou)
p2 = []
v2 = []
for j, x in enumerate(ubou):
p2 += [(pp[x[0], 0], pp[x[0], 1])]
if j == (len(ubou) - 1):
j2 = 0
else:
j2 = j + 1
v2 += [(j, j2)]
# make circle mesh and lift up the z values
ppp, ttt, bouu, _li = DoTriMesh(p2, v2, edge_length=mesh_len, show=False)
ppp = np.append(ppp, np.ones((len(ppp), 1)) * -1, axis=1)
for i in range(len(ppp)):
ppp[i, 2] = np.sqrt(R**2 - ppp[i, 0] ** 2 - ppp[i, 1] ** 2)
# connect upper sphere and lower sphere
bou = [[x[0], x[1]] for x in bou]
p, t, b, _bl, _idn = ConnectMesh(pp, tt, bou, ppp, ttt, bouu, epsilon=1e-8)
pp = p * 1
for i in range(len(pp)):
pp[i, 2] *= -1
# connect lower half circle
tt = [[x[1], x[0], x[2]] for x in t]
bb = np.copy(b)
pn, tn, _bn, _bln, _idn = ConnectMesh(pp, tt, bb, p, t, b, epsilon=1e-8)
else:
# make part of the sphere
xstr = f"{R:g}*np.cos(u)*np.sin(v)"
ystr = f"{R:g}*np.sin(u)*np.sin(v)"
zstr = f"{R:g}*np.cos(v)"
Nu = int(2.0 * np.pi * R / mesh_len)
pn, tn = MakeSurfaceMesh(
xstr, ystr, zstr, 0, 2.0 * np.pi, 0, np.pi, Nu, int(Nu / 3.0)
)
_edges, bou, _bel = FindEdges(tn)
Ps = np.array(P0)
pn = np.array([X - Ps for X in pn])
bou = []
return pn, tn, bou
# Connect two different meshes at their overlapping boundary
def ConnectMesh(p1, t1, b1, p2, t2, b2, epsilon=1e-8):
# find identical nodes on boundary
# find correspondence between boundary nodes on boundary 1 and 2
bb2 = [x[0] for x in b2]
eps = epsilon**2
id_nodes = []
for seg in b1:
X = p1[seg[0], :]
bb2_tmp = bb2.copy()
for i, node2 in enumerate(bb2):
Y = p2[node2, :]
delta = np.sum((X - Y) ** 2)
if delta < eps:
id_nodes += [(seg[0], node2)]
# print(X,Y)
bb2_tmp.pop(i)
bb2 = bb2_tmp
# make list with all mesh 2 nodes for renumbering
node2_table = np.arange(len(p2))
tab = node2_table * 0 - 1
id_b2 = [x[1] for x in id_nodes]
node2_table = np.delete(node2_table, id_b2)
for i, x in enumerate(node2_table):
tab[x] = i + len(p1)
# replace boundary nodes
for x in id_nodes:
tab[x[1]] = x[0]
# delete identical nodes in p2
idn2 = [x[1] for x in id_nodes]
p2 = np.delete(p2, idn2, axis=0)
# renumber in element list
ptot = np.append(p1, p2, axis=0)
for i in range(len(t2)):
t2[i, :] = [tab[t2[i, 0]], tab[t2[i, 1]], tab[t2[i, 2]]]
ttot = np.append(t1, t2, axis=0)
# find new boundary
idn1 = [x[0] for x in id_nodes]
boundary1 = [x for x in b1 if not (idn1.count(x[0]) == 1 and idn1.count(x[1]) == 1)]
boundary2 = [
[tab[x[0]], tab[x[1]]]
for x in b2
if not (idn2.count(x[0]) == 1 and idn2.count(x[1]) == 1)
]
boundary = np.append(boundary1, boundary2).reshape(-1, 2)
boundary = [tuple(x) for x in boundary]
btot, blist = SortSegments(boundary)
blist += [len(btot)]
# boundary=mt.CheckSegmentSense(ttot,bound,blist)
print("identical nodes found", len(id_nodes))
return ptot, ttot, btot, blist, id_nodes
# NoSe is a list containing the type of boundary 'Nodes' or 'Segments'
# points : mesh points
#
def RetrieveSegments(points, segments, curve_list, Ps, NoSe):
"""
all = RetrieveSegments(points,segments,curve_list,Ps,NoSe)
------------------
points : all points of the mesh
segments : All edges used for search
curve_list : List associated with segments
Ps : List of points.
Consecutive Points form start and endpoint of path lying in segments.
If there is no connection in segments the path is skipped
NoSe : List of strings defining type of path found ('Nodes' or 'Segments')
"""
# extract first and second row from segment list
row1 = list(np.array(segments)[:, 0])
row2 = list(np.array(segments)[:, 1])
# for second order
if len(segments[0]) == 3:
row3 = list(np.array(segments)[:, 2])
else:
row3 = []
# find node indices for desired points
bnodes = list(set(row1 + row2))
nn, _dd = FindClosestNode(bnodes, points, Ps)
# print("Ps = ",Ps)
# print("Nodes: ",nn)
# print("error ",dd)
# make different segments
ret = []
this_type = 0
for k in range(len(Ps) - 1):
Orient = False
try:
first = row1.index(nn[k])
last = row2.index(nn[k + 1])
except ValueError:
try:
first = row1.index(nn[k + 1])
last = row2.index(nn[k])
Orient = True
except ValueError:
# only possible if: last_bnr!=first_bnr
try:
first = row1.index(nn[k + 1])
last = row1.index(nn[k])
except ValueError:
first = row2.index(nn[k + 1])
last = row2.index(nn[k])
# look for the number of boundary
for j in range(len(curve_list) - 1):
if curve_list[j] <= first < curve_list[j + 1]:
first_bnr = j
if curve_list[j] <= last < curve_list[j + 1]:
last_bnr = j
# both points are on the same boundary
if last_bnr == first_bnr:
# nodes
# print("1. node , 2. node ",nn[k],nn[k+1])
# print("boundaries ",last_bnr,first_bnr)
# print("this_type = ",this_type)
if this_type >= len(NoSe):
print(
f"Error (this_type={this_type} , len(NoSe)={len(NoSe)}): "
"Increase Nodes/Segments List"
)
if NoSe[this_type] == "Nodes":
if first < last:
add = row1[first : last + 1]
add += row3[first : last + 1]
else:
add = (
row1[first : curve_list[first_bnr + 1] :]
+ row1[curve_list[first_bnr] : last + 1]
)
add += (
row3[first : curve_list[first_bnr + 1] :]
+ row3[curve_list[first_bnr] : last + 1]
)
# line not closed
if nn[k] != nn[k + 1]:
add += [row2[last]]
# segments
else:
if first < last:
add = segments[first : last + 1]
else:
add = (
segments[first : curve_list[first_bnr + 1] :]
+ segments[curve_list[first_bnr] : last + 1]
)
if Orient:
add = [x[-1::-1] for x in add[-1::-1]]
ret += [add]
this_type += 1
return ret
# find all points of the triangulation which are element of
# curve, given by a function call
def FindCurveSegments(points, t, func, inner_p=None):
if inner_p is None:
inner_p = []
ret = []
for i, X in enumerate(points):
yn = func(X)
if yn:
ret += [i]
if ret == []:
print("WARNING: No nodes found on given Curve func", func)
return [], []
else:
print(len(ret), " Nodes found on inner curve")
# construct edges
t_all = np.array([t[:, 0], t[:, 1], t[:, 1], t[:, 2], t[:, 2], t[:, 0]]).T
tt = t_all.reshape(3 * len(t), 2)
all_edges = [tuple(x) for x in tt]
# all unique edges
all_edges = list(set(all_edges))
nodes = ret[:]
seg = []
# find the segments to the node list
for k in range(len(ret)):
for y in all_edges:
if (y[0] == ret[k] and y[1] in ret) or (y[1] == ret[k] and y[0] in ret):
z = tuple(sorted(y))
seg += [z]
# make list unique
seg = list(set(seg))
# each node should be connected to other nodes not more than twice
occ = [x[0] for x in seg] + [x[1] for x in seg]
occ = Counter(occ)
for x in occ:
if occ[x] > 2:
multiple = [y for y in seg if x in y]
for z in multiple:
pm = (points[z[0], :] + points[z[1], :]) / 2.0
if not func(pm):
seg.remove(z)
occ[z[0]] -= 1
occ[z[1]] -= 1
# sort list
sseg, ls = SortSegments(seg)
ls += [len(sseg)]
if len(ls) > 2:
print(len(ls) - 1, "different curves found")
seg = [list(y) for y in sseg]
# give segments a direction in 2D if desired,
if len(points[0]) == 2 and inner_p != []:
for n in range(len(ls) - 1):
i1 = ls[n]
i2 = ls[n + 1]
# look for closest segment to inner point
this_seg = seg[i1:i2]
first_nodes = np.array(this_seg)[:, 0]
# check first forclosest node
tot_dist = []
indices = []
for pp in inner_p:
i_p = np.array(pp)
square_dist = np.sum((points[first_nodes, :] - i_p) ** 2, axis=1)
jj = np.argsort(square_dist)[0]
tot_dist += [square_dist[jj]]
indices += [jj]
nn = np.argsort(np.array(tot_dist))[0]
jj = indices[nn]
i_p = inner_p[nn]
# closest segment at position jj
n1 = this_seg[jj][0]
n2 = this_seg[jj][1]
dX = points[n2, :] - points[n1, :]
dY = i_p - points[n1, :]
# check orientation
if np.cross(dX, dY) < 0:
this_seg = [[x[1], x[0]] for x in this_seg[-1::-1]]
seg[i1:i2] = this_seg
print("change direction around", i_p)
return nodes, seg, ls
# find the nodes or segements between two points P1, P2
# btype is Nodes or Segments
##########################################
# --> ZU LANGSAM RETRIEVEBOUNDARY nutzen
##########################################
def FindBoundary(p, t, P1, P2, btype):
# find boundary
_kanten, rand_seg, _rand_elemente = FindEdges(t)
# connect boundary according to P1
rand_seg, rand_list, P1_boundary = ConnectBoundary(
rand_seg, p, pstart=[(P1[0], P1[1])]
)
# search for node at position P2
index_start = rand_list[P1_boundary]
if P1_boundary == len(rand_list) - 1:
index_end = rand_seg.shape[0]
else:
index_end = rand_list[P1_boundary + 1]
# print("index_start",index_start)
# print("index_end",index_end)
rand_seg = rand_seg[index_start:index_end]
# print("rand_seg",rand_seg)
NR = rand_seg.shape[0]
vec = np.array(P2) - p[rand_seg[0, 1], :]
this_min = np.dot(vec, vec)
last_seg = 0
for k in range(1, NR, 1):
Pt = p[rand_seg[k, 1]]
vec = Pt - P2
this_prod = np.dot(vec, vec)
if this_prod < this_min:
this_min = this_prod
last_seg = k
# make boundary segments between P1 and P2
result = np.array([rand_seg[0]])
for k in range(1, last_seg + 1):
result = np.insert(result, result.shape[0], rand_seg[k], axis=0)
# define nodes if necessary
if btype == "Nodes":
last_node = result[result.shape[0] - 1, 1]
result = result[:, 0]
# not a closed boundary
if result[0] != last_node:
result = np.append(result, last_node)
# print("Erster Punkt:",p[result[0],:])
return result
# sort a list of edges (with elemental number) along a path
# [[40, (4, 8)], [90, (12, 17)], [40, (2, 4)], [8, (4, 8)], [90, (8, 12)], [8, (8, 12)]]
# -->
# [[90, (12, 17)], [90, (8, 12)], [8, (8, 12)], [8, (4, 8)], [40, (4, 8)], [40, (2, 4)]]
# not connected pathes are possible
def SortEdgeList(folly):
fol = [[x[0], tuple(sorted(x[1]))] for x in folly]
index = -1
new_fol = []
isolist = []
while index < 0:
# find start element (boundary element or first element of list)
isolist.append(len(new_fol))
index = 0
edges = [x[1] for x in fol]
for k, x in enumerate(edges):
if edges.count(x) == 1:
index = k
break
# start sorting
new_fol.append(fol[index])
del fol[index]
while len(fol) > 0:
# find index of next list element
index = -1
for k, y in enumerate(fol):
if (new_fol[-1][0] == y[0]) | (new_fol[-1][1] == y[1]):
index = k
break
if index < 0:
break
# add to new list and delete old list element
new_fol.append(fol[index])
del fol[index]
return new_fol, isolist
def ContourSurface(p, t, u, iso_in, infig):
# make iso values
if isinstance(iso_in, int):
isolines = np.linspace(min(u), max(u), iso_in)
print("isolines", isolines)
else:
isolines = iso_in
# make all edges
NE = len(t)
all_edges = np.array([[x[0], x[1], x[1], x[2], x[2], x[0]] for x in t])
all_edges = np.resize(all_edges, (3 * NE, 2))
for iso in isolines:
# find the edges and elements with an isoline with value iso
iso_edges = [
[i // 3, tuple(x)]
for i, x in enumerate(all_edges)
if min(u[x]) <= iso <= max(u[x])
]
if len(iso_edges) > 1:
iso_edges, nis = SortEdgeList(iso_edges)
# add end of list for slicing
nis.append(len(iso_edges))
# run through all the non-connected isolines
for k in range(len(nis) - 1):
hhelp = iso_edges[nis[k] : nis[k + 1]]
# take only each second point
unique_ie = [hhelp[0], *hhelp[1:-1:2], hhelp[-1]]
# Compute polygon for this iso curve
X = Y = Z = []
for x in unique_ie:
i1 = x[1][0]
i2 = x[1][1]
t = (iso - u[i1]) / (u[i2] - u[i1])
P = p[i1] + t * (p[i2] - p[i1])
X = np.append(X, P[0])
Y = np.append(Y, P[1])
Z = np.append(Z, P[2])
plt.plot3d(
X,
Y,
Z,
tube_radius=None,
figure=infig,
color=(0.2, 0.2, 0.2),
line_width=5,
)
def ComputeGradient(p, t, u, poi=None, num=10):
"""
Compute the Gradient of a triangular mesh
Input: p array([[x1,y1],[x2,y2],...]) node points
t array([[n1,n2,n3],[n4,n5,n6],...]) elements
u array([u1,u2,u3,.....]) function at node values
poi array([[X1,Y1],[X2,Y2],...]) points for gradient evaluation
num N generate NxN points array poi
Output: x x-component of point
y y-component of point
g_x gradient, x-component at (x,y)
g_y gradient, y-component at (x,y)
"""
if poi is None:
poi = []
if poi == []:
eps = 1e-6
h1 = np.linspace(min(p[:, 0]) + eps, max(p[:, 0]) - eps, num)
h2 = np.linspace(min(p[:, 1]) + eps, max(p[:, 1]) - eps, num)
h1, h2 = np.meshgrid(h1, h2)
h1.resize(num * num, 1)
h2.resize(num * num, 1)
points = np.append(h1, h2, axis=1)
else:
points = poi
# Compute all a,b,c
a1 = p[t[:, 1], 0] * p[t[:, 2], 1] - p[t[:, 1], 1] * p[t[:, 2], 0]
a2 = p[t[:, 2], 0] * p[t[:, 0], 1] - p[t[:, 2], 1] * p[t[:, 0], 0]
b1 = p[t[:, 1], 1] - p[t[:, 2], 1]
b2 = p[t[:, 2], 1] - p[t[:, 0], 1]
c1 = p[t[:, 2], 0] - p[t[:, 1], 0]
c2 = p[t[:, 0], 0] - p[t[:, 2], 0]
delta = 0.5 * (b1 * c2 - b2 * c1)
XYUV = np.array([])
for x in points:
x = np.array(x)
ksi = 0.5 / delta * (a1 + b1 * x[0] + c1 * x[1])
eta = 0.5 / delta * (a2 + b2 * x[0] + c2 * x[1])
element = np.where((ksi >= 0) & (eta >= 0) & (eta + ksi - 1 <= 0))[0]
if len(element) > 0:
element = element[0]
bb1 = b1[element]
bb2 = b2[element]
bb3 = p[t[element, 0], 1] - p[t[element, 1], 1]
cc1 = c1[element]
cc2 = c2[element]
cc3 = p[t[element, 1], 0] - p[t[element, 0], 0]
dd = delta[element]
u1 = u[t[element, 0]]
u2 = u[t[element, 1]]
u3 = u[t[element, 2]]
gx = 0.5 / dd * (bb1 * u1 + bb2 * u2 + bb3 * u3)
gy = 0.5 / dd * (cc1 * u1 + cc2 * u2 + cc3 * u3)
help = np.append(x, np.array([gx, gy]))
XYUV = np.append(XYUV, help)
XYUV.resize(len(XYUV) // 4, 4)
return XYUV[:, 0], XYUV[:, 1], XYUV[:, 2], XYUV[:, 3]
# For a given boundary segment Seg the corresponding boundary element is found.
# A list of all boundary elements must be provided
def FindBoundaryElement(t, Seg, BoundE):
for i in range(len(BoundE)):
# check main nodes
if len(set(t[BoundE[i], 0:3]).intersection(Seg[0:2])) == 2:
# print("Boundary Segment ",Seg," Boundary Element ",t[BoundE[i]])
# sort in a way that the first two indices are boundary indices
# main indices first
ThirdIndex = next(set(t[BoundE[i], 0:3]) - set(Seg[0:2]))
dbllist = list(t[BoundE[i], 0:3]) * 2
kk = 1 + dbllist.index(ThirdIndex)
MainIndices = dbllist[kk : kk + 3]
# middle indices next
if len(Seg) == 3:
dbllist = list(t[BoundE[i], 3:]) * 2
kk = dbllist.index(Seg[2])
RestIndices = dbllist[kk : kk + 3]
else:
RestIndices = []
# print("Segment: ",Seg," Element: ---> ",MainIndices+RestIndices)
return MainIndices + RestIndices
# Compute the normal derivative along the segments in boundary
#
def NormalDerivative(boundary, p, tt, u, inner=None, BouE=None):
"""
Compute the normal derivative on a given boundary
Input: boundary [[n1,n2],[n3,n4],...] boundary segments
p array([[x1,y1],[x2,y2],...]) node points
t array([[n1,n2,n3],[n4,n5,n6],...]) elements
u array([u1,u2,u3,.....]) function at node values
right direction of inner node/element
Output: nor normal derivative at the segments
rl running length
line_int line integral over boundary of the normal derivative
"""
if BouE is None:
BouE = []
# second order
if len(boundary[0]) == 3:
if BouE == []:
edges, _segments, BouE = FindEdges(tt)
nor = []
rl = []
line_int = 0
for seg in boundary:
# find boundary element, third index is the volume index
b_elem = FindBoundaryElement(tt, seg, BouE)
xM, yM = p[b_elem[3]]
X1 = p[b_elem[0]]
X2 = p[b_elem[1]]
X3 = p[b_elem[2]]
ls = np.sqrt(np.sum((X2 - X1) ** 2))
b_1 = X2[1] - X3[1]
b_2 = X3[1] - X1[1]
b_3 = X1[1] - X2[1]
c_1 = X3[0] - X2[0]
c_2 = X1[0] - X3[0]
c_3 = X2[0] - X1[0]
a_1 = X2[0] * X3[1] - X3[0] * X2[1]
a_2 = X3[0] * X1[1] - X1[0] * X3[1]
a_3 = X1[0] * X2[1] - X2[0] * X1[1]
delta = 0.5 * (b_1 * c_2 - c_1 * b_2)
delsq = delta**2
Phi_1, Phi_2, Phi_3, Phi_4, Phi_5, Phi_6 = u[b_elem]
b12 = b_1 * b_2
b13 = b_1 * b_3
b23 = b_2 * b_3
_b11 = b_1**2
_b22 = b_2**2
b33 = b_3**2
c12 = c_1 * c_2
c13 = c_1 * c_3
c23 = c_2 * c_3
_c11 = c_1**2
_c22 = c_2**2
c33 = c_3**2
Qseq = [0, 0, 0, 0, 0, 0]
Qseq[0] = (b13 + c13) * (0.5 * delta - a_1 - b_1 * xM - c_1 * yM) / delsq
Qseq[1] = (b23 + c23) * (0.5 * delta - a_2 - b_2 * xM - c_2 * yM) / delsq
Qseq[2] = (b33 + c33) * (0.5 * delta - a_3 - b_3 * xM - c_3 * yM) / delsq
Qseq[3] = (
-(
a_1 * b23
+ a_1 * c23
+ a_2 * b13
+ a_2 * c13
+ 2 * b12 * b_3 * xM
+ b13 * c_2 * yM
+ b_1 * c23 * xM
+ b23 * c_1 * yM
+ b_2 * c13 * xM
+ 2 * c12 * c_3 * yM
)
/ delsq
)
Qseq[4] = (
-(
a_2 * b33
+ a_2 * c33
+ a_3 * b23
+ a_3 * c23
+ 2 * b_2 * b33 * xM
+ b23 * c_3 * yM
+ b_2 * c33 * xM
+ b33 * c_2 * yM
+ b_3 * c23 * xM
+ 2 * c_2 * c33 * yM
)
/ delsq
)
Qseq[5] = (
-(
a_1 * b33
+ a_1 * c33
+ a_3 * b13
+ a_3 * c13
+ 2 * b_1 * b33 * xM
+ b13 * c_3 * yM
+ b_1 * c33 * xM
+ b33 * c_1 * yM
+ b_3 * c13 * xM
+ 2 * c_1 * c33 * yM
)
/ delsq
)
density = (
Qseq[0] * Phi_1
+ Qseq[1] * Phi_2
+ Qseq[2] * Phi_3
+ Qseq[3] * Phi_4
+ Qseq[4] * Phi_5
+ Qseq[5] * Phi_6
)
line_int += density
nor += [density / ls]
rl += [ls]
# add all segment length
for i in range(1, len(rl)):
rl[i] += rl[i - 1]
rl = np.array(rl) - rl[0]
return np.array(nor), np.array(rl), line_int
elif len(boundary[0]) == 2 and inner is None:
if BouE == []:
edges, _segments, BouE = FindEdges(tt)
nor = []
rl = []
line_int = 0
for seg in boundary:
# find boundary element, third index is the volume index
b_elem = FindBoundaryElement(tt, seg, BouE)
X1 = p[b_elem[0]]
X2 = p[b_elem[1]]
X3 = p[b_elem[2]]
ls = np.sqrt(np.sum((X2 - X1) ** 2))
b_1 = X2[1] - X3[1]
b_2 = X3[1] - X1[1]
b_3 = X1[1] - X2[1]
c_1 = X3[0] - X2[0]
c_2 = X1[0] - X3[0]
c_3 = X2[0] - X1[0]
delta = 0.5 * (b_1 * c_2 - c_1 * b_2)
Phi_1, Phi_2, Phi_3 = u[b_elem]
bb = 0.5 / delta * (b_1 * Phi_1 + b_2 * Phi_2 + b_3 * Phi_3)
cc = 0.5 / delta * (c_1 * Phi_1 + c_2 * Phi_2 + c_3 * Phi_3)
density = -bb * b_3 - cc * c_3
line_int += density
nor += [density / ls]
rl += [ls]
# add all segment length
for i in range(1, len(rl)):
rl[i] += rl[i - 1]
rl = np.array(rl) - rl[0]
return np.array(nor), np.array(rl), line_int
# first order, older code --> needs update
# step through all segments
nor = []
rl = [0]
line_int = 0
# make list of edges
edges = []
index_3 = []
for lt in tt:
edges += {lt[0], lt[1]}
index_3 += [lt[2]]
edges += {lt[1], lt[2]}
index_3 += [lt[0]]
edges += {lt[0], lt[2]}
index_3 += [lt[1]]
for s in boundary:
# seg=np.array(s)
# no_el=[(np.setxor1d(tt[j],seg)[0],j) for j in range(len(tt))
# if len(np.setxor1d(tt[j],seg))==1]
# search for element containing segment s, save third index and element number
so_seg = set(s)
no_el = []
for j in range(len(edges)):
if so_seg == edges[j]:
no_el += [(index_3[j], j // 3)]
if len(no_el) == 2:
break
# for inner curves the element has to be determined. Inner='right'
# means that the element is on the right side of the oriented curve
# print("s,node",seg,no_el,tt[no_el[0][1]],tt[no_el[1][1]])
v1 = p[s[1], :] - p[s[0], :]
normal_x = v1[1]
normal_y = -v1[0]
if len(no_el) == 2:
v2 = p[no_el[0][0], :] - p[s[0], :]
he = v1[0] * v2[1] - v1[1] * v2[0]
if (he < 0 and inner == "right") or (he > 0 and inner == "left"):
n = tt[no_el[0][1], :]
else:
n = tt[no_el[1][1], :]
if inner == "right":
normal_x *= -1
normal_y *= -1
# plt.plot(
# [(p[n[0],0]+p[n[1],0]+p[n[2],0])/3],
# [(p[n[0],1]+p[n[1],1]+p[n[2],1])/3],
# "x")
else:
n = [no_el[0][0], s[0], s[1]]
# local node 1 is always in the volume
# print("normal",normal_x,normal_y)
Ls = np.sqrt(normal_x**2 + normal_y**2)
b1 = p[n[1], 1] - p[n[2], 1]
b2 = p[n[2], 1] - p[n[0], 1]
b3 = p[n[0], 1] - p[n[1], 1]
c1 = p[n[2], 0] - p[n[1], 0]
c2 = p[n[0], 0] - p[n[2], 0]
c3 = p[n[1], 0] - p[n[0], 0]
delta = 0.5 * (b1 * c2 - c1 * b2)
u1 = u[n[0]]
u2 = u[n[1]]
u3 = u[n[2]]
phi_x = b1 * u1 + b2 * u2 + b3 * u3
phi_y = c1 * u1 + c2 * u2 + c3 * u3
# print("Gradient",phi_x,phi_y)
dudn = 0.5 / Ls / delta
dudn *= phi_x * normal_x + phi_y * normal_y
# print("dudn",dudn)
line_int += Ls * dudn
rl = np.append(rl, rl[-1] + Ls)
nor = np.append(nor, dudn)
# PlotBoundary(p,boundary,'Segments')
# plt.triplot(p[:,0],p[:,1],tt)
# plt.show()
# remove last length as rl starts with 0
rl = np.delete(rl, len(rl) - 1)
return nor, rl, line_int
def GetPosition(allnodes, node):
"""
Find the position of the nodes in array node in the array allnodes
Input: allnodes array([n1,n2,n3,...]) array of nodes
node array([nn1,nn2,....]) array of nodes
Output: pos array([pos_of_nn1,pos_of_nn2,...])
"""
return np.array([np.where(allnodes == x)[0][0] for x in node])
#
# Check orientation
#
def TriOrientation(p, t):
"""
Check Orientation of a triangulation, flip if necessary
"""
for m in range(len(t)):
p1 = np.array(p[t[m, 0]])
p2 = np.array(
[
t[m, 0],
]
)
p3 = np.array(
p[
t[m, 0],
]
)
if np.cross(p2 - p1, p3 - p1) < 0:
t[m] = [t[m, 0], t[m, 2], t[m, 1]]
print("flip ", m, " element")
return p, t
# Extract the edges
# ouput, edges and boundary edges and boundary_elements
def FindEdges(t):
"""
Find all edges of a given triangulation
Input: t array([[n1,n2,n3],[n4,n5,n6],...]) elements
Output: all_edges
boundary_edges
boundary_elements
"""
# pdb.set_trace();
NE = t.shape[0]
# generate an array of all edges
tall = np.array([t[:, 0], t[:, 1], t[:, 1], t[:, 2], t[:, 2], t[:, 0]]).T
tt = tall.reshape(3 * NE, 2)
ttt = np.sort(tt, 1)
# find all boundary edges
all_edges = [tuple(x) for x in ttt]
boundary_edges = []
boundary_elements = []
for i, x in enumerate(all_edges):
if all_edges.count(x) == 1:
row = i // 3
col = 2 * (i % 3)
boundary_edges.append(tuple(tall[row, col : col + 2]))
boundary_elements.append(row)
# find all unique edges
all_edges = list(set(all_edges))
boundary_elements = np.array(boundary_elements)
return all_edges, boundary_edges, boundary_elements
##################
#
# Boundary Tools
#
##################
# check the sense of the numbering in the segments
def CheckSegmentSense(t, boundary, indices):
new_bound = []
for k, pos in enumerate(indices):
first = set(boundary[pos])
boundary_element = [x for x in t if first.issubset(set(x))]
x = boundary_element[0]
if first == {x[0], x[2]}:
first = [x[2], x[0], x[1]]
elif first == {x[1], x[2]}:
first = [x[1], x[2], x[0]]
else:
first = x
# change sense
if k == len(indices) - 1:
end = len(boundary)
else:
end = indices[k + 1]
this_bound = [list(x) for x in boundary[pos:end]]
if first[0] != boundary[pos][0]:
this_bound = [[x[1], x[0]] for x in this_bound[-1::-1]]
# this_bound=[this_bound[-1]]+this_bound[:-1]
new_bound += this_bound
return new_bound
# given one segment
# e.g. (X,2) find segment (2,Y) and delete (2,Y) from list
def FindNextSegment(all_segments, node):
"""
Find a segment in a list of segments
e.g. node=(X,2) find segment (2,Y) and delete (2,Y) from list all_segments
Output: all_segments
flag for indicating the start of a new boundary
"""
# find next connecting segment
help = [x for x in all_segments if x[0] == node or x[1] == node]
new_bound = False
if len(help) == 0: # if connecting segment does not exist (=>new boundary)
# new code, allow for open segment trajectories
rest_nodes = [x for t in all_segments for x in t]
one_occ = [
[i // 2, x] for i, x in enumerate(rest_nodes) if rest_nodes.count(x) == 1
]
# only closed segments are present
if one_occ == []:
ret = all_segments[0]
del all_segments[all_segments.index(ret)]
# open lines are present
else:
ret = all_segments[one_occ[0][0]]
del all_segments[all_segments.index(ret)]
if one_occ[0][1] == ret[1]:
# print("Change direction of segment",ret)
ret = ret[-1::-1]
# old code
# ret=all_segments[0]
# del all_segments[all_segments.index(ret)]
new_bound = True
else:
ret = help[0]
del all_segments[all_segments.index(ret)]
if ret[0] != node:
ret = ret[-1::-1]
# print("Change direction of segment",help[0])
return ret, new_bound
# sort segments: (3,6),(6,1),(1,12),(12,5),...
# on output: sorted segments and indices of the different boundaries
def SortSegments(all_segments):
"""
Sort a list of Segements accordinly [(3,6),(6,1),(1,12),(12,5),...]
Input: unsorted list
Output: sorted list
list containing the indices of a new boundary
see also FindNextSegment
"""
count = len(all_segments)
node = -1
sorted_segments = []
boundaries = []
for j in range(len(all_segments)):
seg, new_bound = FindNextSegment(all_segments, node)
node = seg[1]
sorted_segments.append(seg)
if new_bound:
boundaries.append(j)
if len(sorted_segments) != count:
print("Something is wrong, number of segments not the same")
return sorted_segments, boundaries
# connect segments in a defined way
# (see SortSegments), but start sorting with a defined point p
# multiple p'2 for different closed boundaries are possible
def ConnectBoundary(boundary_segments, Pall, pstart=None):
"""
Sort the boundary segments in a defined order
Input: boundary_segments [[n1,n2],[n3,n4],...] boundary segments
pstart array([[x1,y1],[x2,y2],...)
start number of boundary 1 with (x1,y1) ,...
Pall array([[X1,X1],[X2,X2],...) node coordinates
Output: sorted boundary segments
start position of boundary segment for new curves
this_boundary number of boundary for the last point in the list pstart
see also SortSegments
"""
if pstart is None:
pstart = []
# sort the boundary segments
allseg = boundary_segments[:]
allseg, boundaries = SortSegments(allseg)
if pstart == []:
return allseg, boundaries
max_boundaries = len(boundaries)
# find all nodes on the given boundary
nodes = [x[0] for x in allseg]
# find closest nodes to desired point list p
indices, _distances = FindClosestNode(nodes, Pall, pstart)
# print("indices,dist=",indices,distances)
# print("boundaries",boundaries)
# print("all_seg",allseg)
# change order within each closed boundary
flag_sorted = [False] * len(boundaries)
for j in range(len(indices)):
# find position of node in the boundary list
# indj gives the position of the segment in allseg
indj = nodes.index(indices[j])
# find the number of boundary the node belongs to
this_boundary = (np.where(np.array(boundaries) <= indj)[0])[-1]
if not flag_sorted[this_boundary]:
# define the indices for slicing
ind_1 = boundaries[this_boundary]
if this_boundary + 1 == max_boundaries:
ind_2 = len(allseg)
else:
ind_2 = boundaries[this_boundary + 1]
# rearange the segments in the corresponding boundary
allseg = (
allseg[:ind_1]
+ allseg[indj:ind_2]
+ allseg[ind_1:indj]
+ allseg[ind_2:]
)
# resort only once
flag_sorted[this_boundary] = True
allseg = [[x[0], x[1]] for x in allseg]
allseg = np.array(allseg)
# print("Ræckgabe: ",allseg,boundaries)
return allseg, boundaries, this_boundary
# p0: points to be mapped
# Pall: all points present in the mesh
# nodes: only these nodes are used for search
# constraint defines constraints on distance
# tree: take a special tree for the search
def FindClosestNode(nodes, Pall, p0, constraint=-1, tree=None):
"""
nodes,dist = FindClosestNode(nodes,Pall,p0,constraint=-1,tree=None)
-------
0: points to be mapped
Pall: all points present in the mesh
nodes: only these nodes are used for search
constraint defines constraints on distance
tree: take a special tree for the search
"""
# take those points of the node list
# print("len(nodes) ",len(nodes))
# print("len(Pall) ",len(Pall))
if tree is None:
p_nodes = np.array(Pall)
p_nodes = p_nodes[nodes]
# look for minimum distance, define dist function
mytree = cKDTree(p_nodes)
else:
mytree = tree
dist, index = mytree.query(np.array(p0))
node_closest = [nodes[j] for j in index]
# check constraints
num_p = len(p0)
if constraint < 0:
return node_closest, dist
elif np.isscalar(constraint):
constraint = constraint * np.ones(num_p)
elif len(p0) != len(constraint):
print("Error in constraint definition")
return [], []
# check constraint for each node
flags = [((dist[j] <= constraint[j]) | (constraint[j] < 0)) for j in range(num_p)]
for j in range(num_p):
if not flags[j]:
node_closest[j] = -1
return node_closest, dist
# check relative position of two points
def SamePoint(p1, p2, delta):
dp = np.array(p1) - np.array(p2)
d = np.sqrt(dp[0] ** 2 + dp[1] ** 2)
ret = False
if d < delta:
ret = True
return ret
#####################
#
# Make simple curves
#
#####################
#
#
#
# make a circle or part of it
#
def CircleSegments(
middle, radius, num_points=10, a_min=0.0, a_max=2.0 * np.pi, edge_length=-1
):
"""
CircleSegments(middle,radius,num_points=10,a_min=0.,a_max=2.*np.pi,edge_length=-1)
"""
# check for closed loop
number_points = num_points
if edge_length > 0:
number_points = int(np.floor(abs(radius / edge_length * (a_max - a_min)))) + 1
number_points = max(number_points, 5)
delta = (a_max - a_min) / number_points
closed = False
if abs(abs(a_max - a_min) - 2 * np.pi) < 0.1 * abs(delta):
closed = True
t = np.linspace(a_min, a_max, number_points, not closed)
# define points
points = [
(middle[0] + radius * np.cos(angle), middle[1] + radius * np.sin(angle))
for angle in t
]
# define vertices
vertices = [(j, j + 1) for j in range(0, len(points) - 1, 1)]
if closed:
vertices += [(len(points) - 1, 0)]
return points, vertices
# Straight line
def LineSegments(P1, P2, num_points=10, edge_length=-1):
"""
p,v = LineSegments(P1,P2,num_points=10,edge_length=-1)
"""
number_points = num_points
if edge_length > 0:
p1 = np.array(P1)
p2 = np.array(P2)
number_points = int(np.floor(np.sqrt(np.sum((p2 - p1) ** 2)) / edge_length)) + 1
if number_points <= 1:
number_points = 5
t = np.linspace(0, 1, number_points)
points = [
(P1[0] + param * (P2[0] - P1[0]), P1[1] + param * (P2[1] - P1[1]))
for param in t
]
vertices = [(j, j + 1) for j in range(0, len(points) - 1, 1)]
return points, vertices
# Rectangle
def RectangleSegments(
P1, P2, num_points=60, edge_length=-1, edge_lengthx=-1, edge_lengthy=-1
):
"""
p,v = RectangleSegments(P1,P2,num_points=60,
edge_length=-1,edge_lengthx=-1,edge_lengthy=-1)
"""
P11 = [P2[0], P1[1]]
P22 = [P1[0], P2[1]]
npoints = int(np.floor(num_points / 4))
lengx = edge_length
lengy = edge_length
if edge_lengthx > 0:
lengx = edge_lengthx
if edge_lengthy > 0:
lengy = edge_lengthy
p_1, _v_1 = LineSegments(P1, P11, npoints, lengx)
p_2, _v_2 = LineSegments(P11, P2, npoints, lengy)
p_3, _v_3 = LineSegments(P2, P22, npoints, lengx)
p_4, _v_4 = LineSegments(P22, P1, npoints, lengy)
p, v = AddSegments(p_1, p_2)
p, v = AddSegments(p, p_3)
p, v = AddSegments(p, p_4)
return p, v
def ORecSegments(
P1,
P2,
rho,
num_points=60,
num_pc=7,
edge_length=-1,
edge_lengthx=-1,
edge_lengthy=-1,
):
"""
p,v = ORecSegments(P1,P2,rho,num_points=60,num_pc=7,
edge_length=-1,edge_lengthx=-1,edge_lengthy=-1)
"""
x1L = P1[0]
x2L = P2[0] - rho
x1R = P1[0] + rho
x2R = P2[0]
y1L = P1[1] + rho
y3L = P2[1]
y1R = P1[1]
y3R = P2[1] - rho
Dxx = P2[0] - P1[0]
Dyy = P2[1] - P1[1]
if rho > Dxx / 3 or rho > Dyy / 3:
print("Error, rho too large")
lengx = edge_length
lengy = edge_length
if edge_lengthx > 0:
lengx = edge_lengthx
if edge_lengthy > 0:
lengy = edge_lengthy
npoints = int(np.floor(num_points / 4))
p_1, _v_1 = LineSegments([x1R, y1R], [x2L, y1R], npoints, lengx)
p_2, _v_2 = LineSegments([x2R, y1L], [x2R, y3R], npoints, lengy)
p_3, _v_3 = LineSegments([x2L, y3L], [x1R, y3L], npoints, lengx)
p_4, _v_4 = LineSegments([x1L, y3R], [x1L, y1L], npoints, lengy)
p_5, _v_5 = CircleSegments([x2L, y1L], rho, num_pc, -np.pi / 2.0, 0, edge_length)
p_6, _v_6 = CircleSegments([x2L, y3R], rho, num_pc, 0, np.pi / 2.0, edge_length)
p_7, _v_7 = CircleSegments([x1R, y3R], rho, num_pc, np.pi / 2.0, np.pi, edge_length)
p_8, _v_8 = CircleSegments(
[x1R, y1L], rho, num_pc, np.pi, 3 * np.pi / 2, edge_length
)
p, v = AddSegments(p_1, p_5)
p, v = AddSegments(p, p_2)
p, v = AddSegments(p, p_6)
p, v = AddSegments(p, p_3)
p, v = AddSegments(p, p_7)
p, v = AddSegments(p, p_4)
p, v = AddSegments(p, p_8)
return p, v
# List of points
def PointSegments(p, edge_length=-1):
"""
p,v = PointSegments(p,edge_length=-1)
"""
if edge_length != -1:
pt = np.array(p)
p1 = [pt[0]]
for i in range(1, len(pt)):
dp = pt[i] - pt[i - 1]
N = (int)(np.sqrt(np.sum(dp**2)) / edge_length) + 1
N = max(N, 2)
tvals = np.linspace(0, 1, N)
p1 += [list(pt[i - 1] + tt * dp) for tt in tvals[1:]]
p1 = np.array(p1)
else:
p1 = np.array(p)
delta = np.min(np.sqrt(np.sum((p1[1:] - p1[:-1]) ** 2, axis=1))) / 10.0
Pall = [(x[0], x[1]) for x in p1]
closed = False
if SamePoint(p1[0], p1[-1], delta):
Pall = Pall[:-1]
closed = True
vertices = [(j, j + 1) for j in range(0, len(Pall) - 1, 1)]
if closed:
vertices += [(len(Pall) - 1, 0)]
return Pall, vertices
def AddMultipleSegments(*args, **kwargs):
"""
p,v = AddMultipleSegments(*args,**kwargs)
"""
nn = len(args)
p, v = AddSegments(args[0], args[1])
for k in range(2, nn - 1):
p, v = AddSegments(p, args[k])
if kwargs:
if kwargs["closed"]:
p, v = AddSegments(p, args[nn - 1], closed=True)
else:
p, v = AddSegments(p, args[nn - 1])
else:
p, v = AddSegments(p, args[nn - 1])
return p, v
def AddMultipleCurves(*allC):
"""
p,v,ind = AddMultipleCurves(*allC)
"""
N = len(allC)
indi = N * [0]
if N % 2 != 0:
print("Number of Arguments not even")
return False
else:
p, v = AddCurves(allC[0], allC[1], allC[2], allC[3])
indi[0] = 0
indi[1] = len(allC[2])
j = 2
for i in range(4, N, 2):
p, v = AddCurves(p, v, allC[i], allC[i + 1])
indi[j] = indi[j - 1] + len(allC[i])
j += 1 # noqa: SIM113
return p, v, indi
# Connect two different polygons
def AddSegments(P1, P2, closed=False):
"""
p,v = AddSegments(P1,P2,closed=False)
"""
p1 = np.array(P1)
p2 = np.array(P2)
# find smallest distance within points p1 and p2
min1 = np.min(np.sqrt(np.sum((p1[1:] - p1[:-1]) ** 2, axis=1)))
min2 = np.min(np.sqrt(np.sum((p2[1:] - p2[:-1]) ** 2, axis=1)))
delta = np.min([min1, min2]) / 10.0
# Add second curve to first curve
del_first = SamePoint(p1[-1], p2[0], delta)
Pall = P1[:]
if del_first:
Pall += P2[1:]
else:
Pall += P2
# check if Pall is closed
del_last = SamePoint(Pall[-1], p1[0], delta)
if del_last:
Pall = Pall[:-1]
vertices = [(j, j + 1) for j in range(0, len(Pall) - 1, 1)]
if del_last or closed:
vertices += [(len(Pall) - 1, 0)]
return Pall, vertices
# Append Curves
def AddCurves(p1, v1, p2, v2, connect=False, connect_points=None, eps=1e-12):
"""
p,v = AddCurves(p1,v1,p2,v2,connect=False,connect_points=[],eps=1e-12)
"""
if connect_points is None:
connect_points = []
# make one list
p = p1 + p2
v2n = [(v2[j][0] + len(p1), v2[j][1] + len(p1)) for j in range(len(v2))]
v = v1 + v2n
# second segment array may contain
# IDENTICAL points,
# given in connect_points or indicated by the option connect
con_pt = []
if connect:
con_pt = list(p2)
elif len(connect_points) != 0:
con_pt = list(connect_points)
if len(con_pt) != 0:
nodes1 = np.arange(0, len(p1))
nodes2 = np.arange(0, len(p2))
# node numbers of connect points in p1
fn1, dn1 = FindClosestNode(nodes1, p1, con_pt)
# node numbers of connect points in p2
if not connect:
fn2, _dn2 = FindClosestNode(nodes2, p2, con_pt)
else:
fn2 = np.arange(0, len(p2), dtype=int)
_dn = 0.0 * fn2
# node numbers in p
# sort node numbers for delete process
sort_indices = np.argsort(fn2)
dn1 = np.array(dn1)
nodes2 += len(p1)
replace_ind = []
for ii in sort_indices[-1::-1]:
# connect points are identical with points in p1
if dn1[ii] < eps:
print("replace point ", fn2[ii], " --> ", fn1[ii])
replace_ind += [ii]
del p[len(p1) + fn2[ii]]
nodes2[fn2[ii] + 1 :] -= 1
for ii in replace_ind:
nodes2[fn2[ii]] = fn1[ii]
v2n = [(int(nodes2[v2[j][0]]), int(nodes2[v2[j][1]])) for j in range(len(v2))]
v = v1 + v2n
return p, v
# Generate mesh
def DoTriMesh(
points,
vertices,
edge_length=-1,
holes=None,
tri_refine=None,
show=True,
order=None,
writeTo=None,
):
"""
DoTriMesh(points,vertices,edge_length=-1,holes=[],tri_refine=None,show=True,order=None,writeTo=None)
---------
output
mesh_points , mesh_elements , bou_Edges , list_boundary_edges ,
mesh_boundary_elements , inner_curve_segments , list_inner_curve_segments
"""
if holes is None:
holes = []
info = triangle.MeshInfo()
info.set_points(points)
if len(holes) > 0:
info.set_holes(holes)
info.set_facets(vertices)
if tri_refine is not None:
mesh = triangle.build(info, refinement_func=tri_refine, mesh_order=order)
elif edge_length <= 0:
mesh = triangle.build(info, mesh_order=order)
else:
mesh = triangle.build(
info,
max_volume=0.5 * edge_length**2,
mesh_order=order,
generate_faces=True,
)
mesh_points = np.array(mesh.points, dtype=np.double)
mesh_elements = np.array(mesh.elements, dtype=np.int64)
mesh_facets = np.array(mesh.facets, dtype=np.int64)
mesh_neighbors = np.array(mesh.neighbors, dtype=np.int64)
# use generate_face=True in triangle.build for all edges
# mesh_edges = np.array(mesh.faces, dtype=np.int64)
# generate boundary elements
mesh_boundary_elements = []
mesh_boundary_edges = []
for i, x in enumerate(mesh_neighbors):
# find boundary elements
if x[0] == -1 or x[1] == -1 or x[2] == -1:
# print("boundary element: ",x[0],x[1],x[2]," element=",mesh_elements[i])
mesh_boundary_elements += [i]
# find boundary edges
if x[0] == -1:
mesh_boundary_edges += [[mesh_elements[i][1], mesh_elements[i][2]]]
if x[1] == -1:
mesh_boundary_edges += [[mesh_elements[i][0], mesh_elements[i][2]]]
if x[2] == -1:
mesh_boundary_edges += [[mesh_elements[i][0], mesh_elements[i][1]]]
# make edge --> element map
edge_element_map = {}
for i, tt in enumerate(mesh_elements):
e = [0, 0, 0]
e[0] = tuple(np.sort([tt[0], tt[1]]))
e[1] = tuple(np.sort([tt[0], tt[2]]))
e[2] = tuple(np.sort([tt[1], tt[2]]))
for j in [0, 1, 2]:
try:
edge_element_map[e[j]] += [i]
except KeyError:
edge_element_map[e[j]] = [i]
# print("--> map",edge_element_map)
# print("--> Randelemente: ",mesh_boundary_edges)
# print("--> Kurven ",mesh_facets)
# make boundary edges
edges = [tuple(x) for x in mesh_boundary_edges]
bou_Edges, list_bE = SortSegments(edges)
bou_Edges = CheckSegmentSense(mesh_elements, bou_Edges, list_bE)
list_bE += [len(bou_Edges)]
# make edges of inner curves
edges = [
tuple(x) for x in mesh_facets if len(edge_element_map[tuple(np.sort(x))]) == 2
]
Curves, list_Cu = SortSegments(edges)
Curves = CheckSegmentSense(mesh_elements, Curves, list_Cu)
list_Cu += [len(Curves)]
if show:
plt.gca().set_aspect(1)
plt.triplot(mesh_points[:, 0], mesh_points[:, 1], mesh_elements[:, 0:3])
plt.show()
# second order boundary nodes
if order == 2:
# resort indices 4,5,6
for i in range(len(mesh_elements)):
secp = list(mesh_elements[i, 3:]) * 2
mesh_elements[i, 3:] = secp[2:5]
MiddleIndices = []
for i in mesh_boundary_elements:
MiddleIndices += list(mesh_elements[i, 3:])
ps = [0.5 * (mesh_points[x[0], :] + mesh_points[x[1], :]) for x in bou_Edges]
third_node = FindClosestNode(
MiddleIndices, mesh_points, ps, constraint=-1, tree=None
)
bou_Edges = [[x[0], x[1], third_node[0][i]] for i, x in enumerate(bou_Edges)]
err = CheckElementList(mesh_points, mesh_elements)
if err > 0:
print(
"ERROR: Number of wrong sorted mesh_elements ",
err,
"# mesh_elements ",
len(mesh_elements),
)
return False
if writeTo is not None:
np.savez(
writeTo,
mesh_points,
mesh_elements,
bou_Edges,
list_bE,
mesh_boundary_elements,
Curves,
list_Cu,
)
return (
mesh_points,
mesh_elements,
bou_Edges,
list_bE,
mesh_boundary_elements,
Curves,
list_Cu,
)
# return mesh_points,mesh_elements;
def LoadTriMesh(filename, show=True):
"""
LoadTriMesh(filename,show=True)
------------------
output
mesh_points , mesh_elements , bou_Edges , list_boundary_edges ,
mesh_boundary_elements , inner_curve_segments , list_inner_curve_segments
"""
erg = np.load(filename)
poi = erg["arr_0"]
tri = erg["arr_1"]
BouE = erg["arr_2"].tolist()
li_BE = erg["arr_3"].tolist()
bou_elem = erg["arr_4"].tolist()
CuE = erg["arr_5"].tolist()
li_CE = erg["arr_6"].tolist()
erg.close()
if show:
plt.triplot(poi[:, 0], poi[:, 1], tri[:, 0:3])
plt.show()
return poi, tri, BouE, li_BE, bou_elem, CuE, li_CE
#
# Write xml file useful for fenics
#
def WriteXmlMesh(filename, p, t, do=None):
"""
WriteXmlMesh(filename,p,t,do=None)
"""
from xml.etree import ElementTree
# pretty print method
def indent(elem, level=0):
i = "\n" + level * " "
j = "\n" + (level - 1) * " "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for subelem in elem:
indent(subelem, level + 1)
if not elem.tail or not elem.tail.strip():
elem.tail = j
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = j
return elem
# root element
dolf = ElementTree.Element(
"dolfin",
{
"xmlns:dolfin": (
"https://fenicsproject.org converted from meshpy and meshtools"
)
},
)
# full mesh
mesh = ElementTree.SubElement(dolf, "mesh", {"celltype": "triangle", "dim": "2"})
# coordinates
vert = ElementTree.SubElement(mesh, "vertices", {"size": str(len(p))})
for i, pp in enumerate(p):
_line = ElementTree.SubElement(
vert, "vertex", {"index": str(i), "x": str(pp[0]), "y": str(pp[1])}
)
# elements
cells = ElementTree.SubElement(mesh, "cells", {"size": str(len(t))})
for i, tt in enumerate(t):
_line = ElementTree.SubElement(
cells,
"triangle",
{"index": str(i), "v0": str(tt[0]), "v1": str(tt[1]), "v2": str(tt[2])},
)
# data
_line = ElementTree.SubElement(mesh, "data")
# domains
dom = ElementTree.SubElement(mesh, "domains")
if do is None:
do = len(t) * [0]
msh_vc = ElementTree.SubElement(
dom,
"mesh_value_collection",
{"name": "m", "type": "uint", "dim": "2", "size": "686"},
)
for i, dd in enumerate(do):
_line = ElementTree.SubElement(
msh_vc,
"value",
{"cell_index": str(i), "local_entity": "0", "value": str(dd)},
)
# write to file
tree = ElementTree.ElementTree(indent(dolf))
tree.write(filename, xml_declaration=True, encoding="utf-8")
def CheckElementList(p, t):
if len(t[0]) == 3:
return 0
else:
j = 0
for i in range(len(t)):
diff1 = np.sum(((p[t[i, 0]] + p[t[i, 1]]) / 2.0 - p[t[i, 3]]) ** 2)
diff2 = np.sum(((p[t[i, 1]] + p[t[i, 2]]) / 2.0 - p[t[i, 4]]) ** 2)
diff3 = np.sum(((p[t[i, 2]] + p[t[i, 0]]) / 2.0 - p[t[i, 5]]) ** 2)
if diff1 > 1e-10 or diff2 > 1e-10 or diff3 > 1e-10:
# print("Error in element list (wrong order), ",
# i, t[i], diff1, diff2, diff3)
j += 1
return j
def MakeSecondOrderMesh(p, t, bou):
edges, _b_ed, _b_el = FindEdges(t)
new_p = []
all_ed = []
for X in edges:
new_p += [0.5 * (p[X[0], :] + p[X[1], :])]
all_ed += [set(X)]
print("all edges=", all_ed)
new_t = []
for X in t:
print(X)
e1 = {X[0], X[1]}
e2 = {X[1], X[2]}
e3 = {X[2], X[0]}
i4 = all_ed.index(e1) + len(p)
i5 = all_ed.index(e2) + len(p)
i6 = all_ed.index(e3) + len(p)
new_t += [[X[0], X[1], X[2], i4, i5, i6]]
new_bou = []
for X in bou:
e1 = {X[0], X[1]}
i3 = all_ed.index(e1) + len(p)
new_bou += [[X[0], X[1], i3]]
p_new = np.array(list(p) + new_p)
return p_new, np.array(new_t), np.array(new_bou)
# ############## BEM #################
# points are the vertices of the segments (or elements)
# nodes are the middle position in the segments for zero order
# flags[i]=0 potential of segment i is known
# 1 normal derivative of segment i is known
#
# return middle-points in segment
# half Diff-Vector
# known PHI-segments
# known DERIVATIVE-segments
def MakeBEMBoundary(p, v, func=False, curves=None):
if curves is None:
curves = []
# zero order base function, define nodes on middle position of element
Ns = len(v)
p = np.array(p)
v = np.array(v)
# compute middle points and elemental vectors
mid_points = 0.5 * (p[v[:, 1], :] + p[v[:, 0], :])
diff_points = 0.5 * (p[v[:, 1], :] - p[v[:, 0], :])
mid_points = np.array(mid_points)
# set all nodes as dirichlet nodes
flags = Ns * [0]
# type of boundary condition
# if a function is provided dirichlet and neumann nodes are selected
if func:
flags = func(mid_points)
else:
if curves == []:
print("Provide properties of Nodes according to:")
print("0: Value known")
print("1: Derivative known")
return
else:
flags = curves
# Vec1 dirichlet nodes, Vc2 Neumann nodes
Vec1 = []
Vec2 = []
for i in range(Ns):
# the potential is known for these nodes
if flags[i] == 0:
Vec1 += [i]
# the derivative is known
else:
Vec2 += [i]
return np.array(mid_points), np.array(diff_points), Vec1, Vec2
def ChangeCurveDirection(v):
N = len(v)
out = []
for i in range(N):
out += [(v[N - i - 1][1], v[N - i - 1][0])]
return out
#
# AllBound [[p,v],[p,v],[p,v],[],...]
# Dom [[3,4,2],alpha]
#
def DoBemBoundary(AllBound, show=True, show_numbers=False):
D_seg = [0]
N_seg = [0]
I_seg = [0]
NofC = len(AllBound)
Curves = NofC * [0]
# count number of segemens for each type
for i in range(NofC):
seg = len(AllBound[i][1])
if AllBound[i][2] == 0:
a = D_seg[-1]
D_seg += [a + seg]
elif AllBound[i][2] == 1:
a = N_seg[-1]
N_seg += [a + seg]
else:
a = I_seg[-1]
I_seg += [a + seg]
Curves[i] = {"first": a, "last": a + seg - 1, "type": AllBound[i][2]}
D_nodes = D_seg[-1]
N_nodes = N_seg[-1]
I_nodes = I_seg[-1]
N_seg = [x + D_nodes for x in N_seg]
I_seg = [x + D_nodes + N_nodes for x in I_seg]
NofNodes = D_nodes + N_nodes + I_nodes
VecB = np.zeros((NofNodes, 2))
VecXm = np.zeros((NofNodes, 2))
for i in range(NofC):
# run through all boundaries
p = np.array(AllBound[i][0])
v = AllBound[i][1]
NodeType = AllBound[i][2]
# correct positions in Curves array
if NodeType == 1:
Curves[i]["first"] += D_nodes
Curves[i]["last"] += D_nodes
elif NodeType < 0:
Curves[i]["first"] += D_nodes + N_nodes
Curves[i]["last"] += D_nodes + N_nodes
# Compute middle point and direction vector
for i, s in enumerate(v):
VecB[Curves[i]["first"] + i] = np.array(
[0.5 * (p[s[1], :] - p[s[0], :])]
)
VecXm[Curves[i]["first"] + i] = np.array(
[0.5 * (p[s[1], :] + p[s[0], :])]
)
if show:
PlotBoundary(p, v, "Segments")
if show:
plt.title("Dirichlet (blue), Neumann (green), Inner Curves (red)")
for Z in Curves:
x = VecXm[Z["first"] : Z["last"] + 1][:, 0]
y = VecXm[Z["first"] : Z["last"] + 1][:, 1]
if Z["type"] == 0:
plt.plot(x, y, "ob", markersize=8)
elif Z["type"] == 1:
plt.plot(x, y, "sg", markersize=8)
else:
plt.plot(x, y, "vr", markersize=6)
if show_numbers:
for i in range(len(x)):
buf = Z["first"] + i
plt.text(x[i], y[i], f" {buf}", color="k", fontsize=13)
plt.show()
return VecXm, VecB, Curves, D_nodes, N_nodes, I_nodes
#
# Make a curve list with all properties
#
def DoBemDomain(AllDom, CC):
Curves = len(CC) * [0]
for i in range(len(CC)):
Curves[i] = {
"first": CC[i]["first"],
"last": CC[i]["last"],
"type": CC[i]["type"],
}
for DomNumb, GG in enumerate(AllDom):
for thisC in GG[0]:
i = abs(thisC)
# Add domain number and their alphas to curves list
if "dom" in Curves[i]:
if DomNumb > Curves[i]["dom"]:
Curves[i]["dom"] = (Curves[i]["dom"], DomNumb)
Curves[i]["alpha"] = (Curves[i]["alpha"], GG[1])
else:
Curves[i]["dom"] = (DomNumb, Curves[i]["dom"])
Curves[i]["alpha"] = (GG[1], Curves[i]["alpha"])
else:
Curves[i]["dom"] = DomNumb
Curves[i]["alpha"] = GG[1]
return Curves
# G=[[CurveIndex1,CurveIndex2,..],alpha]
# negative Curveindex changes direction of curve --> newB on return
# Curves is changed on return
#
def MakeDomain(DomNumb, G, CC, VecB):
D_nodes = []
N_nodes = []
I_nodes = []
newB = np.copy(VecB)
for thisC in G[0]:
i = abs(thisC)
start = CC[i]["first"]
stop = CC[i]["last"] + 1
nodes = range(start, stop)
# change curve direction
if thisC < 0:
newB[nodes] *= -1.0
if CC[i]["type"] == 0:
D_nodes += nodes
elif CC[i]["type"] == 1:
N_nodes += nodes
else:
I_nodes += nodes
all_nodes = D_nodes + N_nodes + I_nodes
lND = len(D_nodes)
lNN = len(N_nodes)
lNI = len(I_nodes)
return all_nodes, newB, lND, lNN, lNI
================================================
FILE: examples/ka-6d.ply
================================================
ply
format ascii 1.0
comment VCGLIB generated
element vertex 911
property float x
property float y
property float z
element face 1818
property list uchar int vertex_indices
end_header
-2.53779 -0.874807 0.361701
3.01063 -7.86294 0.395231
2.67315 8.00454 0.335959
2.29768 -7.86514 0.335959
2.46055 7.94854 0.335959
2.29768 7.86514 0.335959
2.17099 7.72964 0.335959
3.76896 -8.07564 0.335959
3.01063 7.86294 0.395231
3.76896 8.07564 0.335959
-0.56141 -1.93006 0.583304
-0.56141 1.93006 0.583304
-3.08403 0.942577 -0.26911
-3.08403 -0.867417 -0.236018
-3.08403 0.726857 -0.842377
-3.08403 0.818137 -0.239456
-3.08403 -0.726857 -0.842377
-3.08403 0.539307 -0.877237
-3.08403 -0.488497 -0.82562
-3.08403 -0.539307 -0.877237
-3.91989 0.426937 -0.785548
-3.93935 0.381326 -0.858948
-1.50178 -1.08824 -0.0181971
-1.23019 -1.12028 -0.168275
-1.2265 -1.09368 -0.0785382
-1.88591 1.03814 0.0786738
-2.44579 -1.04084 0.101075
9.28188 0 0.723383
9.25129 -0.133871 0.825321
9.25129 0.133871 0.825321
10.5133 0 0.97667
9.91637 0 0.850027
8.5531 0 3.48991
9.78764 0 3.5763
10.5194 0 1.16979
9.2433 -0.15548 0.91767
8.93949 0 3.55645
9.91273 -0.0934859 0.914697
9.91273 0.0934859 0.914697
8.87979 -3.05792 0.881246
8.75593 2.8863 0.923328
8.87979 3.05792 0.881246
9.79687 3.12625 0.881246
9.31763 -3.11498 0.881246
9.21955 -2.87834 0.918589
8.75593 -2.8863 0.923328
8.50119 2.8818 0.881246
8.66311 2.99346 0.881246
9.31763 3.11498 0.881246
8.66311 -2.99346 0.881246
9.51341 -2.88327 0.861804
9.51341 2.88327 0.861804
8.52379 -0.253479 0.952525
8.70712 0.225046 0.948112
8.92558 -0.197528 0.916288
8.92558 0.197528 0.916288
9.02651 0.186269 0.901245
8.53529 0.141349 1.18051
8.97217 0.14365 1.12042
7.30808 0.394589 0.929712
5.97209 0 1.33584
8.14849 -0.142818 1.19945
8.14849 0.142818 1.19945
9.15904 0.163526 0.881246
9.02651 -0.186269 0.901245
8.30491 0 3.34438
8.65189 0.141963 1.16447
8.53529 -0.248313 0.800641
8.68454 -0.226757 0.805984
9.21955 2.87834 0.85561
8.09098 0.305153 0.784654
7.53821 0.375496 0.80012
7.37388 -0.155224 1.19576
8.07831 0 3.09795
7.37388 0.155224 1.19576
9.51341 -2.88069 0.904149
9.51341 2.88069 0.904149
9.15904 -0.163526 0.881246
9.2433 0.15548 0.91767
-4.49171 -0.253801 0.647911
-6.11797 -0.111917 -0.391649
-6.11797 0.111917 -0.391649
-6.11797 0.0906809 -0.450887
-6.11797 -0.0494573 -0.511803
-6.11797 -0.0906809 -0.450887
-6.11797 0.0494573 -0.511803
-6.15074 0 -0.391649
-6.11797 -0.0904068 -0.291292
-6.11797 0.0904068 -0.291292
-6.11797 0.115235 -0.336436
-6.11797 -0.0452043 -0.248868
-4.03504 0.817169 0.14235
-2.42461 -0.906714 0.249255
-2.35673 0.868388 0.193357
-3.0811 -0.860457 0.0367379
-2.27809 -0.898125 0.147157
-2.42461 0.906714 0.249255
-4.03504 -0.817169 0.14235
-4.03512 0 -1.10113
-3.32169 -0.851618 0.348456
-3.32169 0.851618 0.348456
-2.6396 0.888605 0.316609
2.9631 -1.20617 -0.277182
2.6455 -1.30984 -0.16392
2.96423 -1.30258 -0.217357
2.9631 1.20617 -0.277182
2.96379 -1.34661 0.0301485
2.96379 1.34661 0.0301485
-2.27809 0.898125 0.147157
-2.19381 0.96254 0.158235
-2.53779 0.874807 0.361701
-2.49604 -0.895698 0.31593
-2.49604 0.895698 0.31593
-2.43952 0.916785 0.313112
1.95934 -0.874617 0.301705
-2.19381 -0.988717 0.297674
-2.19239 0.909893 0.109426
-1.88591 -1.03814 0.0786738
-1.88591 -1.05611 0.108779
-1.88591 1.05611 0.108779
0.963972 -0.957314 -0.274434
1.87193 0.953306 -0.272165
2.96382 -1.31049 0.0302124
2.96388 1.31313 -0.0368536
2.96382 1.31049 0.0302124
2.96374 1.28788 0.097497
2.96433 -1.29998 -0.100741
2.96433 1.29998 -0.100741
2.96404 1.24583 0.157554
2.96416 -1.24882 -0.191441
2.96324 -1.18716 -0.238559
2.96404 -1.24583 0.157554
2.96402 1.19128 0.203991
2.96324 1.18716 -0.238559
2.96402 -1.19128 0.203991
2.96483 -1.12241 0.226673
2.96323 -1.06586 -0.270446
2.96455 0.98315 0.2112
2.96455 -0.98315 0.2112
2.96442 0.90263 0.178142
2.96417 -0.857458 -0.174201
2.96421 -0.849759 0.125371
2.96394 0.817621 0.0490788
2.96364 -0.804482 -0.0351429
2.96364 0.804482 -0.0351429
2.96331 0.822326 -0.126532
-3.91414 -0.369186 1.16736
-3.91414 0 1.20677
-4.49712 0 0.685333
-3.91414 -0.591165 0.963749
-3.91414 0.591165 0.963749
-4.49171 0.253801 0.647911
-3.91414 -0.710333 0.668169
-3.91414 0.710333 0.668169
-3.57222 0.340054 1.30461
-3.91414 0.369186 1.16736
-2.68359 0 1.53871
-2.68359 0.554534 1.45808
-3.57222 -0.340054 1.30461
-3.57222 0 1.36881
-3.57222 -0.692627 1.00656
-2.68359 -0.80689 1.11743
-3.57222 -0.799024 0.724561
-3.57222 0.799024 0.724561
-3.57222 0.692627 1.00656
-1.98902 -0.722589 0.84449
-1.96102 -0.63848 1.13515
-1.96102 0.63848 1.13515
-1.96102 -0.466708 1.33675
-2.68359 0.916741 0.835233
-2.68359 0.80689 1.11743
-2.68359 -0.554534 1.45808
-1.96102 -0.329322 1.46632
-1.96102 0.329322 1.46632
-1.47446 0 1.51316
-1.96102 0 1.5499
-1.96102 0.466708 1.33675
-1.47446 0.565639 1.19455
-1.47446 -0.565639 1.19455
0.100958 -0.381001 1.16778
0.100958 0.381001 1.16778
0.0879 -0.250115 1.29799
0.0879 -0.360093 1.26479
0.0879 0.360093 1.26479
-1.47446 -0.447615 1.36681
-1.47446 0.447615 1.36681
0.0879 0.250115 1.29799
0.0879 -0.10998 1.3312
0.0879 0 1.34291
-1.47446 -0.246112 1.47606
-1.47446 0.246112 1.47606
0.63233 0 1.27673
0.0879 0.10998 1.3312
-4.78307 0.300902 0.583626
-4.78307 0 0.607631
-1.50363 -0.615787 1.04211
-1.98902 0.722589 0.84449
-2.29344 -0.783536 0.738058
-2.68359 -0.916741 0.835233
-4.4938 -0.451681 0.543677
-2.29344 0.783536 0.738058
-2.51432 -0.81237 0.67786
-2.69988 -0.844339 0.612684
-2.91595 0.825475 0.56758
-3.12388 -0.823567 0.511745
-2.91595 -0.825475 0.56758
-3.12388 0.823567 0.511745
-2.69988 0.844339 0.612684
-3.604 -0.76899 0.455014
-3.604 0.76899 0.455014
-3.34282 -0.800442 0.493194
-3.34282 0.800442 0.493194
5.18718 0.629555 0.24098
3.01955 0.764104 0.18742
5.18718 0.658397 0.64044
2.66615 -0.816364 0.333075
3.01955 -0.81037 0.5101
2.66615 -0.839496 0.494415
1.81272 -0.768054 0.78098
3.01955 0.728122 0.86486
2.66615 0.839496 0.494415
-3.93935 -0.381326 -0.858948
-4.03504 0.269547 -1.01235
-3.67274 -0.821997 -0.0548832
-3.32169 -0.898629 0.193905
-3.67274 0.821997 -0.0548832
-3.48098 -0.834463 -0.0251865
-3.32169 0.898629 0.193905
-3.28576 -0.335787 -1.00295
-3.49041 0.424467 -1.10943
-3.28576 0.335787 -1.00295
-3.49041 0.337427 -0.999098
-3.0811 0.424987 -1.12463
-2.39848 0.191842 -1.00067
1.60594 -0.172251 -0.568153
1.60594 0 -0.56656
-1.50574 -0.335548 -0.948802
-1.23019 -0.419587 -1.05115
-2.44579 -0.425677 -1.07659
-1.51335 -0.198093 -0.923457
-1.95655 -0.337729 -0.974066
-1.51335 0.198093 -0.923457
1.36581 0.635897 -0.653076
3.01955 0.594801 -0.24516
3.01955 -0.594801 -0.24516
5.18718 -0.45832 0.0210003
5.18718 0.45832 0.0210003
3.01955 0.471764 -0.35506
-0.473587 -0.189479 -0.805022
-1.50574 0.335548 -0.948802
-0.446537 0.333487 -0.848283
-0.446537 -0.333487 -0.848283
0.121885 -0.410137 -0.875948
0.121885 0.333247 -0.781573
0.566176 -0.180865 -0.686588
-0.473587 0.189479 -0.805022
0.121885 -0.333247 -0.781573
1.60594 0.344503 -0.569746
-3.91989 -0.426937 -0.785548
-3.07266 0.34084 -1.00068
-3.07266 -0.34084 -1.00068
-3.49041 -0.337427 -0.999098
-3.67274 -0.337117 -0.973128
-3.32169 0 -1.068
-3.67274 0.337117 -0.973128
-2.19239 -0.909893 0.109426
-2.12693 0.932102 0.0886456
-2.43421 -0.90903 0.0719294
-2.12693 -0.932102 0.0886456
-1.00616 -1.09437 -0.119192
-1.23019 1.12028 -0.168275
-1.2265 1.09368 -0.0785382
-1.00616 1.09437 -0.119192
-1.00755 -1.17122 -0.107995
-0.813925 -1.09135 -0.150126
-0.813925 1.09135 -0.150126
1.35571 1.1255 -0.311557
0.823181 -1.03949 -0.268335
1.35571 -1.1255 -0.311557
0.823181 1.03949 -0.268335
0.29065 -1.11805 -0.264808
0.822889 -1.00331 -0.257668
0.29065 1.11805 -0.264808
0.822889 1.00331 -0.257668
3.01955 -0.717839 -0.13526
3.01955 0.717839 -0.13526
1.35924 -0.901274 -0.29769
1.36581 0.823317 -0.523635
1.35924 0.901274 -0.29769
2.33557 -0.793406 -0.202174
1.88678 -0.84299 -0.24608
1.36581 -0.823317 -0.523635
1.88678 0.84299 -0.24608
2.29902 0.945676 0.290251
2.31274 -0.84549 0.31739
2.31274 -0.868623 0.47873
2.31274 0.868623 0.47873
1.60594 0.926876 0.44736
1.95934 -0.897749 0.463045
1.60594 -0.926876 0.44736
1.95934 -0.889281 0.403982
2.31274 0.84549 0.31739
1.95934 0.889281 0.403982
1.95934 0.897749 0.463045
-1.03494 -2.0487 0.396483
-1.03494 2.0487 0.396483
-2.41752 -0.865714 0.3971
-2.41752 0.865714 0.3971
-2.51432 0.81237 0.67786
-0.542631 1.93637 0.205763
-0.50905 1.29113 0.162409
1.34258 -1.35746 0.216253
1.34258 1.35746 0.216253
2.433 -0.951711 0.299235
2.433 0.951711 0.299235
2.41459 -0.837096 0.321911
2.41459 0.837096 0.321911
2.6455 -0.93418 0.280565
2.64128 1.13568 0.267791
-1.51335 -0.81079 0.836
-1.51335 0.858696 0.629739
-1.51335 -0.858696 0.629739
2.29902 -0.945676 0.290251
2.64183 1.40401 0.254034
1.95934 0.874617 0.301705
0.885366 0.911126 0.489491
2.6455 0.81442 -0.19224
1.60594 0.172251 -0.568153
-0.473587 0 -0.793893
0.566177 0 -0.680226
0.566176 0.180865 -0.686588
-1.51335 0 -0.90756
3.01955 -0.471764 -0.35506
2.96423 1.30258 -0.217357
2.96416 1.24882 -0.191441
2.96338 1.31525 -0.199665
2.96338 -1.31525 -0.199665
2.96444 1.34581 -0.126228
2.96444 -1.34581 -0.126228
2.9635 -1.2679 -0.159422
2.9635 1.2679 -0.159422
2.96388 -1.31313 -0.0368536
2.96371 -1.31679 0.104152
2.96374 -1.28788 0.097497
2.96371 1.31679 0.104152
2.96403 1.20379 0.215485
2.96499 -1.13168 0.245838
2.96483 1.12241 0.226673
2.96403 -1.20379 0.215485
3.01955 -0.787237 0.34876
2.96442 -0.90263 0.178142
3.01955 0.787237 0.34876
3.01955 -0.740972 0.0260804
2.96421 0.849759 0.125371
3.01955 -0.729405 -0.0545896
2.96394 -0.817621 0.0490788
2.96331 -0.822326 -0.126532
2.96426 0.802753 -0.217263
2.96426 -0.802753 -0.217263
2.9631 -0.929855 -0.277182
2.96323 0.942954 -0.241584
2.96417 0.857458 -0.174201
2.9631 0.929855 -0.277182
2.96323 -0.942954 -0.241584
2.96323 1.06586 -0.270446
1.87193 -0.953306 -0.272165
-2.19381 0.977533 0.227955
-1.88591 1.07823 0.194296
-2.19381 -0.96254 0.158235
-1.45061 1.21842 0.248379
-1.88591 1.09472 0.279813
-1.45061 1.19572 0.144175
-1.88591 -1.07823 0.194296
-1.11537 1.26941 0.144778
-1.00755 1.29082 0.100248
-1.45061 -1.19572 0.144175
-1.45061 -1.1653 0.0399715
-1.50178 1.08824 -0.0181971
-1.45061 1.1653 0.0399715
-1.00755 -1.29082 0.100248
-1.11537 -1.26941 0.144778
-0.44008 -1.36911 0.0597318
-0.44008 1.36911 0.0597318
-1.00755 -1.25367 -0.0199814
-0.44008 -1.23168 -0.174109
-1.00755 1.25367 -0.0199814
-0.44008 1.32642 -0.0752764
-1.00755 1.17122 -0.107995
-0.44008 1.23168 -0.174109
0.29065 -1.43061 0.0216282
-0.50905 -1.29113 0.162409
0.29065 -1.27917 -0.226433
0.29065 -1.38357 -0.12159
-0.44008 -1.32642 -0.0752764
0.29065 1.27917 -0.226433
-0.44008 -1.08547 -0.210284
1.35571 -1.48057 0.132876
0.29065 1.43061 0.0216282
0.29065 1.38357 -0.12159
1.35571 1.29006 -0.271862
1.87193 -1.26946 -0.272165
1.87193 1.11138 -0.311457
1.35571 -0.960936 -0.271862
1.35571 0.960936 -0.271862
1.35571 -1.39669 -0.163413
1.35571 -1.29006 -0.271862
1.87193 -1.37189 -0.164818
1.35571 -1.44474 -0.0152684
1.87193 1.41804 -0.0181797
1.35571 1.44474 -0.0152684
1.35571 1.39669 -0.163413
1.87193 -1.41804 -0.0181797
1.87193 -1.45247 0.128459
1.35571 1.48057 0.132876
1.87193 1.45247 0.128459
2.29902 -1.09727 -0.311357
1.87193 -1.11138 -0.311457
2.29902 -1.34709 -0.161763
1.87193 1.37189 -0.164818
1.87193 1.26946 -0.272165
2.29902 1.39135 -0.0121696
2.29902 -1.39135 -0.0121696
1.82982 1.37492 0.230421
2.29902 -1.24886 -0.271274
2.29902 1.24886 -0.271274
2.29902 -0.945676 -0.271274
2.29902 0.945676 -0.271274
2.29902 1.09727 -0.311357
2.6455 -1.07605 -0.311257
2.29902 1.34709 -0.161763
2.6455 1.30984 -0.16392
2.33557 0.793406 -0.202174
2.6455 1.35126 -0.0165825
2.2552 -1.39016 0.242791
2.29902 -1.42437 0.137425
2.29902 1.42437 0.137425
2.6455 -1.21792 -0.271779
2.6455 1.21792 -0.271779
2.9631 -1.06801 -0.311157
2.9631 1.06801 -0.311157
2.6455 -0.93418 -0.271779
2.6455 0.93418 -0.271779
2.6455 1.07605 -0.311257
2.6455 -0.81442 -0.19224
2.96478 0.954101 0.280222
2.66615 0.816364 0.333075
2.96478 -0.954101 0.280222
2.6455 0.93418 0.280565
2.96499 1.13168 0.245838
2.6455 -1.38216 0.130755
2.96406 1.26814 0.166919
2.6455 1.38216 0.130755
2.96406 -1.26814 0.166919
-2.35673 -0.868388 0.193357
-2.19381 -0.977533 0.227955
-2.43952 -0.916785 0.313112
-2.19381 0.988717 0.297674
2.64128 -1.13568 0.267791
2.96387 1.35662 -0.0478767
2.96387 -1.35662 -0.0478767
2.6455 -1.35126 -0.0165825
-2.6396 -0.888605 0.316609
-4.03504 -0.269547 -1.01235
-4.48334 0.674709 0.409919
-4.03504 -0.553424 -0.586608
-4.03504 0.553424 -0.586608
-4.03504 0.775563 -0.233459
-4.48334 0.770916 0.122363
-4.03504 -0.775563 -0.233459
-6.07414 -0.149952 -0.248702
-6.07414 0 -0.164319
-6.11797 0 -0.234529
-6.11797 0.0452043 -0.248868
-6.07414 0.0749767 -0.185635
-6.11797 -0.115235 -0.336436
-6.11797 0 -0.532746
-6.07414 0.150406 -0.485948
-6.07414 -0.150406 -0.485948
-6.07414 -0.191133 -0.31581
-6.07414 -0.185629 -0.397887
-6.07414 0.149952 -0.248702
-6.01159 0 -0.0660269
-6.07414 -0.0749767 -0.185635
-6.01159 0.10406 -0.0954448
-6.01159 -0.208118 -0.182482
-6.01159 -0.11385 -0.634879
-6.07414 0 -0.607636
-6.07414 -0.0820309 -0.576503
-6.01159 0.11385 -0.634879
-6.07414 0.0820309 -0.576503
-6.01159 -0.257635 -0.388372
-6.07414 0.185629 -0.397887
-6.01159 -0.208749 -0.509904
-6.01159 0.208749 -0.509904
-6.07414 0.191133 -0.31581
-6.01159 0.257635 -0.388372
-6.01159 -0.10406 -0.0954448
-5.91159 0.134745 0.00298204
-5.91159 -0.269489 -0.111356
-5.91159 0 0.0416271
-5.91159 -0.343498 -0.233021
-6.01159 0.208118 -0.182482
-6.01159 0 -0.677845
-5.91159 0.270306 -0.541478
-5.91159 -0.270306 -0.541478
-6.01159 0.265273 -0.275098
-6.01159 -0.265273 -0.275098
-4.48342 0 -1.10112
-4.78307 0 -1.09561
-4.48334 -0.254292 -1.01303
-4.78307 0.23337 -0.969202
-5.62946 -0.39091 0.0613448
-5.91159 0.269489 -0.111356
-5.34733 -0.57329 -0.027614
-5.62946 -0.189149 -0.833373
-5.62946 0 -0.918349
-5.91159 0 -0.762096
-5.34733 -0.207109 -0.895494
-5.34733 0.207109 -0.895494
-5.34733 0.415262 -0.594025
-5.62946 -0.364501 -0.586208
-5.91159 -0.147423 -0.705653
-5.91159 0.147423 -0.705653
-5.62946 0.364501 -0.586208
-5.62946 0.189149 -0.833373
-5.34733 -0.542854 -0.300859
-5.91159 0.333608 -0.381826
-5.91159 -0.333608 -0.381826
-5.62946 -0.485901 -0.121823
-5.62946 -0.464973 -0.345849
-5.62946 0.464973 -0.345849
-5.91159 0.343498 -0.233021
-5.62946 0.485901 -0.121823
-5.34733 0.542854 -0.300859
-5.34733 0.57329 -0.027614
-5.62946 0.195456 0.207999
-5.91159 -0.134745 0.00298204
-5.62946 0.39091 0.0613448
-5.34733 0 0.397423
-5.62946 -0.195456 0.207999
-5.62946 0 0.249735
-4.78307 0.601801 0.36173
-4.78307 -0.23337 -0.969202
-4.48334 0.254292 -1.01303
-4.48334 0.522097 -0.590555
-4.48334 -0.522097 -0.590555
-4.48334 0.731661 -0.218984
-4.48334 -0.770916 0.122363
-4.78307 -0.719087 0.089259
-4.48334 -0.731661 -0.218984
-5.34733 -0.46925 0.195797
-5.34733 0.46925 0.195797
-5.34733 0 -0.99914
-5.34733 -0.415262 -0.594025
-4.78307 -0.496539 -0.601533
-4.78307 0.671464 -0.243989
-4.78307 0.496539 -0.601533
-4.78307 -0.671464 -0.243989
-4.78307 0.719087 0.089259
-4.78307 -0.300902 0.583626
-4.78307 -0.601801 0.36173
-5.34733 0.234626 0.357559
-5.34733 -0.234626 0.357559
3.01955 -0.728122 0.86486
3.01955 0.391445 1.18532
1.60594 -0.47821 1.13988
1.60594 0.47821 1.13988
3.01955 -0.391445 1.18532
1.60594 0 1.26191
8.03896 0.309997 0.965108
8.03896 -0.309997 0.965108
8.53529 0.247516 1.06766
6.91733 0 1.60978
6.95017 -0.442124 0.86337
8.50119 -2.8818 0.881246
8.68454 0.226757 0.805984
8.53529 0.248313 0.800641
7.27895 -0.40552 0.811791
8.75593 -2.8863 0.858114
8.75593 2.8863 0.858114
7.27895 0.40552 0.811791
9.79687 -3.12625 0.881246
6.7843 0 1.48736
7.01477 0.100896 1.19651
6.59662 0 1.44692
6.28373 -0.0373285 1.19785
6.12561 0 1.4002
9.21955 -2.87834 0.85561
9.21955 2.87834 0.918589
8.97217 -0.14365 1.12042
8.65189 -0.141963 1.16447
8.70712 -0.225046 0.948112
8.52379 0.253479 0.952525
5.18718 0.595628 0.97187
5.18718 0 1.2063
3.01955 0 1.23766
5.18718 0 -0.0911597
3.01955 0 -0.40468
3.01955 0.81037 0.5101
8.53529 0 0.517751
8.53529 -0.237978 0.704231
8.53529 0.237978 0.704231
-3.08403 -0.881047 -0.670306
-3.08403 0.881047 -0.670306
-3.08403 -0.960727 -0.450042
-3.85508 0.961347 -0.450154
-3.85508 0.881677 -0.670397
-3.85508 -0.818777 -0.239589
-3.08403 -0.818137 -0.239456
-3.85508 0.818777 -0.239589
-3.85508 -0.774657 -0.260111
-3.08403 -0.475487 -0.74701
-3.08403 -0.774017 -0.25998
-3.08403 0.774017 -0.25998
-3.85508 0.476157 -0.747092
-3.85508 -0.476157 -0.747092
-3.08403 0.475487 -0.74701
-3.08403 0.488497 -0.82562
-3.85508 -0.489167 -0.825694
-3.85508 0.539977 -0.877307
-3.85508 -0.539977 -0.877307
-3.85508 0.727507 -0.84245
-3.85508 -0.600587 -0.904297
-3.08403 -0.599927 -0.904231
-3.08403 0.599927 -0.904231
-3.85508 0.600587 -0.904297
-1.23019 -1.13183 -0.353969
-2.44579 -1.14589 -0.396956
-2.44579 1.00206 -0.898507
-3.09459 -1.0016 -0.862829
-2.44579 1.14589 -0.396956
-2.44579 -1.14961 -0.186595
-3.90881 0.724167 -0.898314
-3.85508 -0.881677 -0.670397
-3.92412 0.906487 -0.69485
-3.92412 -0.906487 -0.69485
-3.85508 -0.961347 -0.450154
-3.9491 -1.00852 -0.315093
-3.9491 1.00852 -0.315093
-3.85508 0.943197 -0.26924
-3.95849 0.890367 -0.18133
-3.85508 -0.868047 -0.236151
-3.85508 0.868047 -0.236151
-3.95849 -0.832097 -0.185396
-3.95849 0.832097 -0.185396
-3.85508 0.774657 -0.260111
-3.95741 -0.776827 -0.213361
-3.95741 0.776827 -0.213361
-3.85508 0.489167 -0.825694
-3.9128 -0.442317 -0.8785
-3.90116 -0.574077 -0.971452
-3.85508 -0.727507 -0.84245
-3.85889 -0.969457 -0.343513
-3.85889 0.969457 -0.343513
-3.94279 1.0007 -0.434401
-3.85518 -1.03706 -0.15055
-3.95511 -0.979237 -0.22046
-3.95511 0.979237 -0.22046
-3.95849 -0.890367 -0.18133
-3.85518 0.920717 -0.0322682
-3.85518 -0.920717 -0.0322682
-3.85518 0.971987 -0.0510992
-3.85518 -0.802107 -0.101832
-3.85518 0.802107 -0.101832
-3.90428 -0.502407 -0.939534
-3.9128 0.442317 -0.8785
-3.85518 -0.555667 -1.0408
-3.85518 0.555667 -1.0408
-3.90428 0.502407 -0.939534
-3.85518 0.707167 -1.00036
-3.90116 0.574077 -0.971452
-3.90881 -0.724167 -0.898314
-3.85518 1.06134 -0.425472
-3.85518 -1.06134 -0.425472
-3.94279 -1.0007 -0.434401
-3.85518 1.03706 -0.15055
-3.67274 1.1045 -0.2514
-3.85518 -0.971987 -0.0510992
-3.67274 -0.945637 0.0227438
-3.85518 0.417187 -1.0176
-3.85518 -0.417187 -1.0176
-3.67274 -0.420797 -1.0768
-3.67274 0.565137 -1.10269
-3.85518 -0.707167 -1.00036
-3.67274 -0.723047 -1.05757
-3.67274 1.11345 -0.416037
-3.85518 0.933697 -0.772988
-3.85518 -0.933697 -0.772988
-3.85518 -1.07314 -0.277937
-3.85518 1.07314 -0.277937
-3.49041 1.13555 -0.231067
-3.67274 1.0669 -0.109248
-3.67274 -1.0669 -0.109248
-3.49041 -1.09644 -0.0797953
-3.67274 0.999067 0.00172983
-3.67274 -0.999067 0.00172983
-3.49041 -0.970327 0.0606648
-3.49041 0.970327 0.0606648
-3.48098 0.834463 -0.0251865
-3.67274 0.945637 0.0227438
-3.67274 0.420797 -1.0768
-3.67274 -0.565137 -1.10269
-3.49041 -0.424467 -1.10943
-3.49041 -0.574587 -1.13697
-3.49041 0.574587 -1.13697
-3.67274 -0.959167 -0.814027
-3.49041 -0.738827 -1.08895
-3.49041 0.984397 -0.836782
-3.67274 0.723047 -1.05757
-3.67274 0.959167 -0.814027
-3.67274 -1.11345 -0.416037
-3.67274 -1.1045 -0.2514
-3.0811 -1.1671 -0.186595
-3.49041 1.09644 -0.0797953
-3.0811 1.12628 -0.0250462
-3.0811 -1.12628 -0.0250462
-3.49041 -1.0259 0.0383028
-3.0811 -1.05266 0.101075
-3.49041 1.0259 0.0383028
-3.0811 -0.424987 -1.12463
-3.0811 0.581657 -1.15405
-3.49041 0.738827 -1.08895
-3.0811 0.753057 -1.10276
-3.0811 -0.753057 -1.10276
-3.49041 -1.14486 -0.406266
-3.49041 -0.984397 -0.836782
-3.09459 1.0016 -0.862829
-3.0811 1.16649 -0.399181
-3.49041 1.14486 -0.406266
-3.49041 -1.13555 -0.231067
-3.0811 -1.16649 -0.399181
-3.0811 1.1671 -0.186595
-2.44579 1.14961 -0.186595
-2.44579 -1.11081 -0.0250461
-2.44579 1.11081 -0.0250461
-3.0811 1.05266 0.101075
-3.0811 -0.994657 0.124957
-2.44579 0.985707 0.124957
-2.44579 1.04084 0.101075
-2.44579 -0.985707 0.124957
-3.0811 0.994657 0.124957
-3.0811 0.860457 0.0367379
-2.43421 0.90903 0.0719294
-3.0811 -0.581657 -1.15405
-2.44579 0.756067 -1.10276
-2.44579 0.583457 -1.15405
-1.23019 0.567517 -1.07884
-1.23019 0.419587 -1.05115
-2.44579 -0.583457 -1.15405
-1.23019 -0.567517 -1.07884
-2.44579 -0.756067 -1.10276
-1.23019 0.729347 -1.03057
-2.44579 -1.00206 -0.898507
-1.23019 0.973707 -0.838325
0.121885 -0.542747 -0.899513
0.121885 0.410137 -0.875948
-1.23019 -0.729347 -1.03057
-1.23019 -0.973707 -0.838325
0.121885 -0.906867 -0.694829
0.121885 0.687817 -0.858436
0.121885 0.542747 -0.899513
0.121885 -0.687817 -0.858436
1.36581 -0.511777 -0.685575
1.36581 0.511777 -0.685575
1.36581 -0.635897 -0.653076
1.60594 -0.344503 -0.569746
-3.08403 -0.967337 -0.349142
-3.08403 0.960727 -0.450042
-3.08403 0.967337 -0.349142
-3.08403 -0.942577 -0.26911
-3.08403 0.867417 -0.236018
-3.85508 -0.943197 -0.26924
0.963972 0.957314 -0.274434
-1.88591 -1.09472 0.279813
-1.45061 -1.21842 0.248379
-4.4938 0.451681 0.543677
-4.48334 -0.674709 0.409919
-3.97321 -0.700374 0.451518
-3.97321 0.700374 0.451518
-4.47329 -0.582013 0.479882
-4.47329 0.582013 0.479882
8.53529 -0.247516 1.06766
8.53529 -0.141349 1.18051
-0.861793 0.521872 1.09238
1.06526 -4.97046 0.270861
3.09835 -8.05894 0.335959
1.06526 4.97046 0.270861
2.67315 -8.00454 0.335959
3.09835 8.05894 0.335959
2.46055 -7.94854 0.335959
2.17099 -7.72964 0.335959
0.81418 -4.833 0.270861
0.81418 4.833 0.270861
-0.542631 -1.93637 0.205763
0.399974 -1.64691 0.211008
1.81272 0.768054 0.78098
0.887511 0.869861 0.576801
0.887511 -0.869861 0.576801
0.885366 -0.911126 0.489491
1.82982 -1.37492 0.230421
0.399974 1.64691 0.211008
2.2552 1.39016 0.242791
2.64183 -1.40401 0.254034
0.26164 -1.31874 0.18482
0.26164 1.31874 0.18482
-0.0713282 1.79164 0.208385
-0.0713282 -1.79164 0.208385
0.253484 1.80328 0.217831
0.253484 -1.80328 0.217831
1.0496 -1.67019 0.229899
1.0496 1.67019 0.229899
1.61316 -5.006 0.270861
1.61316 5.006 0.270861
-1.23019 1.13183 -0.353969
5.18718 -0.595628 0.97187
6.06868 -0.518876 0.91762
7.30808 -0.394589 0.929712
6.24013 -0.48615 1.00199
6.06868 0.518876 0.91762
6.24013 0.48615 1.00199
7.29308 0.376672 1.03212
7.29308 -0.376672 1.03212
5.18718 -0.658397 0.64044
6.23307 -0.531959 0.726115
7.53821 -0.375496 0.80012
6.75601 -0.468739 0.768953
6.23307 0.531959 0.726115
7.16202 0.418556 0.755385
6.95017 0.442124 0.86337
6.75601 0.468739 0.768953
6.63908 -0.467354 0.512817
6.86123 0.433766 0.472606
6.63908 0.467354 0.512817
8.53529 -0.127758 0.539191
6.86123 -0.378657 0.390086
8.53529 0.127758 0.539191
7.16202 -0.418556 0.755385
8.09098 -0.305153 0.784654
5.68089 -0.576805 0.369581
5.68089 0.576805 0.369581
6.02421 -0.504106 0.315533
6.02421 0.504106 0.315533
6.02421 0.531661 0.356793
6.02421 -0.531661 0.356793
6.86123 -0.433766 0.472606
6.86123 0.378657 0.390086
6.1746 -0.524055 0.498182
6.1746 0.524055 0.498182
4.10336 0.685264 0.13353
4.10336 -0.685264 0.13353
3.01955 -0.764104 0.18742
4.10336 -0.673697 0.05286
3.01955 0.729405 -0.0545896
3.01955 0.740972 0.0260804
5.18718 -0.629555 0.24098
4.10336 0.673697 0.05286
0.121885 -1.04862 -0.282625
0.350255 1.03029 -0.267193
0.120963 -1.04295 -0.240179
0.349793 -1.02745 -0.245971
0.349793 1.02745 -0.245971
0.464209 1.0197 -0.248866
-0.216134 1.06942 -0.300461
-0.554152 -1.09022 -0.318297
-0.44008 1.08547 -0.210284
-0.554152 1.09022 -0.318297
0.120963 1.04295 -0.240179
-0.216134 -1.06942 -0.300461
0.121885 1.04862 -0.282625
0.121885 0.906867 -0.694829
0.743847 0.935969 -0.40313
0.972217 0.917634 -0.387699
0.743847 -0.935969 -0.40313
0.464209 -1.0197 -0.248866
0.972217 -0.917634 -0.387699
0.578624 -1.01195 -0.251762
0.578624 1.01195 -0.251762
0.350255 -1.03029 -0.267193
-1.95655 0.337729 -0.974066
-2.39848 -0.191842 -1.00067
-2.90259 -0.339019 -0.99336
-2.90259 0.339019 -0.99336
-2.42213 -0.340666 -0.987647
-2.44579 0.425677 -1.07659
-2.42213 0.340666 -0.987647
6.64745 0.0799605 1.19695
5.86469 0.175109 1.19635
6.66784 0.227854 1.18756
6.66784 -0.227854 1.18756
7.01477 -0.100896 1.19651
5.86469 -0.175109 1.19635
6.64745 -0.0799605 1.19695
5.18718 0.312889 1.17567
5.91126 0 1.20755
6.28373 0.0373285 1.19785
6.66784 -0.369223 1.08566
6.66784 0.369223 1.08566
5.18718 -0.312889 1.17567
-0.861793 -0.521872 1.09238
0.149685 0.789422 0.80849
-1.51335 0.81079 0.836
0.149685 -0.789422 0.80849
0.169083 -0.812846 0.706241
0.154545 -0.691921 0.911545
-1.18271 -0.568829 1.06725
0.154545 0.691921 0.911545
-1.50363 0.615787 1.04211
-1.18271 0.568829 1.06725
0.169083 0.812846 0.706241
0.475464 -0.644963 0.93668
0.475464 0.644963 0.93668
3 0 304 10
3 11 305 110
3 10 802 321
3 320 323 11
3 10 304 790
3 6 305 11
3 785 7 1
3 8 9 788
3 787 785 1
3 8 788 2
3 789 787 1
3 8 2 4
3 3 789 1
3 8 4 5
3 790 3 1
3 8 5 6
3 10 790 1
3 8 6 11
3 7 802 1
3 8 323 9
3 802 10 1
3 8 11 323
3 604 766 769
3 12 768 767
3 602 604 769
3 12 767 603
3 602 769 13
3 770 12 603
3 16 602 13
3 770 603 14
3 16 13 608
3 15 770 14
3 16 608 612
3 613 15 14
3 16 612 611
3 616 613 14
3 623 16 611
3 616 14 624
3 19 623 611
3 616 624 17
3 18 19 611
3 616 17 617
3 221 649 258
3 20 665 21
3 733 24 22
3 377 271 734
3 631 24 733
3 734 271 732
3 631 23 24
3 271 270 732
3 26 22 117
3 25 377 738
3 733 22 26
3 738 377 734
3 27 37 28
3 29 38 27
3 30 37 31
3 31 38 30
3 31 37 27
3 27 38 31
3 37 35 28
3 29 78 38
3 35 32 65
3 65 32 78
3 37 34 33
3 33 34 38
3 34 37 30
3 30 38 34
3 32 35 36
3 36 78 32
3 36 37 33
3 33 38 36
3 35 37 36
3 36 38 78
3 45 49 39
3 41 47 40
3 45 39 43
3 48 41 40
3 43 581 75
3 76 42 48
3 43 44 45
3 40 588 48
3 43 75 44
3 588 76 48
3 49 45 574
3 46 40 47
3 578 43 39
3 41 48 579
3 39 49 578
3 579 47 41
3 578 49 574
3 46 47 579
3 43 50 581
3 42 51 48
3 43 587 50
3 51 69 48
3 43 578 587
3 69 579 48
3 591 52 75
3 76 592 53
3 64 54 581
3 42 55 56
3 782 590 65
3 65 66 57
3 589 35 65
3 65 78 58
3 816 573 45
3 40 828 59
3 893 585 60
3 60 894 893
3 61 782 73
3 73 57 62
3 577 824 578
3 579 71 580
3 28 35 77
3 63 78 29
3 77 35 64
3 56 78 63
3 77 64 581
3 42 56 63
3 589 65 590
3 66 65 58
3 67 68 587
3 69 575 576
3 67 587 837
3 70 69 576
3 824 837 578
3 579 70 71
3 816 570 781
3 571 569 59
3 816 44 570
3 569 588 59
3 72 61 73
3 73 62 74
3 570 75 52
3 592 76 569
3 77 68 600
3 601 575 63
3 50 68 77
3 63 575 51
3 573 577 574
3 46 580 828
3 35 54 64
3 56 55 78
3 35 591 54
3 55 53 78
3 560 79 559
3 193 151 541
3 86 80 474
3 89 81 86
3 86 84 80
3 81 82 86
3 86 83 84
3 82 85 86
3 86 475 83
3 85 475 86
3 86 474 87
3 88 89 86
3 90 471 86
3 86 471 472
3 86 87 90
3 472 88 86
3 646 97 468
3 466 91 647
3 97 99 777
3 778 100 91
3 97 224 99
3 100 227 91
3 94 92 224
3 227 96 741
3 92 94 453
3 93 741 96
3 453 94 95
3 108 741 93
3 94 265 95
3 108 116 741
3 111 461 92
3 96 101 112
3 97 223 224
3 227 225 91
3 97 662 223
3 225 663 91
3 646 662 97
3 91 663 647
3 98 263 462
3 222 263 98
3 99 306 210
3 211 307 100
3 99 0 306
3 307 110 100
3 461 0 99
3 100 110 101
3 0 461 111
3 112 101 110
3 102 103 436
3 437 430 105
3 103 102 336
3 335 105 430
3 336 102 104
3 333 105 335
3 103 336 338
3 337 335 430
3 106 342 449
3 451 344 107
3 348 346 457
3 318 448 345
3 95 368 453
3 93 109 108
3 368 95 265
3 116 108 109
3 0 111 455
3 113 112 110
3 92 455 111
3 112 113 96
3 114 322 294
3 301 293 324
3 115 0 455
3 113 110 456
3 265 118 368
3 109 119 116
3 268 118 265
3 116 119 266
3 268 117 118
3 119 25 266
3 117 376 118
3 119 378 25
3 22 376 117
3 25 378 377
3 273 395 384
3 388 864 387
3 286 402 120
3 772 403 288
3 290 425 365
3 121 426 292
3 290 289 425
3 426 431 292
3 122 341 126
3 127 123 124
3 343 122 126
3 127 124 125
3 343 126 339
3 340 127 125
3 131 343 339
3 340 125 128
3 131 339 129
3 334 340 128
3 129 130 131
3 128 133 334
3 131 130 134
3 132 133 128
3 134 130 135
3 347 133 132
3 135 130 136
3 364 133 347
3 138 135 136
3 364 347 137
3 138 136 363
3 360 364 137
3 350 138 363
3 360 137 139
3 350 363 140
3 361 360 139
3 141 350 140
3 361 139 353
3 141 140 356
3 145 361 353
3 355 141 356
3 145 353 142
3 355 356 143
3 144 145 142
3 148 146 147
3 147 155 148
3 148 79 146
3 155 151 148
3 79 149 146
3 155 150 151
3 79 152 149
3 150 153 151
3 79 199 152
3 153 775 151
3 208 152 777
3 778 153 209
3 208 162 152
3 153 163 209
3 160 152 162
3 163 153 164
3 160 149 152
3 153 150 164
3 160 146 149
3 150 155 164
3 160 158 146
3 155 154 164
3 159 146 158
3 154 155 159
3 159 147 146
3 155 147 159
3 159 171 156
3 156 157 159
3 159 158 171
3 157 154 159
3 160 171 158
3 154 157 164
3 160 161 171
3 157 170 164
3 160 198 161
3 170 169 164
3 160 162 198
3 169 163 164
3 208 198 162
3 163 169 209
3 165 166 198
3 169 167 196
3 168 198 166
3 167 169 176
3 168 161 198
3 169 170 176
3 168 171 161
3 170 157 176
3 168 172 171
3 157 173 176
3 175 171 172
3 173 157 175
3 175 156 171
3 157 156 175
3 175 189 174
3 174 190 175
3 175 172 189
3 190 173 175
3 168 189 172
3 173 190 176
3 168 184 189
3 190 185 176
3 168 178 184
3 185 177 176
3 168 166 178
3 177 167 176
3 165 178 166
3 167 177 196
3 165 195 178
3 177 906 196
3 179 182 178
3 177 183 180
3 181 178 182
3 183 177 186
3 181 184 178
3 177 185 186
3 181 189 184
3 185 190 186
3 181 187 189
3 190 192 186
3 188 189 187
3 192 190 188
3 188 174 189
3 190 174 188
3 188 187 191
3 191 192 188
3 181 191 187
3 192 191 186
3 181 182 191
3 191 183 186
3 179 191 182
3 183 191 180
3 79 194 559
3 193 194 151
3 79 148 194
3 194 148 151
3 195 165 319
3 900 196 906
3 197 165 198
3 169 196 200
3 199 79 560
3 541 151 775
3 776 779 560
3 541 780 463
3 165 197 319
3 900 200 196
3 197 201 319
3 900 308 200
3 202 201 198
3 169 308 207
3 201 197 198
3 169 200 308
3 201 202 306
3 307 207 308
3 202 205 306
3 307 203 207
3 205 204 306
3 307 206 203
3 204 210 306
3 307 211 206
3 204 205 198
3 169 203 206
3 205 202 198
3 169 207 203
3 210 208 99
3 100 209 211
3 208 777 99
3 100 778 209
3 208 210 198
3 169 211 209
3 210 204 198
3 169 206 211
3 179 565 568
3 568 566 180
3 191 179 568
3 568 180 191
3 179 898 565
3 566 783 180
3 195 904 178
3 177 907 906
3 904 898 178
3 177 783 907
3 850 854 822
3 214 212 213
3 216 349 822
3 214 351 598
3 349 850 822
3 214 213 351
3 217 295 215
3 445 296 220
3 215 349 217
3 220 351 445
3 216 217 349
3 351 220 598
3 295 563 218
3 795 219 296
3 299 298 218
3 795 303 297
3 217 216 563
3 219 598 220
3 298 295 218
3 795 296 303
3 295 217 563
3 219 220 296
3 462 221 464
3 465 21 222
3 223 226 224
3 227 698 225
3 226 94 224
3 227 741 698
3 228 719 702
3 229 232 230
3 261 228 702
3 229 230 231
3 228 260 719
3 232 259 230
3 879 263 331
3 331 263 233
3 240 879 331
3 331 233 878
3 879 880 263
3 263 881 233
3 234 235 597
3 597 235 327
3 236 237 238
3 883 747 249
3 236 239 248
3 255 241 249
3 331 239 240
3 878 241 331
3 239 236 240
3 878 249 241
3 244 764 762
3 763 242 243
3 332 244 762
3 763 243 247
3 244 284 764
3 242 285 243
3 244 245 854
3 212 246 243
3 244 332 245
3 246 247 243
3 240 236 238
3 883 249 878
3 251 236 248
3 255 249 250
3 251 252 237
3 747 755 250
3 236 251 237
3 747 250 249
3 251 256 252
3 755 253 250
3 256 248 254
3 330 255 253
3 256 251 248
3 255 250 253
3 256 765 252
3 755 257 253
3 765 254 234
3 327 330 257
3 765 256 254
3 330 253 257
3 262 221 462
3 222 21 264
3 464 646 468
3 466 647 465
3 221 646 464
3 465 647 21
3 258 646 221
3 21 647 20
3 880 260 263
3 263 259 881
3 260 228 263
3 263 230 259
3 880 238 719
3 232 883 881
3 260 880 719
3 232 881 259
3 261 263 228
3 230 263 231
3 262 462 263
3 263 222 264
3 262 263 261
3 231 263 264
3 94 267 265
3 116 742 741
3 267 268 265
3 116 266 742
3 267 739 268
3 266 737 742
3 22 24 273
3 387 271 377
3 24 269 273
3 387 272 271
3 274 269 23
3 270 272 275
3 269 24 23
3 270 271 272
3 269 274 273
3 387 275 272
3 274 395 273
3 387 864 275
3 395 274 626
3 813 275 864
3 274 23 626
3 813 270 275
3 858 280 395
3 864 282 866
3 280 277 278
3 276 279 282
3 277 402 278
3 276 403 279
3 281 277 280
3 282 279 283
3 277 281 402
3 403 283 279
3 875 281 280
3 282 283 876
3 286 120 291
3 287 772 288
3 284 291 764
3 242 287 285
3 284 289 291
3 287 431 285
3 290 286 291
3 287 288 292
3 289 290 291
3 287 292 431
3 215 315 317
3 447 316 445
3 315 294 322
3 293 301 316
3 315 215 295
3 296 445 316
3 294 295 298
3 303 296 301
3 295 294 315
3 316 301 296
3 114 300 299
3 297 302 324
3 300 298 299
3 297 303 302
3 298 300 294
3 301 302 303
3 300 114 294
3 301 324 302
3 321 319 201
3 308 900 320
3 321 306 10
3 11 307 320
3 306 0 10
3 11 110 307
3 0 115 304
3 305 456 110
3 321 201 306
3 307 308 320
3 774 380 304
3 305 373 369
3 380 793 304
3 305 309 373
3 380 390 793
3 309 310 373
3 390 803 793
3 309 804 310
3 396 311 803
3 804 312 413
3 457 313 802
3 323 314 318
3 322 313 315
3 316 314 293
3 313 317 315
3 316 447 314
3 317 313 457
3 318 314 447
3 321 902 319
3 900 908 320
3 321 798 902
3 908 325 320
3 802 798 321
3 320 325 323
3 802 313 322
3 293 314 323
3 802 322 798
3 325 293 323
3 114 798 322
3 293 325 324
3 299 798 114
3 324 325 297
3 443 289 284
3 285 431 326
3 443 284 358
3 357 285 326
3 234 254 329
3 329 330 327
3 234 329 235
3 235 329 327
3 254 248 328
3 328 255 330
3 254 328 329
3 329 328 330
3 248 239 331
3 331 241 255
3 248 331 328
3 328 331 255
3 765 234 332
3 247 327 257
3 234 597 332
3 247 597 327
3 130 102 438
3 439 105 133
3 130 438 136
3 364 439 133
3 102 130 129
3 334 133 105
3 102 129 104
3 333 334 105
3 339 336 129
3 334 335 340
3 336 104 129
3 334 333 335
3 126 338 339
3 340 337 127
3 338 336 339
3 340 335 337
3 341 459 126
3 127 458 123
3 459 338 126
3 127 337 458
3 122 106 341
3 123 107 124
3 106 459 341
3 123 458 107
3 343 342 122
3 124 344 125
3 342 106 122
3 124 107 344
3 131 452 343
3 125 450 128
3 452 342 343
3 125 344 450
3 134 348 131
3 128 345 132
3 348 452 131
3 128 450 345
3 135 346 134
3 132 448 347
3 346 348 134
3 132 345 448
3 138 446 346
3 448 444 137
3 138 346 135
3 347 448 137
3 350 349 446
3 444 351 139
3 350 446 138
3 137 444 139
3 141 850 350
3 139 213 353
3 850 349 350
3 139 351 213
3 355 352 141
3 353 853 142
3 352 850 141
3 353 213 853
3 143 354 352
3 853 852 144
3 143 352 355
3 142 853 144
3 356 284 354
3 852 285 145
3 356 354 143
3 144 852 145
3 140 358 356
3 145 357 361
3 358 284 356
3 145 285 357
3 363 359 140
3 361 362 360
3 359 358 140
3 361 357 362
3 136 438 359
3 362 439 364
3 136 359 363
3 360 362 364
3 290 365 286
3 288 121 292
3 365 402 286
3 288 403 121
3 372 773 454
3 366 370 367
3 773 115 454
3 366 456 370
3 118 372 368
3 109 367 119
3 372 454 368
3 109 366 367
3 375 774 372
3 367 369 371
3 774 773 372
3 367 370 369
3 376 375 118
3 119 371 378
3 375 372 118
3 119 367 371
3 774 375 380
3 373 371 369
3 375 379 380
3 373 374 371
3 383 379 376
3 378 374 385
3 379 375 376
3 378 371 374
3 273 383 376
3 378 385 387
3 273 376 22
3 377 378 387
3 381 390 379
3 374 310 382
3 390 380 379
3 374 373 310
3 393 381 383
3 385 382 386
3 381 379 383
3 385 374 382
3 384 393 383
3 385 386 388
3 384 383 273
3 387 385 388
3 389 803 381
3 382 804 397
3 803 390 381
3 382 310 804
3 392 389 393
3 386 397 398
3 389 381 393
3 386 382 397
3 391 392 393
3 386 398 394
3 391 393 384
3 388 386 394
3 280 391 384
3 388 394 282
3 280 384 395
3 864 388 282
3 407 396 389
3 397 413 409
3 396 803 389
3 397 804 413
3 404 407 392
3 398 409 410
3 407 389 392
3 398 397 409
3 405 404 391
3 394 410 399
3 404 392 391
3 394 398 410
3 278 405 280
3 282 399 276
3 405 391 280
3 282 394 399
3 405 278 400
3 419 276 399
3 278 416 400
3 419 401 276
3 278 402 416
3 401 403 276
3 402 365 416
3 401 121 403
3 404 405 406
3 418 399 410
3 405 400 406
3 418 419 399
3 407 404 411
3 408 410 409
3 404 406 411
3 408 418 410
3 396 407 412
3 414 409 413
3 407 411 412
3 414 408 409
3 311 396 799
3 422 413 312
3 396 412 799
3 422 414 413
3 400 416 423
3 424 401 419
3 416 415 423
3 424 427 401
3 416 365 415
3 427 121 401
3 365 425 415
3 427 426 121
3 406 400 417
3 429 419 418
3 400 423 417
3 429 424 419
3 411 406 421
3 420 418 408
3 406 417 421
3 420 429 418
3 412 411 421
3 420 408 414
3 412 421 434
3 435 420 414
3 799 412 434
3 435 414 422
3 799 434 433
3 801 435 422
3 423 415 436
3 437 427 424
3 415 428 436
3 437 442 427
3 415 425 428
3 442 426 427
3 425 440 428
3 442 441 426
3 417 423 103
3 430 424 429
3 423 436 103
3 430 437 424
3 425 289 440
3 441 431 426
3 289 443 440
3 441 326 431
3 421 417 460
3 432 429 420
3 417 103 460
3 432 430 429
3 434 421 449
3 451 420 435
3 421 460 449
3 451 432 420
3 433 434 802
3 323 435 801
3 434 449 802
3 323 451 435
3 436 428 102
3 105 442 437
3 428 438 102
3 105 439 442
3 428 440 438
3 439 441 442
3 440 359 438
3 439 362 441
3 440 443 359
3 362 326 441
3 443 358 359
3 362 357 326
3 215 317 446
3 444 447 445
3 215 446 349
3 351 444 445
3 317 457 446
3 444 318 447
3 457 346 446
3 444 448 318
3 802 449 452
3 450 451 323
3 449 342 452
3 450 344 451
3 453 368 454
3 366 109 93
3 453 454 92
3 96 366 93
3 92 454 115
3 456 366 96
3 92 115 455
3 113 456 96
3 457 802 452
3 450 323 318
3 457 452 348
3 345 450 318
3 449 460 106
3 107 432 451
3 460 459 106
3 107 458 432
3 338 459 460
3 432 458 337
3 338 460 103
3 430 432 337
3 99 224 461
3 101 227 100
3 224 92 461
3 101 96 227
3 509 507 98
3 98 507 543
3 509 98 462
3 222 98 543
3 776 547 97
3 91 467 463
3 776 97 777
3 778 91 463
3 545 509 462
3 222 543 544
3 545 462 464
3 465 222 544
3 549 545 464
3 465 544 546
3 549 464 468
3 466 465 546
3 547 549 468
3 466 546 467
3 547 468 97
3 91 466 467
3 469 482 90
3 472 473 480
3 469 90 87
3 88 472 480
3 482 470 471
3 471 470 473
3 482 471 90
3 472 471 473
3 478 469 474
3 89 480 494
3 469 87 474
3 89 88 480
3 486 487 475
3 475 489 486
3 487 83 475
3 475 85 489
3 487 477 83
3 85 476 489
3 477 84 83
3 85 82 476
3 477 479 80
3 81 491 476
3 477 80 84
3 82 81 476
3 479 478 474
3 89 494 491
3 479 474 80
3 81 89 491
3 484 496 482
3 473 483 501
3 484 482 469
3 480 473 501
3 496 481 470
3 470 481 483
3 496 470 482
3 473 470 483
3 506 484 469
3 480 501 505
3 506 469 478
3 494 480 505
3 502 485 486
3 486 488 502
3 485 487 486
3 486 489 488
3 485 492 487
3 489 493 488
3 492 477 487
3 489 476 493
3 492 490 479
3 491 495 493
3 492 479 477
3 476 491 493
3 490 506 478
3 494 505 495
3 490 478 479
3 491 494 495
3 498 536 496
3 483 497 512
3 498 496 484
3 501 483 512
3 536 499 481
3 481 499 497
3 536 481 496
3 483 481 497
3 500 498 484
3 501 512 531
3 500 484 506
3 505 501 531
3 516 521 502
3 502 522 516
3 521 485 502
3 502 488 522
3 521 504 485
3 488 503 522
3 504 492 485
3 488 493 503
3 504 527 490
3 495 526 503
3 504 490 492
3 493 495 503
3 527 500 506
3 505 531 526
3 527 506 490
3 495 505 526
3 507 509 508
3 508 543 507
3 509 542 508
3 508 510 543
3 511 498 528
3 532 512 537
3 498 500 528
3 532 531 512
3 528 513 511
3 537 534 532
3 513 550 511
3 537 551 534
3 514 521 516
3 516 522 524
3 514 516 515
3 515 516 524
3 515 552 517
3 518 552 515
3 515 517 514
3 524 518 515
3 514 517 553
3 519 518 524
3 514 553 520
3 523 519 524
3 520 504 521
3 522 503 523
3 520 521 514
3 524 522 523
3 520 553 529
3 530 519 523
3 553 525 529
3 530 533 519
3 529 527 520
3 523 526 530
3 527 504 520
3 523 503 526
3 528 500 529
3 530 531 532
3 500 527 529
3 530 526 531
3 529 525 528
3 532 533 530
3 525 513 528
3 532 534 533
3 511 550 539
3 535 551 537
3 550 562 539
3 535 561 551
3 539 536 511
3 537 497 535
3 536 498 511
3 537 512 497
3 539 562 540
3 540 561 535
3 562 538 540
3 540 538 561
3 540 499 539
3 535 499 540
3 499 536 539
3 535 497 499
3 776 560 547
3 467 541 463
3 560 548 547
3 467 558 541
3 545 554 542
3 510 556 544
3 545 542 509
3 543 510 544
3 549 557 545
3 544 555 546
3 557 554 545
3 544 556 555
3 547 548 549
3 546 558 467
3 548 557 549
3 546 555 558
3 513 548 550
3 551 558 534
3 548 560 550
3 551 541 558
3 552 508 542
3 510 508 552
3 552 542 517
3 518 510 552
3 517 542 554
3 556 510 518
3 517 554 553
3 519 556 518
3 553 554 525
3 533 556 519
3 554 557 525
3 533 555 556
3 525 557 513
3 534 555 533
3 557 548 513
3 534 558 555
3 559 194 562
3 561 194 193
3 194 538 562
3 561 538 194
3 562 550 560
3 541 551 561
3 562 560 559
3 193 541 561
3 563 567 218
3 795 564 219
3 567 565 218
3 795 566 564
3 567 595 568
3 568 595 564
3 567 568 565
3 566 568 564
3 570 44 75
3 76 588 569
3 570 52 781
3 571 592 569
3 782 65 73
3 73 65 57
3 889 72 572
3 572 74 583
3 72 73 572
3 572 73 74
3 889 572 582
3 582 572 583
3 573 574 45
3 40 46 828
3 68 50 587
3 69 51 575
3 67 600 68
3 575 601 576
3 577 578 574
3 46 579 580
3 54 591 581
3 42 53 55
3 591 75 581
3 42 76 53
3 889 582 584
3 584 582 583
3 891 889 584
3 584 583 885
3 891 584 586
3 586 584 885
3 585 891 586
3 586 885 894
3 585 586 60
3 60 586 894
3 837 587 578
3 579 69 70
3 837 600 67
3 576 601 70
3 45 44 816
3 59 588 40
3 589 590 781
3 571 66 58
3 589 781 35
3 78 571 58
3 782 781 590
3 66 571 57
3 77 581 50
3 51 42 63
3 77 600 28
3 29 601 63
3 591 35 781
3 571 78 53
3 591 781 52
3 592 571 53
3 897 567 814
3 593 564 892
3 567 563 814
3 593 219 564
3 594 595 897
3 892 595 594
3 595 567 897
3 892 564 595
3 245 332 596
3 596 247 246
3 332 597 596
3 596 597 247
3 814 563 822
3 214 219 593
3 563 216 822
3 214 598 219
3 596 599 833
3 835 599 596
3 596 833 245
3 246 835 596
3 599 27 833
3 835 27 599
3 833 27 600
3 601 27 835
3 27 28 600
3 601 29 27
3 268 739 26
3 738 737 266
3 268 26 117
3 25 738 266
3 602 16 651
3 621 14 603
3 602 651 633
3 606 621 603
3 604 602 633
3 606 603 767
3 604 633 636
3 605 606 767
3 641 607 13
3 770 609 642
3 607 608 13
3 770 15 609
3 607 610 608
3 15 645 609
3 610 612 608
3 15 613 645
3 610 615 612
3 613 614 645
3 615 611 612
3 613 616 614
3 615 618 18
3 617 648 614
3 615 18 611
3 616 617 614
3 618 620 19
3 17 619 648
3 618 19 18
3 617 17 648
3 620 622 623
3 624 625 619
3 620 623 19
3 17 624 619
3 622 651 16
3 14 621 625
3 622 16 623
3 624 14 625
3 626 627 757
3 753 630 813
3 627 752 757
3 753 628 630
3 752 627 629
3 726 630 628
3 627 730 629
3 726 727 630
3 631 627 626
3 813 630 732
3 631 626 23
3 270 813 732
3 712 730 627
3 630 727 731
3 712 627 631
3 732 630 731
3 651 671 635
3 634 632 621
3 651 635 633
3 606 634 621
3 633 635 636
3 605 634 606
3 635 674 636
3 605 654 634
3 652 637 771
3 639 638 653
3 637 656 771
3 639 657 638
3 771 656 658
3 640 657 639
3 771 658 641
3 642 640 639
3 641 658 643
3 644 640 642
3 641 643 607
3 609 644 642
3 607 643 646
3 647 644 609
3 607 646 610
3 645 647 609
3 610 646 615
3 614 647 645
3 646 258 615
3 614 20 647
3 615 258 618
3 648 20 614
3 258 649 618
3 648 665 20
3 618 649 620
3 619 665 648
3 649 664 620
3 619 668 665
3 620 664 650
3 670 668 619
3 620 650 622
3 625 670 619
3 622 650 671
3 632 670 625
3 622 671 651
3 621 632 625
3 636 674 652
3 653 654 605
3 674 637 652
3 653 638 654
3 655 656 688
3 689 657 675
3 656 637 688
3 689 638 657
3 677 658 655
3 675 640 661
3 658 656 655
3 675 657 640
3 660 643 658
3 640 644 659
3 660 658 677
3 661 640 659
3 662 646 643
3 644 647 663
3 662 643 660
3 659 644 663
3 680 664 221
3 21 668 679
3 664 649 221
3 21 665 668
3 666 650 664
3 668 670 667
3 666 664 680
3 679 668 667
3 683 671 650
3 670 632 669
3 683 650 666
3 667 670 669
3 687 635 671
3 632 634 686
3 687 671 683
3 669 632 686
3 673 674 635
3 634 654 672
3 673 635 687
3 686 634 672
3 688 637 673
3 672 638 689
3 637 674 673
3 672 654 638
3 655 688 711
3 676 689 675
3 655 711 692
3 691 676 675
3 677 655 692
3 691 675 661
3 677 692 695
3 694 691 661
3 660 677 678
3 699 661 659
3 677 695 678
3 699 694 661
3 662 660 223
3 225 659 663
3 660 678 223
3 225 699 659
3 680 221 262
3 264 21 679
3 680 262 681
3 700 264 679
3 666 680 681
3 700 679 667
3 666 681 701
3 682 700 667
3 683 666 684
3 708 667 669
3 666 701 684
3 708 682 667
3 687 683 705
3 709 669 686
3 683 684 705
3 709 708 669
3 673 687 710
3 685 686 672
3 687 705 710
3 685 709 686
3 688 673 710
3 685 672 689
3 688 710 711
3 676 685 689
3 692 711 729
3 690 676 691
3 692 729 693
3 713 690 691
3 695 692 693
3 713 691 694
3 695 693 716
3 718 713 694
3 678 695 696
3 697 694 699
3 695 716 696
3 697 718 694
3 223 678 226
3 698 699 225
3 678 696 226
3 698 697 699
3 681 262 261
3 231 264 700
3 681 261 702
3 229 231 700
3 701 681 702
3 229 700 682
3 701 702 703
3 704 229 682
3 684 701 703
3 704 682 708
3 684 703 706
3 721 704 708
3 705 684 725
3 707 708 709
3 684 706 725
3 707 721 708
3 710 705 725
3 707 709 685
3 710 725 724
3 728 707 685
3 711 710 724
3 728 685 676
3 711 724 729
3 690 728 676
3 693 729 712
3 731 690 713
3 693 712 715
3 714 731 713
3 716 693 715
3 714 713 718
3 716 715 717
3 735 714 718
3 696 716 717
3 735 718 697
3 696 717 736
3 740 735 697
3 226 696 94
3 741 697 698
3 696 736 94
3 741 740 697
3 703 702 719
3 232 229 704
3 703 719 743
3 720 232 704
3 706 703 743
3 720 704 721
3 706 743 723
3 722 720 721
3 725 706 629
3 726 721 707
3 706 723 629
3 726 722 721
3 724 725 629
3 726 707 728
3 724 629 730
3 727 726 728
3 729 724 730
3 727 728 690
3 729 730 712
3 731 727 690
3 715 712 631
3 732 731 714
3 715 631 733
3 734 732 714
3 717 715 733
3 734 714 735
3 717 733 26
3 738 734 735
3 736 717 26
3 738 735 740
3 736 26 739
3 737 738 740
3 94 736 739
3 737 740 741
3 94 739 267
3 742 737 741
3 743 719 238
3 883 232 720
3 743 238 748
3 745 883 720
3 723 743 748
3 745 720 722
3 723 748 750
3 744 745 722
3 629 723 752
3 628 722 726
3 723 750 752
3 628 744 722
3 748 238 749
3 746 883 745
3 238 237 749
3 746 747 883
3 750 748 749
3 746 745 744
3 750 749 756
3 751 746 744
3 752 750 756
3 751 744 628
3 752 756 757
3 753 751 628
3 749 237 754
3 760 747 746
3 237 252 754
3 760 755 747
3 756 749 754
3 760 746 751
3 756 754 761
3 759 760 751
3 757 756 761
3 759 751 753
3 757 761 758
3 869 759 753
3 626 757 758
3 869 753 813
3 754 252 765
3 257 755 760
3 754 765 762
3 763 257 760
3 761 754 762
3 763 760 759
3 761 762 764
3 242 763 759
3 758 761 764
3 242 759 869
3 758 764 291
3 287 242 869
3 762 765 332
3 247 257 763
3 636 652 766
3 768 653 605
3 636 766 604
3 767 768 605
3 771 641 769
3 12 642 639
3 641 13 769
3 12 770 642
3 652 771 766
3 768 639 653
3 771 769 766
3 768 12 639
3 120 281 875
3 876 283 772
3 402 281 120
3 772 283 403
3 115 773 304
3 305 370 456
3 773 774 304
3 305 369 370
3 152 199 779
3 780 775 153
3 560 779 199
3 775 780 541
3 776 777 779
3 780 778 463
3 777 152 779
3 780 153 778
3 781 821 816
3 59 820 571
3 821 781 782
3 57 571 820
3 179 178 898
3 783 177 180
3 7 811 802
3 323 812 9
3 785 784 811
3 785 811 7
3 812 786 788
3 812 788 9
3 787 784 785
3 788 786 2
3 789 791 784
3 789 784 787
3 786 792 4
3 786 4 2
3 3 791 789
3 4 792 5
3 790 791 3
3 5 792 6
3 793 791 304
3 305 792 309
3 791 790 304
3 305 6 792
3 811 784 793
3 309 786 812
3 784 791 793
3 309 792 786
3 311 794 803
3 804 800 312
3 797 299 218
3 795 297 796
3 299 797 798
3 325 796 297
3 797 902 798
3 325 908 796
3 799 809 794
3 799 794 311
3 800 810 422
3 800 422 312
3 433 809 799
3 422 810 801
3 802 809 433
3 801 810 323
3 809 802 811
3 812 323 810
3 794 806 803
3 804 805 800
3 806 793 803
3 804 309 805
3 808 793 806
3 805 309 807
3 809 808 806
3 809 806 794
3 805 807 810
3 805 810 800
3 793 808 811
3 812 807 309
3 808 809 811
3 812 810 807
3 626 863 395
3 864 865 813
3 863 626 758
3 869 813 865
3 814 895 897
3 892 896 593
3 61 895 782
3 57 896 62
3 817 814 815
3 818 593 819
3 816 817 815
3 816 815 573
3 818 819 59
3 818 59 828
3 573 815 822
3 214 818 828
3 815 814 822
3 214 593 818
3 821 817 816
3 59 819 820
3 895 814 817
3 819 593 896
3 782 895 817
3 782 817 821
3 819 896 57
3 819 57 820
3 822 823 573
3 828 826 214
3 823 822 854
3 212 214 826
3 577 825 824
3 71 829 580
3 825 823 836
3 827 826 829
3 824 825 836
3 824 836 837
3 827 829 71
3 827 71 70
3 823 825 573
3 828 829 826
3 825 577 573
3 828 580 829
3 837 830 844
3 837 844 600
3 831 832 70
3 831 70 601
3 833 834 245
3 246 845 835
3 600 844 834
3 600 834 833
3 845 831 601
3 845 601 835
3 836 846 830
3 836 830 837
3 832 847 827
3 832 827 70
3 846 836 823
3 826 827 847
3 838 854 843
3 842 212 839
3 830 838 843
3 830 843 844
3 842 839 832
3 842 832 831
3 834 840 245
3 246 841 845
3 840 854 245
3 246 212 841
3 843 854 840
3 841 212 842
3 844 843 840
3 844 840 834
3 841 842 831
3 841 831 845
3 846 838 830
3 832 839 847
3 854 838 823
3 826 839 212
3 838 846 823
3 826 847 839
3 352 849 850
3 213 848 853
3 849 854 850
3 213 212 848
3 851 854 849
3 848 212 855
3 354 851 849
3 354 849 352
3 848 855 852
3 848 852 853
3 284 851 354
3 852 855 285
3 854 851 244
3 243 855 212
3 851 284 244
3 243 285 855
3 856 877 859
3 856 859 858
3 860 857 868
3 860 868 866
3 858 859 280
3 282 860 866
3 877 873 859
3 860 861 857
3 859 873 280
3 282 861 860
3 873 875 280
3 282 876 861
3 858 867 856
3 868 862 866
3 863 867 395
3 864 862 865
3 867 858 395
3 864 866 862
3 856 867 758
3 869 862 868
3 867 863 758
3 869 865 862
3 291 872 758
3 869 870 287
3 872 856 758
3 869 868 870
3 875 874 120
3 772 871 876
3 874 291 120
3 772 287 871
3 856 872 877
3 857 870 868
3 873 874 875
3 876 871 861
3 872 291 874
3 871 287 870
3 877 872 874
3 877 874 873
3 871 870 857
3 871 857 861
3 238 882 240
3 878 884 883
3 882 879 240
3 878 233 884
3 879 882 880
3 881 884 233
3 882 238 880
3 881 883 884
3 585 890 891
3 885 886 894
3 890 897 888
3 887 892 886
3 72 890 888
3 72 888 61
3 887 886 74
3 887 74 62
3 889 890 72
3 74 886 583
3 891 890 889
3 583 886 885
3 897 890 594
3 594 886 892
3 890 893 594
3 594 893 886
3 893 890 585
3 894 886 893
3 61 888 895
3 896 887 62
3 888 897 895
3 896 892 887
3 898 909 565
3 566 910 783
3 319 901 903
3 319 903 195
3 905 899 900
3 905 900 906
3 901 319 902
3 908 900 899
3 904 909 898
3 783 910 907
3 195 903 909
3 195 909 904
3 910 905 906
3 910 906 907
3 218 902 797
3 796 908 795
3 909 218 565
3 566 795 910
3 901 218 903
3 905 795 899
3 902 218 901
3 899 795 908
3 903 218 909
3 910 795 905
================================================
FILE: examples/mesh_ply.py
================================================
def main():
import sys
from ply import parse_ply
data = parse_ply(sys.argv[1])
from meshpy.geometry import GeometryBuilder
builder = GeometryBuilder()
builder.add_geometry(
points=[pt[:3] for pt in data["vertex"].data],
facets=[fd[0] for fd in data["face"].data],
)
builder.wrap_in_box(1)
from meshpy.tet import MeshInfo, build
mi = MeshInfo()
builder.set(mi)
mi.set_holes([builder.center()])
mesh = build(mi)
print(f"{len(mesh.elements)} elements")
mesh.write_vtk("out.vtk")
if __name__ == "__main__":
main()
================================================
FILE: examples/nico_mesh.py
================================================
def main():
import math
from meshpy import triangle
points = [(1, 1), (-1, 1), (-1, -1), (1, -1)]
def round_trip_connect(start, end):
result = [(i, i + 1) for i in range(start, end)]
result.append((end, start))
return result
def needs_refinement(vertices, area):
vert_origin, vert_destination, vert_apex = vertices
bary_x = (vert_origin.x + vert_destination.x + vert_apex.x) / 3
bary_y = (vert_origin.y + vert_destination.y + vert_apex.y) / 3
dist_center = math.sqrt((bary_x - 1) ** 2 + (bary_y - 1) ** 2)
max_area = math.fabs(0.05 * (dist_center - 0.5)) + 0.01
return area > max_area
info = triangle.MeshInfo()
info.set_points(points)
info.set_facets(round_trip_connect(0, len(points) - 1))
mesh = triangle.build(info, refinement_func=needs_refinement)
with open("nico.neu", "w") as f:
mesh.write_neu(f)
triangle.write_gnuplot_mesh("triangles.dat", mesh)
if __name__ == "__main__":
main()
================================================
FILE: examples/test_ball.py
================================================
def main():
from math import cos, pi, sin
from meshpy.geometry import (
EXT_OPEN,
GeometryBuilder,
generate_surface_of_revolution,
)
from meshpy.tet import MeshInfo, build
r = 3
points = 10
dphi = pi / points
def truncate(r):
if abs(r) < 1e-10:
return 0
else:
return r
rz = [(truncate(r * sin(i * dphi)), r * cos(i * dphi))
for i in range(points + 1)]
geob = GeometryBuilder()
geob.add_geometry(
*generate_surface_of_revolution(rz, closure=EXT_OPEN, radial_subdiv=10)
)
mesh_info = MeshInfo()
geob.set(mesh_info)
mesh = build(mesh_info)
mesh.write_vtk("ball.vtk")
# mesh.write_neu(file("torus.neu", "w"),
# {1: ("pec", 0)})
if __name__ == "__main__":
main()
================================================
FILE: examples/test_cylinder.py
================================================
def main():
from meshpy.geometry import (
GeometryBuilder,
generate_surface_of_revolution,
)
from meshpy.tet import MeshInfo, build
r = 1
ell = 1
rz = [(0, 0), (r, 0), (r, ell), (0, ell)]
geob = GeometryBuilder()
geob.add_geometry(
*generate_surface_of_revolution(rz, radial_subdiv=20, ring_markers=[1, 2, 3])
)
mesh_info = MeshInfo()
geob.set(mesh_info)
mesh = build(mesh_info, max_volume=0.01)
mesh.write_vtk("cylinder.vtk")
with open("cylinder.neu", "w") as f:
mesh.write_neu(
f,
{
1: ("minus_z", 1),
2: ("outer", 2),
3: ("plus_z", 3),
},
)
if __name__ == "__main__":
main()
================================================
FILE: examples/test_tet_torus.py
================================================
def main():
from math import cos, pi, sin
from meshpy.geometry import (
EXT_CLOSED_IN_RZ,
GeometryBuilder,
generate_surface_of_revolution,
)
from meshpy.tet import MeshInfo, build
big_r = 3
little_r = 2.9
points = 50
dphi = 2 * pi / points
rz = [
(big_r + little_r * cos(i * dphi), little_r * sin(i * dphi))
for i in range(points)
]
geob = GeometryBuilder()
geob.add_geometry(
*generate_surface_of_revolution(rz, closure=EXT_CLOSED_IN_RZ,
radial_subdiv=20)
)
mesh_info = MeshInfo()
geob.set(mesh_info)
mesh_info.save_nodes("torus")
mesh_info.save_poly("torus")
mesh = build(mesh_info)
mesh.write_vtk("torus.vtk")
mesh.save_elements("torus_mesh")
mesh.save_nodes("torus_mesh")
with open("torus.neu", "w") as f:
mesh.write_neu(f, {1: ("pec", 0)})
if __name__ == "__main__":
main()
================================================
FILE: examples/test_tetgen.py
================================================
from meshpy.tet import MeshInfo, build
def main():
mesh_info = MeshInfo()
mesh_info.set_points(
[
(0, 0, 0),
(2, 0, 0),
(2, 2, 0),
(0, 2, 0),
(0, 0, 12),
(2, 0, 12),
(2, 2, 12),
(0, 2, 12),
]
)
mesh_info.set_facets(
[
[0, 1, 2, 3],
[4, 5, 6, 7],
[0, 4, 5, 1],
[1, 5, 6, 2],
[2, 6, 7, 3],
[3, 7, 4, 0],
]
)
mesh_info.save_nodes("bar")
mesh_info.save_poly("bar")
mesh = build(mesh_info)
mesh.save_nodes("barout")
mesh.save_elements("barout")
mesh.save_faces("barout")
mesh.write_vtk("test.vtk")
if __name__ == "__main__":
main()
================================================
FILE: examples/test_tetgen_2.py
================================================
def main():
from meshpy.geometry import GeometryBuilder, generate_surface_of_revolution
from meshpy.tet import MeshInfo, build
simple_rz = [
(0, 0),
(1, 1),
(1, 2),
(0, 3),
]
geob = GeometryBuilder()
geob.add_geometry(*generate_surface_of_revolution(simple_rz))
mesh_info = MeshInfo()
geob.set(mesh_info)
# mesh_info.save_nodes("test")
# mesh_info.save_poly("test")
# mesh_info.load_poly("test")
mesh = build(mesh_info)
mesh.write_vtk("my_mesh.vtk")
# mesh.save_elements("gun")
# mesh.save_nodes("gun")
if __name__ == "__main__":
main()
================================================
FILE: examples/test_tri_pml.py
================================================
def main():
from meshpy import triangle
points = [
(-5, -1),
(-1, -1),
(0, -1),
(0, 0),
(1, 0),
(5, 0),
(5, 1),
(1, 1),
(-1, 1),
(-5, 1),
]
def round_trip_connect(seq):
n = len(seq)
return [(seq[i], seq[(i + 1) % n]) for i in range(n)]
info = triangle.MeshInfo()
info.set_points(points)
info.set_facets(
round_trip_connect([0, 1, 8, 9])
+ round_trip_connect([1, 2, 3, 4, 7, 8])
+ round_trip_connect([4, 5, 6, 7])
)
info.regions.resize(3)
info.regions[0] = (-2, 0, 1, 0.1)
info.regions[1] = (-0.5, 0, 0, 0.01)
info.regions[2] = (1.5, 0.5, 1, 0.1)
mesh = triangle.build(info)
triangle.write_gnuplot_mesh("triangles.dat", mesh)
with open("tri_pml.enu", "w") as f:
mesh.write_neu(f)
if __name__ == "__main__":
main()
====================
gitextract_18fujhnm/
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── autopush.yml
│ ├── ci.yml
│ └── wheels.yml
├── .gitignore
├── .gitlab-ci.yml
├── CITATION.cff
├── LICENSE
├── README.rst
├── doc/
│ ├── conf.py
│ ├── faq.rst
│ ├── geometry.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── tri-tet.rst
│ └── upload-docs.sh
├── examples/
│ ├── MESH_README.txt
│ ├── airfoil3d.py
│ ├── box-in-box.py
│ ├── clean.sh
│ ├── demo.py
│ ├── jw_mesh_examples.ipynb
│ ├── jw_meshtools.py
│ ├── ka-6d.ply
│ ├── mesh_ply.py
│ ├── nico_mesh.py
│ ├── test_ball.py
│ ├── test_cylinder.py
│ ├── test_tet_torus.py
│ ├── test_tetgen.py
│ ├── test_tetgen_2.py
│ ├── test_tri_pml.py
│ ├── test_tri_quadratic.py
│ ├── test_tri_simple_square.py
│ ├── test_triangle.py
│ ├── test_triangle_refine.py
│ ├── test_triangle_with_specified_points.py
│ ├── tet-size-control.py
│ ├── tri-boundary-markers.py
│ ├── tri-refinement-spec.py
│ └── write_dolfin.py
├── meshpy/
│ ├── __init__.py
│ ├── common.py
│ ├── geometry.py
│ ├── naca.py
│ ├── ply.py
│ ├── tet.py
│ ├── tools.py
│ └── triangle.py
├── meson.build
├── patches/
│ ├── mk-patch
│ ├── tetgen-1.4.2.patch
│ └── tetgen-1.4.3.patch
├── pyproject.toml
├── src/
│ └── cpp/
│ ├── foreign_array.hpp
│ ├── foreign_array_wrap.hpp
│ ├── predicates.cpp
│ ├── tetgen-LICENSE
│ ├── tetgen.cpp
│ ├── tetgen.h
│ ├── triangle.cpp
│ ├── triangle.h
│ ├── wrap_tetgen.cpp
│ ├── wrap_triangle.cpp
│ └── wrapper.cpp
└── test/
└── test_meshpy.py
SYMBOL INDEX (1241 symbols across 38 files)
FILE: examples/airfoil3d.py
function main (line 1) | def main():
FILE: examples/box-in-box.py
function main (line 1) | def main():
FILE: examples/jw_meshtools.py
function RefineMeshElements (line 13) | def RefineMeshElements(poi, tri, uu, n=1):
function PlotMeshNumbers (line 94) | def PlotMeshNumbers(p, t, edges=None, pltshow=True):
function PlotSurfaceMesh (line 130) | def PlotSurfaceMesh(p, t, color="b"):
function PlotBoundary (line 146) | def PlotBoundary(p, boundary, btype):
function MakeSurfaceMesh (line 192) | def MakeSurfaceMesh(xstr, ystr, zstr, u0, u1, v0, v1, n1, n2):
function MakeSphere (line 299) | def MakeSphere(P0, R, mesh_len, epsilon=1e-8, type="cart"):
function ConnectMesh (line 368) | def ConnectMesh(p1, t1, b1, p2, t2, b2, epsilon=1e-8):
function RetrieveSegments (line 432) | def RetrieveSegments(points, segments, curve_list, Ps, NoSe):
function FindCurveSegments (line 542) | def FindCurveSegments(points, t, func, inner_p=None):
function FindBoundary (line 637) | def FindBoundary(p, t, P1, P2, btype):
function SortEdgeList (line 693) | def SortEdgeList(folly):
function ContourSurface (line 730) | def ContourSurface(p, t, u, iso_in, infig):
function ComputeGradient (line 783) | def ComputeGradient(p, t, u, poi=None, num=10):
function FindBoundaryElement (line 859) | def FindBoundaryElement(t, Seg, BoundE):
function NormalDerivative (line 883) | def NormalDerivative(boundary, p, tt, u, inner=None, BouE=None):
function GetPosition (line 1162) | def GetPosition(allnodes, node):
function TriOrientation (line 1177) | def TriOrientation(p, t):
function FindEdges (line 1201) | def FindEdges(t):
function CheckSegmentSense (line 1242) | def CheckSegmentSense(t, boundary, indices):
function FindNextSegment (line 1273) | def FindNextSegment(all_segments, node):
function SortSegments (line 1322) | def SortSegments(all_segments):
function ConnectBoundary (line 1353) | def ConnectBoundary(boundary_segments, Pall, pstart=None):
function FindClosestNode (line 1427) | def FindClosestNode(nodes, Pall, p0, constraint=-1, tree=None):
function SamePoint (line 1472) | def SamePoint(p1, p2, delta):
function CircleSegments (line 1491) | def CircleSegments(
function LineSegments (line 1523) | def LineSegments(P1, P2, num_points=10, edge_length=-1):
function RectangleSegments (line 1545) | def RectangleSegments(
function ORecSegments (line 1573) | def ORecSegments(
function PointSegments (line 1631) | def PointSegments(p, edge_length=-1):
function AddMultipleSegments (line 1663) | def AddMultipleSegments(*args, **kwargs):
function AddMultipleCurves (line 1684) | def AddMultipleCurves(*allC):
function AddSegments (line 1709) | def AddSegments(P1, P2, closed=False):
function AddCurves (line 1741) | def AddCurves(p1, v1, p2, v2, connect=False, connect_points=None, eps=1e...
function DoTriMesh (line 1796) | def DoTriMesh(
function LoadTriMesh (line 1945) | def LoadTriMesh(filename, show=True):
function WriteXmlMesh (line 1975) | def WriteXmlMesh(filename, p, t, do=None):
function CheckElementList (line 2054) | def CheckElementList(p, t):
function MakeSecondOrderMesh (line 2071) | def MakeSecondOrderMesh(p, t, bou):
function MakeBEMBoundary (line 2114) | def MakeBEMBoundary(p, v, func=False, curves=None):
function ChangeCurveDirection (line 2158) | def ChangeCurveDirection(v):
function DoBemBoundary (line 2170) | def DoBemBoundary(AllBound, show=True, show_numbers=False):
function DoBemDomain (line 2254) | def DoBemDomain(AllDom, CC):
function MakeDomain (line 2286) | def MakeDomain(DomNumb, G, CC, VecB):
FILE: examples/mesh_ply.py
function main (line 1) | def main():
FILE: examples/nico_mesh.py
function main (line 1) | def main():
FILE: examples/test_ball.py
function main (line 1) | def main():
FILE: examples/test_cylinder.py
function main (line 1) | def main():
FILE: examples/test_tet_torus.py
function main (line 1) | def main():
FILE: examples/test_tetgen.py
function main (line 4) | def main():
FILE: examples/test_tetgen_2.py
function main (line 1) | def main():
FILE: examples/test_tri_pml.py
function main (line 1) | def main():
FILE: examples/test_tri_quadratic.py
function loop (line 13) | def loop(a, b):
FILE: examples/test_tri_simple_square.py
function main (line 1) | def main():
FILE: examples/test_triangle.py
function round_trip_connect (line 7) | def round_trip_connect(start, end):
function main (line 11) | def main():
FILE: examples/test_triangle_refine.py
function main (line 1) | def main():
FILE: examples/test_triangle_with_specified_points.py
function main (line 1) | def main():
FILE: examples/tet-size-control.py
function add_to_all_vertex_indices (line 26) | def add_to_all_vertex_indices(facets, increment):
FILE: examples/tri-boundary-markers.py
function round_trip_connect (line 9) | def round_trip_connect(start, end):
function refinement_func (line 13) | def refinement_func(tri_points, area):
function main (line 18) | def main():
FILE: examples/tri-refinement-spec.py
function round_trip_connect (line 9) | def round_trip_connect(start, end):
function main (line 13) | def main():
FILE: examples/write_dolfin.py
function main (line 1) | def main():
FILE: meshpy/common.py
class _Table (line 1) | class _Table:
method __init__ (line 2) | def __init__(self):
method add_row (line 5) | def add_row(self, row):
method __str__ (line 8) | def __str__(self):
function _linebreak_list (line 20) | def _linebreak_list(list, per_line=10, pad=None):
class MeshInfoBase (line 34) | class MeshInfoBase:
method face_vertex_indices_to_face_marker (line 36) | def face_vertex_indices_to_face_marker(self):
method set_points (line 48) | def set_points(self, points, point_markers=None):
method set_holes (line 62) | def set_holes(self, hole_starts):
method write_neu (line 67) | def write_neu(self, outfile, bc=None, periodicity=None,
function dump_array (line 242) | def dump_array(name, array):
FILE: meshpy/geometry.py
function bounding_box (line 41) | def bounding_box(points):
function is_multi_polygon (line 47) | def is_multi_polygon(facets):
function offset_point_indices (line 63) | def offset_point_indices(facets, offset):
class GeometryBuilder (line 72) | class GeometryBuilder:
method __init__ (line 81) | def __init__(self):
method add_geometry (line 88) | def add_geometry(self, points, facets, facet_hole_starts=None,
method add_cycle (line 126) | def add_cycle(self, points, facet_markers=None, point_markers=None):
method dimensions (line 137) | def dimensions(self):
method set (line 140) | def set(self, mesh_info):
method mesher_module (line 152) | def mesher_module(self):
method bounding_box (line 163) | def bounding_box(self):
method center (line 166) | def center(self):
method wrap_in_box (line 170) | def wrap_in_box(self, distance, subdivisions=None):
method apply_transform (line 182) | def apply_transform(self, f):
class Marker (line 190) | class Marker:
function make_box (line 202) | def make_box(a, b, subdivisions=None):
function make_circle (line 280) | def make_circle(r, center=(0, 0), subdivisions=40, marker=Marker.SHELL):
function make_ball (line 296) | def make_ball(r, subdivisions=10):
function make_cylinder (line 313) | def make_cylinder(radius, height, radial_subdivisions=10,
function _is_same_float (line 332) | def _is_same_float(a, b, threshold=1e-10):
function generate_extrusion (line 344) | def generate_extrusion(rz_points, base_shape, closure=EXT_OPEN,
function generate_surface_of_revolution (line 531) | def generate_surface_of_revolution(rz_points,
FILE: meshpy/naca.py
class FourDigitsSymmetric (line 4) | class FourDigitsSymmetric:
method __init__ (line 5) | def __init__(self, thickness, edge_coeff):
method __call__ (line 9) | def __call__(self, x, side):
class FourDigitsCambered (line 35) | class FourDigitsCambered:
method __init__ (line 36) | def __init__(self, thickness, max_camber, max_camber_pos, edge_coeff):
method __call__ (line 42) | def __call__(self, x, side):
class FiveDigits (line 77) | class FiveDigits:
method __init__ (line 78) | def __init__(self, thickness, m, k1, edge_coeff):
method __call__ (line 84) | def __call__(self, x, side):
function get_naca_points (line 120) | def get_naca_points(naca_digits, number_of_points=100,
function write_points (line 225) | def write_points(points, filename):
function main (line 231) | def main():
FILE: meshpy/ply.py
class DataBlock (line 5) | class DataBlock:
function parse_int (line 10) | def parse_int(it):
function parse_float (line 14) | def parse_float(it):
class ListParser (line 18) | class ListParser:
method __init__ (line 19) | def __init__(self, len_parser, item_parser):
method __call__ (line 23) | def __call__(self, it):
function make_parser (line 27) | def make_parser(it):
function parse_ply (line 44) | def parse_ply(name):
FILE: meshpy/tet.py
class MeshInfo (line 5) | class MeshInfo(internals.TetMeshInfo, MeshInfoBase):
method set_facets (line 6) | def set_facets(self, facets, markers=None):
method set_facets_ex (line 40) | def set_facets_ex(self, facets, facet_holestarts=None, markers=None):
method dump (line 92) | def dump(self):
method write_vtk (line 101) | def write_vtk(self, filename):
method set_elements (line 110) | def set_elements(self, elements):
method set_element_constraints (line 116) | def set_element_constraints(self, element_constraints):
class Options (line 126) | class Options(internals.Options):
method __init__ (line 127) | def __init__(self, switches, **kwargs):
function tetrahedralize (line 146) | def tetrahedralize(mesh_info, options):
function build (line 169) | def build(mesh_info, options=None, verbose=False,
FILE: meshpy/tools.py
function uniform_refine_triangles (line 1) | def uniform_refine_triangles(points, elements, factor=2):
function make_swizzle_matrix (line 93) | def make_swizzle_matrix(spec):
FILE: meshpy/triangle.py
class MeshInfo (line 7) | class MeshInfo(internals.TriMeshInfo, MeshInfoBase):
method __getstate__ (line 19) | def __getstate__(self):
method __setstate__ (line 24) | def __setstate__(self, xxx_todo_changeme):
method set_facets (line 46) | def set_facets(self, facets, facet_markers=None):
method dump (line 57) | def dump(self):
function subdivide_facets (line 62) | def subdivide_facets(subdivisions, points, facets, facet_markers=None):
function build (line 124) | def build(mesh_info, verbose=False, refinement_func=None, attributes=False,
function refine (line 199) | def refine(input_p, verbose=False, refinement_func=None, quality_meshin...
function write_gnuplot_mesh (line 225) | def write_gnuplot_mesh(filename, out_p, facets=False):
FILE: src/cpp/foreign_array.hpp
class noncopyable (line 12) | class noncopyable {
method noncopyable (line 14) | noncopyable() = default;
method noncopyable (line 18) | noncopyable(const noncopyable&) = delete;
method noncopyable (line 19) | noncopyable& operator=(const noncopyable&) = delete;
class tSizeChangeNotifier (line 23) | class tSizeChangeNotifier
method setSize (line 48) | virtual void setSize(unsigned size)
method registerForNotification (line 56) | void registerForNotification(tSizeChangeNotificationReceiver *rec)
method unregisterForNotification (line 61) | void unregisterForNotification(tSizeChangeNotificationReceiver *rec)
class tSizeChangeNotificationReceiver (line 28) | class tSizeChangeNotificationReceiver
class tSizeChangeNotifier (line 39) | class tSizeChangeNotifier
method setSize (line 48) | virtual void setSize(unsigned size)
method registerForNotification (line 56) | void registerForNotification(tSizeChangeNotificationReceiver *rec)
method unregisterForNotification (line 61) | void unregisterForNotification(tSizeChangeNotificationReceiver *rec)
class tReadOnlyForeignArray (line 81) | class tReadOnlyForeignArray : public tSizeChangeNotifier, public tSizeCh...
method tReadOnlyForeignArray (line 94) | tReadOnlyForeignArray(
method size (line 129) | unsigned size() const
method unit (line 134) | unsigned unit() const
method is_allocated (line 139) | bool is_allocated()
method deallocate (line 144) | void deallocate()
method setSize (line 151) | void setSize(unsigned size)
method setup (line 159) | void setup()
method notifySizeChange (line 170) | void notifySizeChange(tSizeChangeNotifier *master, unsigned size)
method setSizeInternal (line 180) | void setSizeInternal(unsigned size)
method setUnit (line 202) | void setUnit(unsigned unit)
method fixUnit (line 214) | void fixUnit(unsigned unit)
method ElementT (line 219) | ElementT &get(unsigned index)
method ElementT (line 228) | ElementT &getSub(unsigned index, unsigned sub_index)
class tForeignArray (line 239) | class tForeignArray : public tReadOnlyForeignArray<ElementT>
method tForeignArray (line 244) | tForeignArray(
method set (line 252) | void set(unsigned index, ElementT value)
method setSub (line 261) | void setSub(unsigned index, unsigned sub_index, ElementT value)
method tForeignArray (line 266) | tForeignArray &operator=(tForeignArray const &src)
FILE: src/cpp/foreign_array_wrap.hpp
type tPODForeignArrayWrapHelper (line 28) | struct tPODForeignArrayWrapHelper
method getitem (line 32) | static pybind11::object getitem(FA &self, long idx)
method getitem_tup (line 49) | static pybind11::object getitem_tup(FA &self, pybind11::tuple idx)
method setitem (line 64) | static void setitem(FA &self, long idx, pybind11::object value)
method setitem_tup (line 84) | static void setitem_tup(FA &self, pybind11::tuple idx, const value_typ...
type tStructureForeignArrayWrapHelper (line 110) | struct tStructureForeignArrayWrapHelper
method value_type (line 114) | static value_type &getitem(FA &self, long idx)
function exposePODForeignArray (line 128) | void exposePODForeignArray(pybind11::module &m,const std::string &name)
function exposeStructureForeignArray (line 152) | void exposeStructureForeignArray(pybind11::module &m, const std::string ...
FILE: src/cpp/predicates.cpp
type predicates (line 128) | namespace predicates {
function fppow2 (line 404) | double fppow2(int n)
function fstore (line 417) | float fstore(float x)
function test_float (line 422) | int test_float(int verbose)
function dstore (line 472) | double dstore(double x)
function test_double (line 477) | int test_double(int verbose)
function exactinit (line 546) | void exactinit(int verbose, int noexact, int nofilter, REAL maxx, REAL...
function exactdeinit (line 656) | void exactdeinit()
function grow_expansion (line 677) | int grow_expansion(int elen, REAL *e, REAL b, REAL *h)
function grow_expansion_zeroelim (line 711) | int grow_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
function expansion_sum (line 750) | int expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
function expansion_sum_zeroelim1 (line 794) | int expansion_sum_zeroelim1(int elen, REAL *e, int flen, REAL *f, REAL...
function expansion_sum_zeroelim2 (line 849) | int expansion_sum_zeroelim2(int elen, REAL *e, int flen, REAL *f, REAL...
function fast_expansion_sum (line 901) | int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
function fast_expansion_sum_zeroelim (line 974) | int fast_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f, ...
function linear_expansion_sum (line 1055) | int linear_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
function linear_expansion_sum_zeroelim (line 1115) | int linear_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f,
function scale_expansion (line 1186) | int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
function scale_expansion_zeroelim (line 1232) | int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
function compress (line 1284) | int compress(int elen, REAL *e, REAL *h)
function REAL (line 1327) | REAL estimate(int elen, REAL *e)
function REAL (line 1365) | REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
function REAL (line 1376) | REAL orient2dexact(REAL *pa, REAL *pb, REAL *pc)
function REAL (line 1418) | REAL orient2dslow(REAL *pa, REAL *pb, REAL *pc)
function REAL (line 1459) | REAL orient2dadapt(REAL *pa, REAL *pb, REAL *pc, REAL detsum)
function REAL (line 1539) | REAL orient2d(REAL *pa, REAL *pb, REAL *pc)
function REAL (line 1601) | REAL orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 1622) | REAL orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 1699) | REAL orient3dslow(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 1791) | REAL orient3dadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL perman...
function REAL (line 2195) | REAL orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 2207) | REAL orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 2289) | REAL incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 2312) | REAL incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 2410) | REAL incircleslow(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 2566) | REAL incircleadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL perman...
function REAL (line 3138) | REAL incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 3207) | REAL inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
function REAL (line 3250) | REAL insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
function REAL (line 3503) | REAL insphereslow(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
function REAL (line 3832) | REAL insphereadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe,
function REAL (line 4050) | REAL insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
function REAL (line 4063) | REAL insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
function REAL (line 4202) | REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
function REAL (line 4417) | REAL orient4dadapt(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
function REAL (line 4613) | REAL orient4d(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
FILE: src/cpp/tetgen.cpp
function swapBytes (line 2124) | void swapBytes(unsigned char* var, int size)
function testIsBigEndian (line 2136) | bool testIsBigEndian()
type verttype (line 4522) | enum verttype
function REAL (line 4864) | REAL tetgenmesh::insphere_s(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL...
function REAL (line 4933) | REAL tetgenmesh::orient4d_s(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL...
function REAL (line 6140) | REAL tetgenmesh::incircle3d(point pa, point pb, point pc, point pd)
function REAL (line 6257) | REAL tetgenmesh::shortdistance(REAL* p, REAL* e1, REAL* e2)
function REAL (line 6286) | REAL tetgenmesh::triarea(REAL* pa, REAL* pb, REAL* pc)
function REAL (line 6303) | REAL tetgenmesh::orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
function REAL (line 6337) | REAL tetgenmesh::interiorangle(REAL* o, REAL* p1, REAL* p2, REAL* n)
function REAL (line 6449) | REAL tetgenmesh::facedihedral(REAL* pa, REAL* pb, REAL* pc1, REAL* pc2)
function REAL (line 6628) | REAL tetgenmesh::tetaspectratio(point pa, point pb, point pc, point pd)
function REAL (line 6919) | REAL tetgenmesh::tetprismvol(REAL* p0, REAL* p1, REAL* p2, REAL* p3)
type locateresult (line 9018) | enum locateresult
type locateresult (line 9031) | enum locateresult
type tetgenmesh::locateresult (line 11027) | enum tetgenmesh::locateresult
type locateresult (line 11033) | enum locateresult
type locateresult (line 12112) | enum locateresult
type locateresult (line 12129) | enum locateresult
type tetgenmesh::locateresult (line 12925) | enum tetgenmesh::locateresult
type locateresult (line 12930) | enum locateresult
type tetgenmesh::interresult (line 13128) | enum tetgenmesh::interresult
type interresult (line 13134) | enum interresult
type locateresult (line 13320) | enum locateresult
type locateresult (line 13542) | enum locateresult
type interresult (line 14413) | enum interresult
type interresult (line 14517) | enum interresult
type tetgenmesh::interresult (line 14731) | enum tetgenmesh::interresult
type tetgenmesh::interresult (line 14933) | enum tetgenmesh::interresult
type interresult (line 14938) | enum interresult
type interresult (line 15039) | enum interresult
type interresult (line 15061) | enum interresult
type interresult (line 15220) | enum interresult
type locateresult (line 15279) | enum locateresult
type tetgenmesh::interresult (line 15304) | enum tetgenmesh::interresult
type interresult (line 15309) | enum interresult
type interresult (line 15393) | enum interresult
type interresult (line 15499) | enum interresult
type interresult (line 15532) | enum interresult
type interresult (line 15601) | enum interresult
type interresult (line 15693) | enum interresult
type interresult (line 15706) | enum interresult
type interresult (line 15910) | enum interresult
type interresult (line 17802) | enum interresult
type interresult (line 17944) | enum interresult
type interresult (line 18288) | enum interresult
type interresult (line 18308) | enum interresult
type interresult (line 18321) | enum interresult
type interresult (line 18340) | enum interresult
type interresult (line 18347) | enum interresult
type interresult (line 18366) | enum interresult
type interresult (line 18376) | enum interresult
type interresult (line 18683) | enum interresult
type interresult (line 18728) | enum interresult
type interresult (line 18758) | enum interresult
type interresult (line 18783) | enum interresult
type interresult (line 19076) | enum interresult
type interresult (line 19251) | enum interresult
type interresult (line 19572) | enum interresult
type interresult (line 19624) | enum interresult
type interresult (line 19737) | enum interresult
type interresult (line 20273) | enum interresult
type verttype (line 20366) | enum verttype
type locateresult (line 20367) | enum locateresult
type locateresult (line 23157) | enum locateresult
function REAL (line 23330) | REAL tetgenmesh::getpointmeshsize(point searchpt, triface *searchtet, in...
function tetrahedralize (line 30869) | void tetrahedralize(tetgenbehavior *b, tetgenio *in, tetgenio *out,
FILE: src/cpp/tetgen.h
type __int64 (line 68) | typedef __int64 intptr_t;
function class (line 114) | class tetgenio {
function class (line 572) | class tetgenbehavior {
function namespace (line 794) | namespace predicates {
function class (line 811) | class tetgenmesh {
function terminatetetgen (line 2243) | inline void terminatetetgen(tetgenmesh *m, int x)
function decode (line 2302) | inline void tetgenmesh::decode(tetrahedron ptr, triface& t) {
function bond (line 2310) | inline void tetgenmesh::bond(triface& t1, triface& t2) {
function dissolve (line 2318) | inline void tetgenmesh::dissolve(triface& t) {
function enext (line 2324) | inline void tetgenmesh::enext(triface& t1, triface& t2) {
function enextself (line 2329) | inline void tetgenmesh::enextself(triface& t) {
function eprev (line 2335) | inline void tetgenmesh::eprev(triface& t1, triface& t2) {
function eprevself (line 2340) | inline void tetgenmesh::eprevself(triface& t) {
function esym (line 2347) | inline void tetgenmesh::esym(triface& t1, triface& t2) {
function esymself (line 2352) | inline void tetgenmesh::esymself(triface& t) {
function enextesym (line 2359) | inline void tetgenmesh::enextesym(triface& t1, triface& t2) {
function enextesymself (line 2364) | inline void tetgenmesh::enextesymself(triface& t) {
function eprevesym (line 2370) | inline void tetgenmesh::eprevesym(triface& t1, triface& t2) {
function eprevesymself (line 2375) | inline void tetgenmesh::eprevesymself(triface& t) {
function eorgoppo (line 2382) | inline void tetgenmesh::eorgoppo(triface& t1, triface& t2) {
function eorgoppoself (line 2387) | inline void tetgenmesh::eorgoppoself(triface& t) {
function edestoppo (line 2394) | inline void tetgenmesh::edestoppo(triface& t1, triface& t2) {
function edestoppoself (line 2399) | inline void tetgenmesh::edestoppoself(triface& t) {
function fsym (line 2405) | inline void tetgenmesh::fsym(triface& t1, triface& t2) {
function fnext (line 2420) | inline void tetgenmesh::fnext(triface& t1, triface& t2) {
function setorg (line 2451) | inline void tetgenmesh:: setorg(triface& t, point p) {
function setdest (line 2455) | inline void tetgenmesh:: setdest(triface& t, point p) {
function setapex (line 2459) | inline void tetgenmesh:: setapex(triface& t, point p) {
function setoppo (line 2463) | inline void tetgenmesh:: setoppo(triface& t, point p) {
function REAL (line 2475) | inline REAL tetgenmesh::elemattribute(tetrahedron* ptr, int attnum) {
function setelemattribute (line 2479) | inline void tetgenmesh::setelemattribute(tetrahedron* ptr, int attnum,
function REAL (line 2486) | inline REAL tetgenmesh::volumebound(tetrahedron* ptr) {
function setvolumebound (line 2490) | inline void tetgenmesh::setvolumebound(tetrahedron* ptr, REAL value) {
function elemindex (line 2497) | inline int tetgenmesh::elemindex(tetrahedron* ptr) {
function setelemindex (line 2502) | inline void tetgenmesh::setelemindex(tetrahedron* ptr, int value) {
function elemmarker (line 2510) | inline int tetgenmesh::elemmarker(tetrahedron* ptr) {
function setelemmarker (line 2514) | inline void tetgenmesh::setelemmarker(tetrahedron* ptr, int value) {
function infect (line 2522) | inline void tetgenmesh::infect(triface& t) {
function uninfect (line 2526) | inline void tetgenmesh::uninfect(triface& t) {
function infected (line 2530) | inline bool tetgenmesh::infected(triface& t) {
function marktest (line 2537) | inline void tetgenmesh::marktest(triface& t) {
function unmarktest (line 2541) | inline void tetgenmesh::unmarktest(triface& t) {
function marktested (line 2545) | inline bool tetgenmesh::marktested(triface& t) {
function markface (line 2553) | inline void tetgenmesh::markface(triface& t) {
function unmarkface (line 2557) | inline void tetgenmesh::unmarkface(triface& t) {
function facemarked (line 2561) | inline bool tetgenmesh::facemarked(triface& t) {
function markedge (line 2570) | inline void tetgenmesh::markedge(triface& t) {
function unmarkedge (line 2574) | inline void tetgenmesh::unmarkedge(triface& t) {
function edgemarked (line 2578) | inline bool tetgenmesh::edgemarked(triface& t) {
function marktest2 (line 2586) | inline void tetgenmesh::marktest2(triface& t) {
function unmarktest2 (line 2590) | inline void tetgenmesh::unmarktest2(triface& t) {
function marktest2ed (line 2594) | inline bool tetgenmesh::marktest2ed(triface& t) {
function elemcounter (line 2602) | inline int tetgenmesh::elemcounter(triface& t) {
function setelemcounter (line 2606) | inline void tetgenmesh::setelemcounter(triface& t, int value) {
function increaseelemcounter (line 2614) | inline void tetgenmesh::increaseelemcounter(triface& t) {
function decreaseelemcounter (line 2619) | inline void tetgenmesh::decreaseelemcounter(triface& t) {
function ishulltet (line 2626) | inline bool tetgenmesh::ishulltet(triface& t) {
function isdeadtet (line 2632) | inline bool tetgenmesh::isdeadtet(triface& t) {
function sdecode (line 2650) | inline void tetgenmesh::sdecode(shellface sptr, face& s) {
function sbond (line 2666) | inline void tetgenmesh::sbond(face& s1, face& s2)
function sbond1 (line 2676) | inline void tetgenmesh::sbond1(face& s1, face& s2)
function sdissolve (line 2684) | inline void tetgenmesh::sdissolve(face& s)
function spivot (line 2692) | inline void tetgenmesh::spivot(face& s1, face& s2)
function spivotself (line 2698) | inline void tetgenmesh::spivotself(face& s)
function setsorg (line 2722) | inline void tetgenmesh::setsorg(face& s, point pointptr)
function setsdest (line 2727) | inline void tetgenmesh::setsdest(face& s, point pointptr)
function setsapex (line 2732) | inline void tetgenmesh::setsapex(face& s, point pointptr)
function sesym (line 2744) | inline void tetgenmesh::sesym(face& s1, face& s2)
function sesymself (line 2750) | inline void tetgenmesh::sesymself(face& s)
function senext (line 2758) | inline void tetgenmesh::senext(face& s1, face& s2)
function senextself (line 2764) | inline void tetgenmesh::senextself(face& s)
function senext2 (line 2769) | inline void tetgenmesh::senext2(face& s1, face& s2)
function senext2self (line 2775) | inline void tetgenmesh::senext2self(face& s)
function REAL (line 2783) | inline REAL tetgenmesh::areabound(face& s)
function setareabound (line 2788) | inline void tetgenmesh::setareabound(face& s, REAL value)
function shellmark (line 2796) | inline int tetgenmesh::shellmark(face& s)
function setshellmark (line 2801) | inline void tetgenmesh::setshellmark(face& s, int value)
function sinfect (line 2811) | inline void tetgenmesh::sinfect(face& s)
function suninfect (line 2817) | inline void tetgenmesh::suninfect(face& s)
function sinfected (line 2825) | inline bool tetgenmesh::sinfected(face& s)
function smarktest (line 2833) | inline void tetgenmesh::smarktest(face& s)
function sunmarktest (line 2839) | inline void tetgenmesh::sunmarktest(face& s)
function smarktested (line 2845) | inline bool tetgenmesh::smarktested(face& s)
function smarktest2 (line 2853) | inline void tetgenmesh::smarktest2(face& s)
function sunmarktest2 (line 2859) | inline void tetgenmesh::sunmarktest2(face& s)
function smarktest2ed (line 2865) | inline bool tetgenmesh::smarktest2ed(face& s)
function smarktest3 (line 2872) | inline void tetgenmesh::smarktest3(face& s)
function sunmarktest3 (line 2878) | inline void tetgenmesh::sunmarktest3(face& s)
function smarktest3ed (line 2884) | inline bool tetgenmesh::smarktest3ed(face& s)
function setfacetindex (line 2893) | inline void tetgenmesh::setfacetindex(face& s, int value)
function getfacetindex (line 2898) | inline int tetgenmesh::getfacetindex(face& s)
function tsbond (line 2915) | inline void tetgenmesh::tsbond(triface& t, face& s)
function tspivot (line 2938) | inline void tetgenmesh::tspivot(triface& t, face& s)
function stpivot (line 2957) | inline void tetgenmesh::stpivot(face& s, triface& t)
function tsdissolve (line 2973) | inline void tetgenmesh::tsdissolve(triface& t)
function stdissolve (line 2982) | inline void tetgenmesh::stdissolve(face& s)
function ssbond (line 2996) | inline void tetgenmesh::ssbond(face& s, face& edge)
function ssbond1 (line 3002) | inline void tetgenmesh::ssbond1(face& s, face& edge)
function ssdissolve (line 3010) | inline void tetgenmesh::ssdissolve(face& s)
function sspivot (line 3017) | inline void tetgenmesh::sspivot(face& s, face& edge)
function tssbond1 (line 3033) | inline void tetgenmesh::tssbond1(triface& t, face& s)
function sstbond1 (line 3046) | inline void tetgenmesh::sstbond1(face& s, triface& t)
function tssdissolve1 (line 3051) | inline void tetgenmesh::tssdissolve1(triface& t)
function sstdissolve1 (line 3058) | inline void tetgenmesh::sstdissolve1(face& s)
function tsspivot1 (line 3063) | inline void tetgenmesh::tsspivot1(triface& t, face& s)
function sstpivot1 (line 3077) | inline void tetgenmesh::sstpivot1(face& s, triface& t)
function pointmark (line 3088) | inline int tetgenmesh::pointmark(point pt) {
function setpointmark (line 3092) | inline void tetgenmesh::setpointmark(point pt, int value) {
type tetgenmesh (line 3099) | enum tetgenmesh
type verttype (line 3100) | enum verttype
function setpointtype (line 3103) | inline void tetgenmesh::setpointtype(point pt, enum verttype value) {
function pointgeomtag (line 3110) | inline int tetgenmesh::pointgeomtag(point pt) {
function setpointgeomtag (line 3114) | inline void tetgenmesh::setpointgeomtag(point pt, int value) {
function REAL (line 3120) | inline REAL tetgenmesh::pointgeomuv(point pt, int i) {
function setpointgeomuv (line 3124) | inline void tetgenmesh::setpointgeomuv(point pt, int i, REAL value) {
function pinfect (line 3131) | inline void tetgenmesh::pinfect(point pt) {
function puninfect (line 3135) | inline void tetgenmesh::puninfect(point pt) {
function pinfected (line 3139) | inline bool tetgenmesh::pinfected(point pt) {
function pmarktest (line 3146) | inline void tetgenmesh::pmarktest(point pt) {
function punmarktest (line 3150) | inline void tetgenmesh::punmarktest(point pt) {
function pmarktested (line 3154) | inline bool tetgenmesh::pmarktested(point pt) {
function pmarktest2 (line 3158) | inline void tetgenmesh::pmarktest2(point pt) {
function punmarktest2 (line 3162) | inline void tetgenmesh::punmarktest2(point pt) {
function pmarktest2ed (line 3166) | inline bool tetgenmesh::pmarktest2ed(point pt) {
function pmarktest3 (line 3170) | inline void tetgenmesh::pmarktest3(point pt) {
function punmarktest3 (line 3174) | inline void tetgenmesh::punmarktest3(point pt) {
function pmarktest3ed (line 3178) | inline bool tetgenmesh::pmarktest3ed(point pt) {
function setpoint2tet (line 3189) | inline void tetgenmesh::setpoint2tet(point pt, tetrahedron value) {
function setpoint2ppt (line 3197) | inline void tetgenmesh::setpoint2ppt(point pt, point value) {
function setpoint2sh (line 3205) | inline void tetgenmesh::setpoint2sh(point pt, shellface value) {
function setpoint2bgmtet (line 3214) | inline void tetgenmesh::setpoint2bgmtet(point pt, tetrahedron value) {
function setpointinsradius (line 3220) | inline void tetgenmesh::setpointinsradius(point pt, REAL value)
function REAL (line 3225) | inline REAL tetgenmesh::getpointinsradius(point pt)
function point2tetorg (line 3232) | inline void tetgenmesh::point2tetorg(point pa, triface& searchtet)
function point2shorg (line 3249) | inline void tetgenmesh::point2shorg(point pa, face& searchsh)
function REAL (line 3302) | inline REAL tetgenmesh::dot(REAL* v1, REAL* v2)
function cross (line 3308) | inline void tetgenmesh::cross(REAL* v1, REAL* v2, REAL* n)
function REAL (line 3316) | inline REAL tetgenmesh::distance(REAL* p1, REAL* p2)
function REAL (line 3323) | inline REAL tetgenmesh::norm2(REAL x, REAL y, REAL z)
FILE: src/cpp/triangle.cpp
type locateresult (line 377) | enum locateresult {INTRIANGLE, ONEDGE, ONVERTEX, OUTSIDE}
type insertvertexresult (line 385) | enum insertvertexresult {SUCCESSFULVERTEX, ENCROACHINGVERTEX, VIOLATINGV...
type finddirectionresult (line 393) | enum finddirectionresult {WITHIN, LEFTCOLLINEAR, RIGHTCOLLINEAR}
type otri (line 519) | struct otri {
type osub (line 536) | struct osub {
type badsubseg (line 544) | struct badsubseg {
type badtriang (line 553) | struct badtriang {
type badtriang (line 557) | struct badtriang
type flipstacker (line 564) | struct flipstacker {
type flipstacker (line 566) | struct flipstacker
type event (line 579) | struct event {
type splaynode (line 596) | struct splaynode {
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type memorypool (line 625) | struct memorypool {
type mesh (line 658) | struct mesh {
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 745) | struct behavior {
function syntax (line 1465) | void syntax()
function info (line 1545) | void info()
function internalerror (line 3266) | void internalerror(void)
type behavior (line 3282) | struct behavior
type behavior (line 3287) | struct behavior
type mesh (line 3664) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 3664) | struct behavior
type otri (line 3664) | struct otri
type mesh (line 3667) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 3668) | struct behavior
type otri (line 3669) | struct otri
type otri (line 3673) | struct otri
type osub (line 3674) | struct osub
type mesh (line 3758) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 3758) | struct behavior
type osub (line 3758) | struct osub
type mesh (line 3761) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 3762) | struct behavior
type osub (line 3763) | struct osub
type osub (line 3767) | struct osub
type otri (line 3768) | struct otri
type memorypool (line 3852) | struct memorypool
type memorypool (line 3855) | struct memorypool
type memorypool (line 3886) | struct memorypool
type memorypool (line 3889) | struct memorypool
type memorypool (line 3932) | struct memorypool
type memorypool (line 3936) | struct memorypool
type memorypool (line 3980) | struct memorypool
type memorypool (line 3983) | struct memorypool
type memorypool (line 4001) | struct memorypool
type memorypool (line 4064) | struct memorypool
type memorypool (line 4067) | struct memorypool
type memorypool (line 4087) | struct memorypool
type memorypool (line 4090) | struct memorypool
type memorypool (line 4123) | struct memorypool
type mesh (line 4188) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4188) | struct behavior
type mesh (line 4192) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4193) | struct behavior
type mesh (line 4268) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4268) | struct behavior
type mesh (line 4271) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4272) | struct behavior
type mesh (line 4311) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4311) | struct behavior
type mesh (line 4314) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4315) | struct behavior
type mesh (line 4378) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4381) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4399) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4424) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4427) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4445) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4470) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4473) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4491) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4494) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 4519) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badsubseg (line 4519) | struct badsubseg
type mesh (line 4522) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badsubseg (line 4523) | struct badsubseg
type badsubseg (line 4544) | struct badsubseg
type mesh (line 4544) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badsubseg (line 4546) | struct badsubseg
type mesh (line 4547) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badsubseg (line 4551) | struct badsubseg
type badsubseg (line 4554) | struct badsubseg
type badsubseg (line 4555) | struct badsubseg
type badsubseg (line 4556) | struct badsubseg
type mesh (line 4577) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4577) | struct behavior
type mesh (line 4580) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4581) | struct behavior
type mesh (line 4618) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4618) | struct behavior
type mesh (line 4621) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4622) | struct behavior
type mesh (line 4660) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4660) | struct behavior
type otri (line 4660) | struct otri
type mesh (line 4663) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 4664) | struct behavior
type otri (line 4665) | struct otri
type mesh (line 4704) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type osub (line 4704) | struct osub
type mesh (line 4707) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type osub (line 4708) | struct osub
function exactinit (line 4888) | void exactinit(void)
function exactdeinit (line 4948) | void exactdeinit()
type mesh (line 5249) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 5249) | struct behavior
type mesh (line 5253) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 5254) | struct behavior
type mesh (line 5897) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 5897) | struct behavior
type mesh (line 5901) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 5902) | struct behavior
type mesh (line 6404) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6404) | struct behavior
type mesh (line 6409) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6410) | struct behavior
type mesh (line 6487) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6487) | struct behavior
type mesh (line 6491) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6492) | struct behavior
type mesh (line 6528) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6528) | struct behavior
type mesh (line 6534) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6535) | struct behavior
type mesh (line 6642) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 6645) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 6705) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6705) | struct behavior
type mesh (line 6708) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6709) | struct behavior
type otri (line 6713) | struct otri
type otri (line 6714) | struct otri
type mesh (line 6804) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6804) | struct behavior
type mesh (line 6807) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6808) | struct behavior
type otri (line 6812) | struct otri
type otri (line 6813) | struct otri
type osub (line 6814) | struct osub
type mesh (line 6914) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6914) | struct behavior
type badtriang (line 6915) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 6918) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 6919) | struct behavior
type badtriang (line 6920) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 6976) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 6987) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 7003) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 7020) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7020) | struct behavior
type otri (line 7020) | struct otri
type mesh (line 7024) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7025) | struct behavior
type otri (line 7026) | struct otri
type badtriang (line 7034) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 7037) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 7057) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 7057) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badtriang (line 7059) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 7060) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type badtriang (line 7064) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 7068) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 7110) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7110) | struct behavior
type osub (line 7111) | struct osub
type mesh (line 7114) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7115) | struct behavior
type osub (line 7116) | struct osub
type otri (line 7120) | struct otri
type osub (line 7121) | struct osub
type badsubseg (line 7122) | struct badsubseg
type badsubseg (line 7193) | struct badsubseg
type mesh (line 7223) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7223) | struct behavior
type otri (line 7223) | struct otri
type mesh (line 7226) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7227) | struct behavior
type otri (line 7228) | struct otri
type otri (line 7232) | struct otri
type osub (line 7233) | struct osub
type mesh (line 7409) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7409) | struct behavior
type mesh (line 7412) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7413) | struct behavior
type otri (line 7417) | struct otri
type locateresult (line 7504) | enum locateresult
type mesh (line 7504) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7504) | struct behavior
type otri (line 7505) | struct otri
type locateresult (line 7508) | enum locateresult
type mesh (line 7509) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7510) | struct behavior
type otri (line 7512) | struct otri
type otri (line 7517) | struct otri
type osub (line 7518) | struct osub
type locateresult (line 7648) | enum locateresult
type mesh (line 7648) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7648) | struct behavior
type otri (line 7649) | struct otri
type locateresult (line 7651) | enum locateresult
type mesh (line 7652) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7653) | struct behavior
type otri (line 7655) | struct otri
type otri (line 7661) | struct otri
type mesh (line 7819) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7819) | struct behavior
type otri (line 7819) | struct otri
type mesh (line 7823) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7824) | struct behavior
type otri (line 7825) | struct otri
type otri (line 7830) | struct otri
type osub (line 7831) | struct osub
type mesh (line 7923) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7923) | struct behavior
type otri (line 7923) | struct otri
type mesh (line 7926) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 7927) | struct behavior
type otri (line 7928) | struct otri
type otri (line 7932) | struct otri
type otri (line 7933) | struct otri
type otri (line 7934) | struct otri
type otri (line 7935) | struct otri
type otri (line 7936) | struct otri
type osub (line 7937) | struct osub
type osub (line 7938) | struct osub
type mesh (line 8058) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8058) | struct behavior
type otri (line 8058) | struct otri
type mesh (line 8061) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8062) | struct behavior
type otri (line 8063) | struct otri
type otri (line 8067) | struct otri
type otri (line 8068) | struct otri
type otri (line 8069) | struct otri
type otri (line 8070) | struct otri
type otri (line 8071) | struct otri
type osub (line 8072) | struct osub
type osub (line 8073) | struct osub
type insertvertexresult (line 8207) | enum insertvertexresult
type mesh (line 8207) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8207) | struct behavior
type otri (line 8208) | struct otri
type osub (line 8209) | struct osub
type insertvertexresult (line 8212) | enum insertvertexresult
type mesh (line 8214) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8215) | struct behavior
type otri (line 8217) | struct otri
type osub (line 8218) | struct osub
type otri (line 8224) | struct otri
type otri (line 8225) | struct otri
type otri (line 8226) | struct otri
type otri (line 8227) | struct otri
type otri (line 8228) | struct otri
type otri (line 8229) | struct otri
type otri (line 8230) | struct otri
type otri (line 8231) | struct otri
type otri (line 8232) | struct otri
type osub (line 8233) | struct osub
type osub (line 8234) | struct osub
type osub (line 8235) | struct osub
type osub (line 8236) | struct osub
type osub (line 8237) | struct osub
type osub (line 8238) | struct osub
type badsubseg (line 8239) | struct badsubseg
type flipstacker (line 8240) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type insertvertexresult (line 8246) | enum insertvertexresult
type locateresult (line 8247) | enum locateresult
type osub (line 8259) | struct osub
type osub (line 8290) | struct osub
type badsubseg (line 8305) | struct badsubseg
type osub (line 8404) | struct osub
type flipstacker (line 8428) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 8430) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 8543) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 8545) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 8721) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type mesh (line 8864) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8864) | struct behavior
type otri (line 8865) | struct otri
type otri (line 8865) | struct otri
type mesh (line 8869) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8870) | struct behavior
type otri (line 8871) | struct otri
type otri (line 8872) | struct otri
type otri (line 8879) | struct otri
type otri (line 8880) | struct otri
type otri (line 8881) | struct otri
type mesh (line 8963) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8963) | struct behavior
type otri (line 8963) | struct otri
type mesh (line 8966) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 8967) | struct behavior
type otri (line 8968) | struct otri
type otri (line 8972) | struct otri
type otri (line 8973) | struct otri
type otri (line 8974) | struct otri
type otri (line 8975) | struct otri
type otri (line 8976) | struct otri
type osub (line 8977) | struct osub
type mesh (line 9066) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9066) | struct behavior
type mesh (line 9069) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9070) | struct behavior
type otri (line 9074) | struct otri
type otri (line 9075) | struct otri
type otri (line 9076) | struct otri
type otri (line 9077) | struct otri
type osub (line 9078) | struct osub
type flipstacker (line 9085) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 9093) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 9117) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type flipstacker (line 9150) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type mesh (line 9429) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9429) | struct behavior
type otri (line 9429) | struct otri
type otri (line 9430) | struct otri
type otri (line 9430) | struct otri
type otri (line 9431) | struct otri
type mesh (line 9434) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9435) | struct behavior
type otri (line 9436) | struct otri
type otri (line 9437) | struct otri
type otri (line 9438) | struct otri
type otri (line 9439) | struct otri
type otri (line 9444) | struct otri
type otri (line 9445) | struct otri
type otri (line 9446) | struct otri
type otri (line 9447) | struct otri
type otri (line 9448) | struct otri
type mesh (line 9756) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9756) | struct behavior
type otri (line 9758) | struct otri
type otri (line 9758) | struct otri
type mesh (line 9761) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9762) | struct behavior
type otri (line 9766) | struct otri
type otri (line 9767) | struct otri
type otri (line 9771) | struct otri
type otri (line 9772) | struct otri
type mesh (line 9920) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9920) | struct behavior
type otri (line 9920) | struct otri
type mesh (line 9923) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9924) | struct behavior
type otri (line 9925) | struct otri
type otri (line 9929) | struct otri
type otri (line 9930) | struct otri
type otri (line 9931) | struct otri
type mesh (line 9983) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9983) | struct behavior
type mesh (line 9986) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 9987) | struct behavior
type otri (line 9992) | struct otri
type mesh (line 10070) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10070) | struct behavior
type mesh (line 10073) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10074) | struct behavior
type otri (line 10078) | struct otri
type mesh (line 10136) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10136) | struct behavior
type mesh (line 10139) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10140) | struct behavior
type otri (line 10144) | struct otri
type otri (line 10145) | struct otri
type otri (line 10146) | struct otri
type otri (line 10147) | struct otri
type mesh (line 10235) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10235) | struct behavior
type mesh (line 10238) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10239) | struct behavior
type otri (line 10243) | struct otri
type osub (line 10255) | struct osub
type event (line 10284) | struct event
type event (line 10284) | struct event
type event (line 10287) | struct event
type event (line 10289) | struct event
type event (line 10325) | struct event
type event (line 10328) | struct event
type event (line 10334) | struct event
type event (line 10381) | struct event
type event (line 10384) | struct event
type event (line 10390) | struct event
type mesh (line 10424) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type event (line 10424) | struct event
type event (line 10425) | struct event
type event (line 10425) | struct event
type mesh (line 10428) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type event (line 10429) | struct event
type event (line 10430) | struct event
type event (line 10431) | struct event
type event (line 10440) | struct event
type event (line 10441) | struct event
type event (line 10442) | struct event
type event (line 10442) | struct event
type event (line 10451) | struct event
type mesh (line 10463) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type otri (line 10463) | struct otri
type mesh (line 10466) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type otri (line 10467) | struct otri
type mesh (line 10502) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type mesh (line 10505) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type otri (line 10536) | struct otri
type event (line 10536) | struct event
type event (line 10537) | struct event
type otri (line 10540) | struct otri
type event (line 10541) | struct event
type event (line 10542) | struct event
type event (line 10547) | struct event
type event (line 10553) | struct event
type splaynode (line 10568) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10568) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10568) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10569) | struct otri
type splaynode (line 10571) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10572) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10573) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10575) | struct otri
type splaynode (line 10579) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10580) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10581) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10585) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10586) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10597) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10603) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10605) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10607) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10621) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10658) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10660) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10662) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10666) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10673) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10687) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10687) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10687) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10688) | struct otri
type splaynode (line 10690) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10691) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10692) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10693) | struct otri
type splaynode (line 10698) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10700) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10703) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10704) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10705) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10709) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10713) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10723) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10723) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10723) | struct behavior
type splaynode (line 10724) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10725) | struct otri
type splaynode (line 10728) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10729) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10730) | struct behavior
type splaynode (line 10731) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10732) | struct otri
type otri (line 10744) | struct otri
type splaynode (line 10764) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10764) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10764) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10765) | struct otri
type otri (line 10766) | struct otri
type splaynode (line 10768) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type mesh (line 10770) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type splaynode (line 10771) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10772) | struct otri
type otri (line 10774) | struct otri
type mesh (line 10799) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10799) | struct behavior
type mesh (line 10802) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 10803) | struct behavior
type event (line 10807) | struct event
type event (line 10808) | struct event
type event (line 10809) | struct event
type event (line 10810) | struct event
type event (line 10811) | struct event
type splaynode (line 10812) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type otri (line 10813) | struct otri
type otri (line 10814) | struct otri
type otri (line 10815) | struct otri
type otri (line 10816) | struct otri
type otri (line 10817) | struct otri
type splaynode (line 10827) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type splaynode (line 10829) | struct splaynode
type otri (line 597) | struct otri
type splaynode (line 599) | struct splaynode
type event (line 10978) | struct event
type event (line 10993) | struct event
type mesh (line 11027) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11027) | struct behavior
type mesh (line 11030) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11031) | struct behavior
type mesh (line 11104) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11104) | struct behavior
type mesh (line 11112) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11113) | struct behavior
type mesh (line 11128) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11128) | struct behavior
type mesh (line 11132) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11133) | struct behavior
type otri (line 11153) | struct otri
type otri (line 11154) | struct otri
type otri (line 11155) | struct otri
type otri (line 11156) | struct otri
type otri (line 11157) | struct otri
type osub (line 11158) | struct osub
type finddirectionresult (line 11604) | enum finddirectionresult
type mesh (line 11604) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11604) | struct behavior
type otri (line 11605) | struct otri
type finddirectionresult (line 11608) | enum finddirectionresult
type mesh (line 11609) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11610) | struct behavior
type otri (line 11611) | struct otri
type otri (line 11616) | struct otri
type mesh (line 11699) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11699) | struct behavior
type otri (line 11700) | struct otri
type osub (line 11700) | struct osub
type mesh (line 11704) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11705) | struct behavior
type otri (line 11706) | struct otri
type osub (line 11707) | struct osub
type osub (line 11712) | struct osub
type insertvertexresult (line 11717) | enum insertvertexresult
type finddirectionresult (line 11718) | enum finddirectionresult
type mesh (line 11826) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11826) | struct behavior
type otri (line 11826) | struct otri
type mesh (line 11830) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11831) | struct behavior
type otri (line 11832) | struct otri
type otri (line 11838) | struct otri
type osub (line 11839) | struct osub
type finddirectionresult (line 11841) | enum finddirectionresult
type mesh (line 11910) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11910) | struct behavior
type mesh (line 11914) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 11915) | struct behavior
type otri (line 11922) | struct otri
type osub (line 11923) | struct osub
type insertvertexresult (line 11926) | enum insertvertexresult
type osub (line 11946) | struct osub
type mesh (line 12040) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12040) | struct behavior
type otri (line 12041) | struct otri
type mesh (line 12044) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12045) | struct behavior
type otri (line 12046) | struct otri
type otri (line 12051) | struct otri
type otri (line 12052) | struct otri
type osub (line 12053) | struct osub
type mesh (line 12160) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12160) | struct behavior
type otri (line 12161) | struct otri
type mesh (line 12164) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12165) | struct behavior
type otri (line 12166) | struct otri
type otri (line 12172) | struct otri
type osub (line 12173) | struct osub
type mesh (line 12262) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12262) | struct behavior
type mesh (line 12266) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12267) | struct behavior
type otri (line 12274) | struct otri
type mesh (line 12374) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12374) | struct behavior
type mesh (line 12377) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12378) | struct behavior
type otri (line 12382) | struct otri
type otri (line 12383) | struct otri
type otri (line 12384) | struct otri
type mesh (line 12420) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12420) | struct behavior
type mesh (line 12424) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12425) | struct behavior
type mesh (line 12434) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12434) | struct behavior
type mesh (line 12438) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12439) | struct behavior
type mesh (line 12587) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12587) | struct behavior
type mesh (line 12590) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12591) | struct behavior
type otri (line 12595) | struct otri
type otri (line 12596) | struct otri
type otri (line 12597) | struct otri
type osub (line 12598) | struct osub
type mesh (line 12669) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12669) | struct behavior
type mesh (line 12672) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12673) | struct behavior
type otri (line 12677) | struct otri
type otri (line 12678) | struct otri
type osub (line 12681) | struct osub
type mesh (line 12879) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12879) | struct behavior
type mesh (line 12883) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12884) | struct behavior
type otri (line 12890) | struct otri
type otri (line 12891) | struct otri
type osub (line 12894) | struct osub
type mesh (line 12992) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12992) | struct behavior
type mesh (line 12996) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 12997) | struct behavior
type otri (line 13005) | struct otri
type otri (line 13006) | struct otri
type otri (line 13007) | struct otri
type locateresult (line 13011) | enum locateresult
type otri (line 13024) | struct otri
type otri (line 13025) | struct otri
type otri (line 13027) | struct otri
type mesh (line 13186) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13186) | struct behavior
type mesh (line 13189) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13190) | struct behavior
type osub (line 13194) | struct osub
function precisionerror (line 13217) | void precisionerror(void)
type mesh (line 13247) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13247) | struct behavior
type mesh (line 13250) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13251) | struct behavior
type otri (line 13256) | struct otri
type otri (line 13257) | struct otri
type osub (line 13258) | struct osub
type osub (line 13259) | struct osub
type badsubseg (line 13260) | struct badsubseg
type insertvertexresult (line 13263) | enum insertvertexresult
type badsubseg (line 13278) | struct badsubseg
type mesh (line 13459) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13459) | struct behavior
type mesh (line 13462) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13463) | struct behavior
type otri (line 13467) | struct otri
type mesh (line 13495) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13495) | struct behavior
type badtriang (line 13496) | struct badtriang
type badtriang (line 557) | struct badtriang
type mesh (line 13499) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13500) | struct behavior
type badtriang (line 13501) | struct badtriang
type badtriang (line 557) | struct badtriang
type otri (line 13505) | struct otri
type insertvertexresult (line 13509) | enum insertvertexresult
type osub (line 13568) | struct osub
type mesh (line 13624) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13624) | struct behavior
type mesh (line 13627) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13628) | struct behavior
type badtriang (line 13632) | struct badtriang
type badtriang (line 557) | struct badtriang
type badsubseg (line 13639) | struct badsubseg
type badtriang (line 13657) | struct badtriang
type badtriang (line 557) | struct badtriang
type badtriang (line 13661) | struct badtriang
type badtriang (line 557) | struct badtriang
type flipstacker (line 13667) | struct flipstacker
type flipstacker (line 566) | struct flipstacker
type mesh (line 13723) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13723) | struct behavior
type mesh (line 13726) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13727) | struct behavior
type otri (line 13731) | struct otri
type osub (line 13732) | struct osub
type mesh (line 13899) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13899) | struct behavior
type mesh (line 13903) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 13904) | struct behavior
type mesh (line 14096) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14096) | struct behavior
type mesh (line 14102) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14103) | struct behavior
type mesh (line 14181) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14181) | struct behavior
type mesh (line 14186) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14187) | struct behavior
type mesh (line 14334) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14334) | struct behavior
type mesh (line 14338) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14339) | struct behavior
type mesh (line 14348) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14348) | struct behavior
type mesh (line 14352) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14353) | struct behavior
type mesh (line 14474) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14474) | struct behavior
type mesh (line 14477) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14478) | struct behavior
type mesh (line 14506) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14506) | struct behavior
type mesh (line 14510) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14511) | struct behavior
type mesh (line 14519) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14519) | struct behavior
type mesh (line 14523) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14524) | struct behavior
type otri (line 14541) | struct otri
type mesh (line 14647) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14647) | struct behavior
type mesh (line 14651) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14652) | struct behavior
type mesh (line 14660) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14660) | struct behavior
type mesh (line 14666) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14667) | struct behavior
type osub (line 14688) | struct osub
type mesh (line 14793) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14793) | struct behavior
type mesh (line 14797) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14798) | struct behavior
type mesh (line 14806) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14806) | struct behavior
type mesh (line 14810) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14811) | struct behavior
type otri (line 14827) | struct otri
type osub (line 14828) | struct osub
type mesh (line 14947) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14947) | struct behavior
type mesh (line 14953) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14954) | struct behavior
type mesh (line 14966) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14966) | struct behavior
type mesh (line 14970) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 14971) | struct behavior
type otri (line 14991) | struct otri
type mesh (line 15160) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15160) | struct behavior
type mesh (line 15163) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15164) | struct behavior
type mesh (line 15171) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15171) | struct behavior
type mesh (line 15175) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15176) | struct behavior
type otri (line 15191) | struct otri
type mesh (line 15275) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15275) | struct behavior
type mesh (line 15279) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15280) | struct behavior
type otri (line 15288) | struct otri
type mesh (line 15353) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15353) | struct behavior
type mesh (line 15356) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15357) | struct behavior
type otri (line 15361) | struct otri
type mesh (line 15560) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15560) | struct behavior
type mesh (line 15563) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15564) | struct behavior
type triangulateio (line 15680) | struct triangulateio
type triangulateio (line 15681) | struct triangulateio
type triangulateio (line 15681) | struct triangulateio
type triangulateio (line 15685) | struct triangulateio
type triangulateio (line 15686) | struct triangulateio
type triangulateio (line 15687) | struct triangulateio
type mesh (line 15703) | struct mesh
type memorypool (line 664) | struct memorypool
type memorypool (line 665) | struct memorypool
type memorypool (line 666) | struct memorypool
type memorypool (line 667) | struct memorypool
type memorypool (line 668) | struct memorypool
type memorypool (line 669) | struct memorypool
type memorypool (line 670) | struct memorypool
type memorypool (line 671) | struct memorypool
type badtriang (line 676) | struct badtriang
type badtriang (line 677) | struct badtriang
type flipstacker (line 683) | struct flipstacker
type otri (line 737) | struct otri
type behavior (line 15704) | struct behavior
type timeval (line 15713) | struct timeval
type timezone (line 15714) | struct timezone
type triangulateio (line 15884) | struct triangulateio
FILE: src/cpp/triangle.h
type REAL (line 274) | typedef REAL *vertex;
type triangulateio (line 278) | struct triangulateio {
type triangulateio (line 310) | struct triangulateio
type triangulateio (line 310) | struct triangulateio
type triangulateio (line 311) | struct triangulateio
FILE: src/cpp/wrap_tetgen.cpp
type tMeshInfo (line 17) | struct tMeshInfo : public tetgenio, public noncopyable
method tMeshInfo (line 51) | tMeshInfo()
method numberOfPointAttributes (line 84) | unsigned numberOfPointAttributes() const
method numberOfPointMetricTensors (line 89) | unsigned numberOfPointMetricTensors() const
method numberOfElementVertices (line 94) | unsigned numberOfElementVertices() const
method numberOfElementAttributes (line 99) | unsigned numberOfElementAttributes() const
method setNumberOfPointAttributes (line 104) | void setNumberOfPointAttributes(unsigned attrs)
method setNumberOfPointMetricTensors (line 110) | void setNumberOfPointMetricTensors(unsigned mtrs)
method setNumberOfElementVertices (line 116) | void setNumberOfElementVertices(unsigned verts)
method setNumberOfElementAttributes (line 122) | void setNumberOfElementAttributes(unsigned attrs)
method load_plc (line 145) | void load_plc(char* filename, int object)
method load_medit (line 151) | void load_medit(char* filename, int object)
method load_tetmesh (line 157) | void load_tetmesh(char* filename, int object)
function tetrahedralizeWrapper (line 211) | void tetrahedralizeWrapper(tetgenbehavior &bhv, tMeshInfo &in, tMeshInfo...
function expose_tetgen (line 265) | void expose_tetgen(pybind11::module &m)
FILE: src/cpp/wrap_triangle.cpp
type tMeshInfo (line 13) | struct tMeshInfo : public triangulateio, public noncopyable
method tMeshInfo (line 37) | tMeshInfo()
method numberOfPointAttributes (line 66) | unsigned numberOfPointAttributes() const
method numberOfElementAttributes (line 71) | unsigned numberOfElementAttributes() const
method setNumberOfPointAttributes (line 76) | void setNumberOfPointAttributes(unsigned attrs)
method setNumberOfElementAttributes (line 82) | void setNumberOfElementAttributes(unsigned attrs)
method tMeshInfo (line 88) | tMeshInfo &operator=(const tMeshInfo &src)
function tMeshInfo (line 121) | tMeshInfo *copyMesh(const tMeshInfo &src)
method tMeshInfo (line 37) | tMeshInfo()
method numberOfPointAttributes (line 66) | unsigned numberOfPointAttributes() const
method numberOfElementAttributes (line 71) | unsigned numberOfElementAttributes() const
method setNumberOfPointAttributes (line 76) | void setNumberOfPointAttributes(unsigned attrs)
method setNumberOfElementAttributes (line 82) | void setNumberOfElementAttributes(unsigned attrs)
method tMeshInfo (line 88) | tMeshInfo &operator=(const tMeshInfo &src)
class tVertex (line 136) | class tVertex : public noncopyable
method tVertex (line 142) | tVertex(REAL *data)
method REAL (line 147) | REAL operator[](unsigned i)
method size (line 154) | unsigned size()
method REAL (line 159) | REAL x() { return Data[0]; }
method REAL (line 160) | REAL y() { return Data[1]; }
function triunsuitable (line 166) | int triunsuitable(vertex triorg, vertex tridest, vertex triapex, REAL area)
function triangulateWrapper (line 204) | void triangulateWrapper(char *options, tMeshInfo &in,
function expose_triangle (line 226) | void expose_triangle(pybind11::module &m)
FILE: src/cpp/wrapper.cpp
function PYBIND11_MODULE (line 7) | PYBIND11_MODULE(_internals, m)
FILE: test/test_meshpy.py
function test_triangle_refine (line 28) | def test_triangle_refine():
function test_point_attributes (line 75) | def test_point_attributes():
function test_tetgen (line 96) | def test_tetgen():
function test_torus (line 123) | def test_torus():
function test_tetgen_points (line 152) | def test_tetgen_points():
Condensed preview — 71 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,531K chars).
[
{
"path": ".editorconfig",
"chars": 537,
"preview": "# https://editorconfig.org/\n# https://github.com/editorconfig/editorconfig-vim\n# https://github.com/editorconfig/editorc"
},
{
"path": ".gitattributes",
"chars": 106,
"preview": ".github/ export-ignore\n.gitignore export-ignore\n.gitattributes export-ignore\n.gitlab-ci.yml export-ignore\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 603,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n**Describe the "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 365,
"preview": "\nblank_issues_enabled: true\ncontact_links:\n - name: ❓ Question\n url: https://github.com/inducer/meshpy/discussions/c"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 604,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\n**Is"
},
{
"path": ".github/dependabot.yml",
"chars": 267,
"preview": "version: 2\nupdates:\n # Set update schedule for GitHub Actions\n - package-ecosystem: \"github-actions\"\n directo"
},
{
"path": ".github/workflows/autopush.yml",
"chars": 530,
"preview": "name: Gitlab mirror\non:\n push:\n branches:\n - main\n\njobs:\n autopush:\n name: Automatic push to "
},
{
"path": ".github/workflows/ci.yml",
"chars": 2463,
"preview": "name: CI\non:\n push:\n branches:\n - main\n pull_request:\n schedule:\n - cron: '17 3 * * 0'\n\nc"
},
{
"path": ".github/workflows/wheels.yml",
"chars": 1651,
"preview": "name: Build wheels\n# inspired by: https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml\n\non:\n push:"
},
{
"path": ".gitignore",
"chars": 349,
"preview": "build\n*.dat\ntest/*.lua\nMANIFEST\n*.vtk\n*.ele\n*.face\n*.neu\n*.poly\n*.node\n.*.swp\ntest/ParaViewTrace*.pvs\ndist\n*~\nMakefile\ns"
},
{
"path": ".gitlab-ci.yml",
"chars": 815,
"preview": "Ruff:\n script: |\n pipx install ruff\n ruff check\n tags:\n - docker-runner\n except:\n -"
},
{
"path": "CITATION.cff",
"chars": 862,
"preview": "cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n- family-names: \"Kloeckner\"\n "
},
{
"path": "LICENSE",
"chars": 4993,
"preview": "-------------------------------------------------------------------------------\nTriangle License\n-----------------------"
},
{
"path": "README.rst",
"chars": 1762,
"preview": "MeshPy: Simplicial Mesh Generation from Python\n==============================================\n\n.. image:: https://gitlab"
},
{
"path": "doc/conf.py",
"chars": 401,
"preview": "from importlib import metadata\nfrom urllib.request import urlopen\n\n\n_conf_url = \\\n \"https://raw.githubusercontent"
},
{
"path": "doc/faq.rst",
"chars": 4261,
"preview": "Licensing Information\n=====================\n\nWrapper License\n---------------\n\nMeshPy (the wrapper) is licensed to you un"
},
{
"path": "doc/geometry.rst",
"chars": 73,
"preview": "Geometry Generation\n===================\n\n.. automodule:: meshpy.geometry\n"
},
{
"path": "doc/index.rst",
"chars": 2146,
"preview": "Welcome to MeshPy's documentation!\n==================================\n\n.. toctree::\n :maxdepth: 2\n :hidden:\n\n i"
},
{
"path": "doc/installation.rst",
"chars": 2085,
"preview": ".. highlight:: sh\n\nInstallation\n============\n\nThis tutorial will walk you through the process of building MeshPy. To fol"
},
{
"path": "doc/tri-tet.rst",
"chars": 12141,
"preview": "Triangle/TetGen interface\n=========================\n\n.. module:: meshpy\n\nSome common notions\n-------------------\n\n.. cla"
},
{
"path": "doc/upload-docs.sh",
"chars": 82,
"preview": "#! /bin/sh\n\nrsync --verbose --archive --delete .build/html/ doc-upload:doc/meshpy\n"
},
{
"path": "examples/MESH_README.txt",
"chars": 690,
"preview": "-------------------------------------------------------------------------------\nMesh licensing \n------------------------"
},
{
"path": "examples/airfoil3d.py",
"chars": 2203,
"preview": "def main():\n import numpy\n\n from meshpy.geometry import GeometryBuilder, Marker, generate_extrusion, make_box\n "
},
{
"path": "examples/box-in-box.py",
"chars": 1112,
"preview": "def main():\n import numpy\n\n from meshpy.geometry import GeometryBuilder, Marker, make_box\n from meshpy.tet impo"
},
{
"path": "examples/clean.sh",
"chars": 43,
"preview": "#! /bin/sh\nrm -f *.{vtk,ele,poly,node,lua}\n"
},
{
"path": "examples/demo.py",
"chars": 660,
"preview": "from meshpy.tet import MeshInfo, build\n\n\nmesh_info = MeshInfo()\nmesh_info.set_points(\n [\n (0, 0, 0),\n ("
},
{
"path": "examples/jw_mesh_examples.ipynb",
"chars": 25436,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82dbbafd-ed23-43fd-924b-1916d0ea7dca\",\n \"metadata\": {},\n \"so"
},
{
"path": "examples/jw_meshtools.py",
"chars": 69646,
"preview": "\"\"\"Toolbox for generating a mesh.\"\"\"\n\nfrom collections import Counter\n\nimport matplotlib.pyplot as plt\nimport numpy as n"
},
{
"path": "examples/ka-6d.ply",
"chars": 51863,
"preview": "ply\nformat ascii 1.0\ncomment VCGLIB generated\nelement vertex 911\nproperty float x\nproperty float y\nproperty float z\nelem"
},
{
"path": "examples/mesh_ply.py",
"chars": 598,
"preview": "def main():\n import sys\n\n from ply import parse_ply\n\n data = parse_ply(sys.argv[1])\n\n from meshpy.geometry i"
},
{
"path": "examples/nico_mesh.py",
"chars": 1028,
"preview": "def main():\n import math\n\n from meshpy import triangle\n\n points = [(1, 1), (-1, 1), (-1, -1), (1, -1)]\n\n def"
},
{
"path": "examples/test_ball.py",
"chars": 829,
"preview": "def main():\n from math import cos, pi, sin\n\n from meshpy.geometry import (\n EXT_OPEN,\n GeometryBuild"
},
{
"path": "examples/test_cylinder.py",
"chars": 770,
"preview": "def main():\n from meshpy.geometry import (\n GeometryBuilder,\n generate_surface_of_revolution,\n )\n "
},
{
"path": "examples/test_tet_torus.py",
"chars": 949,
"preview": "def main():\n from math import cos, pi, sin\n\n from meshpy.geometry import (\n EXT_CLOSED_IN_RZ,\n Geome"
},
{
"path": "examples/test_tetgen.py",
"chars": 789,
"preview": "from meshpy.tet import MeshInfo, build\n\n\ndef main():\n mesh_info = MeshInfo()\n\n mesh_info.set_points(\n [\n "
},
{
"path": "examples/test_tetgen_2.py",
"chars": 639,
"preview": "def main():\n from meshpy.geometry import GeometryBuilder, generate_surface_of_revolution\n from meshpy.tet import M"
},
{
"path": "examples/test_tri_pml.py",
"chars": 914,
"preview": "def main():\n from meshpy import triangle\n\n points = [\n (-5, -1),\n (-1, -1),\n (0, -1),\n "
},
{
"path": "examples/test_tri_quadratic.py",
"chars": 1802,
"preview": "# Quadratic element demo, by Aravind Alwan\n\n# Utility function to create lists of the form [(1,2), (2,3), (3,4),\n# (4,1)"
},
{
"path": "examples/test_tri_simple_square.py",
"chars": 546,
"preview": "def main():\n from meshpy import triangle\n\n points = [(1, 1), (-1, 1), (-1, -1), (1, -1)]\n\n def round_trip_conne"
},
{
"path": "examples/test_triangle.py",
"chars": 1165,
"preview": "import numpy as np\nimport numpy.linalg as la\n\nfrom meshpy import triangle\n\n\ndef round_trip_connect(start, end):\n retu"
},
{
"path": "examples/test_triangle_refine.py",
"chars": 1556,
"preview": "def main():\n import math\n\n from meshpy import triangle\n\n segments = 50\n points = [(1, 0), (1, 1), (-1, 1), ("
},
{
"path": "examples/test_triangle_with_specified_points.py",
"chars": 675,
"preview": "def main():\n import numpy as np\n\n from meshpy import triangle\n\n points = [(1, 1), (-1, 1), (-1, -1), (1, -1)]\n\n"
},
{
"path": "examples/tet-size-control.py",
"chars": 1509,
"preview": "from meshpy.tet import MeshInfo, build\n\n\nmesh_info = MeshInfo()\n\n# construct a two-box extrusion of this base\nbase = [(-"
},
{
"path": "examples/tri-boundary-markers.py",
"chars": 1712,
"preview": "# Provided by Liu Benyuan in https://github.com/inducer/meshpy/pull/11\n\n\nimport numpy as np\n\nfrom meshpy import triangle"
},
{
"path": "examples/tri-refinement-spec.py",
"chars": 1479,
"preview": "# Provided by Liu Benyuan in https://github.com/inducer/meshpy/pull/11\n\n\nimport numpy as np\n\nfrom meshpy import triangle"
},
{
"path": "examples/write_dolfin.py",
"chars": 1038,
"preview": "def main():\n from meshpy import triangle\n\n info = triangle.MeshInfo()\n info.set_points([(1.5, 1), (-1.2, 1), (-"
},
{
"path": "meshpy/__init__.py",
"chars": 74,
"preview": "from importlib import metadata\n\n\n__version__ = metadata.version(\"meshpy\")\n"
},
{
"path": "meshpy/common.py",
"chars": 8869,
"preview": "class _Table:\n def __init__(self):\n self.Rows = []\n\n def add_row(self, row):\n self.Rows.append([str("
},
{
"path": "meshpy/geometry.py",
"chars": 17251,
"preview": "__doc__ = \"\"\"\n\nGeometry builder\n----------------\n\n.. autoclass:: GeometryBuilder\n\nGeometries\n----------\n\nThese functions"
},
{
"path": "meshpy/naca.py",
"chars": 8393,
"preview": "import numpy\n\n\nclass FourDigitsSymmetric:\n def __init__(self, thickness, edge_coeff):\n self.thickness = thickn"
},
{
"path": "meshpy/ply.py",
"chars": 2243,
"preview": "from dataclasses import dataclass\n\n\n@dataclass(frozen=True)\nclass DataBlock:\n properties: list[str]\n data: list[st"
},
{
"path": "meshpy/tet.py",
"chars": 6611,
"preview": "import meshpy._internals as internals\nfrom meshpy.common import MeshInfoBase, dump_array\n\n\nclass MeshInfo(internals.TetM"
},
{
"path": "meshpy/tools.py",
"chars": 3716,
"preview": "def uniform_refine_triangles(points, elements, factor=2):\n new_points = points[:]\n new_elements = []\n old_face_"
},
{
"path": "meshpy/triangle.py",
"chars": 7653,
"preview": "from typing import ClassVar\n\nimport meshpy._internals as internals\nfrom meshpy.common import MeshInfoBase, dump_array\n\n\n"
},
{
"path": "meson.build",
"chars": 1130,
"preview": "project('meshpy', 'cpp',\n license: 'MIT',\n meson_version: '>=1.0.0',\n default_options : ['warning_level=2', 'cpp_std="
},
{
"path": "patches/mk-patch",
"chars": 150,
"preview": "#! /bin/sh\n\ndiff -u $1/tetgen.h ../src/cpp/tetgen.h \ndiff -u $1/tetgen.cxx ../src/cpp/tetgen.cpp \ndiff -u $1/predicates."
},
{
"path": "patches/tetgen-1.4.2.patch",
"chars": 6385,
"preview": "--- /home/andreas/tetgen1.4.2/tetgen.h\t2007-04-16 10:45:13.000000000 -0400\n+++ ../src/cpp/tetgen.h\t2007-08-19 03:03:45.0"
},
{
"path": "patches/tetgen-1.4.3.patch",
"chars": 6228,
"preview": "--- /home/andreas/pack/tetgen1.4.3/tetgen.h\t2009-12-13 16:20:33.000000000 -0500\n+++ ../src/cpp/tetgen.h\t2010-01-22 19:41"
},
{
"path": "pyproject.toml",
"chars": 2481,
"preview": "[build-system]\nbuild-backend = \"mesonpy\"\nrequires = [\n \"meson-python\",\n \"numpy\",\n \"wheel\",\n \"pybind11\",\n]\n\n["
},
{
"path": "src/cpp/foreign_array.hpp",
"chars": 6184,
"preview": "#ifndef _HEADER_SEEN_FOREIGN_ARRAY\n#define _HEADER_SEEN_FOREIGN_ARRAY\n\n\n\n\n#include <vector>\n#include <stdexcept>\n\n\n// ht"
},
{
"path": "src/cpp/foreign_array_wrap.hpp",
"chars": 4666,
"preview": "#ifndef _HEADER_SEEN_FOREIGN_ARRAY_WRAP\n#define _HEADER_SEEN_FOREIGN_ARRAY_WRAP\n\n\n\n\n#include \"foreign_array.hpp\"\n#includ"
},
{
"path": "src/cpp/predicates.cpp",
"chars": 193075,
"preview": "/*****************************************************************************/\n/* "
},
{
"path": "src/cpp/tetgen-LICENSE",
"chars": 34789,
"preview": "TetGen License\n--------------\n\nTetGen is distributed under a dual licensing scheme. You can\nredistribute it and/or modif"
},
{
"path": "src/cpp/tetgen.cpp",
"chars": 1098203,
"preview": "///////////////////////////////////////////////////////////////////////////////\n// "
},
{
"path": "src/cpp/tetgen.h",
"chars": 134483,
"preview": "///////////////////////////////////////////////////////////////////////////////\n// "
},
{
"path": "src/cpp/triangle.cpp",
"chars": 650394,
"preview": "/*****************************************************************************/\n/* "
},
{
"path": "src/cpp/triangle.h",
"chars": 22593,
"preview": "#ifndef _HEADER_SEEN_TRIANGLE_H\n#define _HEADER_SEEN_TRIANGLE_H\n\n\n\n\n#ifdef __cplusplus\nextern \"C\"\n{\n#endif\n/************"
},
{
"path": "src/cpp/wrap_tetgen.cpp",
"chars": 12993,
"preview": "#include \"tetgen.h\"\n#include <pybind11/pybind11.h>\n#include <vector>\n#include <stdexcept>\n#include <iostream>\n#include \""
},
{
"path": "src/cpp/wrap_triangle.cpp",
"chars": 7018,
"preview": "#include \"triangle.h\"\n#include <pybind11/pybind11.h>\n#include <stdexcept>\n#include <iostream>\n#include <memory>\n#include"
},
{
"path": "src/cpp/wrapper.cpp",
"chars": 323,
"preview": "#include <pybind11/pybind11.h>\n#include \"foreign_array_wrap.hpp\"\n\nvoid expose_triangle(pybind11::module &m);\nvoid expose"
},
{
"path": "test/test_meshpy.py",
"chars": 4670,
"preview": "__copyright__ = \"Copyright (C) 2013 Andreas Kloeckner\"\n\n__license__ = \"\"\"\nPermission is hereby granted, free of charge, "
}
]
About this extraction
This page contains the full source code of the inducer/meshpy GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 71 files (2.3 MB), approximately 614.9k tokens, and a symbol index with 1241 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.