Merge remote-tracking branch 'cgal/master' into gsoc2022-isosurface

This commit is contained in:
Sven Oesau 2024-10-14 14:42:46 +02:00
commit a06002ab2b
484 changed files with 5656 additions and 7075 deletions

1
.gitattributes vendored
View File

@ -58,7 +58,6 @@ Scripts/developer_scripts/check_svn_keywords text eol=lf
Scripts/developer_scripts/create_cgal_test text eol=lf
Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/create_internal_release text eol=lf
Scripts/developer_scripts/create_macosx_installer text eol=lf
Scripts/developer_scripts/create_new_release text eol=lf
Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf
Scripts/developer_scripts/detect_packages_licenses text eol=lf

View File

@ -1,56 +1,115 @@
name: Documentation
name: Build Documentation
on:
workflow_dispatch:
inputs:
pr_number:
description: 'Pull request number for which the documentation should be built'
type: number
required: true
doc_version:
description: 'Version number of the documentation build'
type: string
required: true
force_build:
description: 'Force the build of the documentation'
type: boolean
required: false
default: false
issue_comment:
types: [created]
env:
author_association: ${{ github.event.comment.author_association }}
comment_body: ${{ github.event.comment.body }}
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
pre_build_checks:
runs-on: ubuntu-latest
name: Trigger the build?
outputs:
trigger_build: ${{ steps.get_doc_version.outputs.result && steps.get_doc_version.outputs.result != '' }}
force_build: ${{ steps.check_comment_body.outputs.force_build }}
pr_number: ${{ steps.get_pr_number.outputs.pr_number }}
doc_version: ${{ steps.get_doc_version.outputs.result }}
steps:
- name: Display inputs
run: |
echo "pr_number=${{ inputs.pr_number || github.event.issue.number }}"
echo "doc_version=${{ inputs.doc_version }}"
echo "force_build=${{ inputs.force_build || startsWith(env.comment_body, '/force-build:') }}"
- name: Check comment body
id: check_comment_body
env:
trigger_build: ${{ inputs && inputs.pr_number || startsWith(env.comment_body, '/build:') || startsWith(env.comment_body, '/force-build:') }}
force_build: ${{ inputs && inputs.force_build || startsWith(env.comment_body, '/force-build:') }}
if: inputs.pr_number || startsWith(env.comment_body, '/build:') || startsWith(env.comment_body, '/force-build:')
run: |
if [ "${trigger_build}" = "false" ]; then
echo "No build requested"
exit 1
fi
echo "force_build=${force_build}" >> $GITHUB_OUTPUT
echo "trigger_build=${trigger_build}" >> $GITHUB_OUTPUT
- name: Check permissions
if: ( steps.check_comment_body.outputs.trigger_build || false ) && (inputs.pr_number || env.author_association == 'OWNER' || env.author_association == 'MEMBER')
run: echo "Authorized"
- name: No permissions
if: ( steps.check_comment_body.outputs.trigger_build || false ) && (! inputs.pr_number && env.author_association != 'OWNER' && env.author_association != 'MEMBER' )
run: |
echo 'ERROR: User ${{ github.actor }} is not allowed to trigger the build of the documentation with /build:* or /force-build:*'
exit 1
- name: Get PR number
if: ( steps.check_comment_body.outputs.trigger_build || false )
id: get_pr_number
env:
pr_number: ${{ inputs.pr_number || github.event.issue.number }}
run: echo "pr_number=$pr_number" >> $GITHUB_OUTPUT
- name: Get doc version
if: ( steps.check_comment_body.outputs.trigger_build || false )
uses: actions/github-script@v7
id: get_doc_version
with:
result-encoding: string
script: |
if ( context.payload.input && context.payload.inputs.doc_version ) {
return context.payload.inputs.doc_version
}
const body = context.payload.comment.body
const re = /\/(force-)?build:(\w+)\s*/;
if(re.test(body)) {
const res = re.exec(body)
return res[2]
}
throw new Error('No version found')
build_doc:
name: |
${{ format('{0}: Build Documentation version "{1}"', github.actor, needs.pre_build_checks.outputs.doc_version) }}
needs: pre_build_checks
permissions:
contents: read # to fetch code (actions/checkout)
pull-requests: write # to create comment
runs-on: ubuntu-latest
env:
force_build: ${{ needs.pre_build_checks.outputs.force_build }}
pr_number: ${{ needs.pre_build_checks.outputs.pr_number }}
doc_version: ${{ needs.pre_build_checks.outputs.doc_version }}
if: ${{ fromJSON(needs.pre_build_checks.outputs.trigger_build || false) }}
steps:
- uses: actions/github-script@v7
id: get_round
with:
result-encoding: string
script: |
const asso = context.payload.comment.author_association
if(asso == 'OWNER' || asso == 'MEMBER') {
const body = context.payload.comment.body
if(body.includes("build:")) {
const re = /\/(force-)?build:(\w+)\s*/;
if(re.test(body)){
const res = re.exec(body)
if(body.includes("force-")) {
return res[2]+":yes"
}
else{
return res[2]+":no"
}
}
}
}
return 'stop'
- uses: actions/github-script@v7
if: steps.get_round.outputs.result != 'stop'
id: get_pr_number
with:
result-encoding: string
script: |
//get pullrequest url
const pr_number = context.payload.issue.number
return pr_number
- name: Emoji-comment
if: github.event_name == 'issue_comment'
continue-on-error: true
uses: actions/github-script@v7
if: steps.get_round.outputs.result != 'stop'
with:
script: |
github.rest.reactions.createForIssueComment({
@ -62,17 +121,23 @@ jobs:
- uses: actions/checkout@v4
name: "checkout branch"
if: steps.get_round.outputs.result != 'stop'
with:
repository: ${{ github.repository }}
ref: refs/pull/${{ steps.get_pr_number.outputs.result }}/merge
fetch-depth: 2
ref: refs/pull/${{ env.pr_number }}/head
fetch-depth: 0
- name: install dependencies
if: steps.get_round.outputs.result != 'stop'
- name: Install dependencies
run: |
set -x
sudo apt-get update && sudo apt-get install -y graphviz ssh bibtex2html
# Install Github CLI `gh`
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y))
sudo mkdir -p -m 755 /etc/apt/keyrings
wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null
sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt-get update && sudo apt-get install -y gh cmake graphviz ssh bibtex2html
sudo pip install lxml
sudo pip install pyquery
wget --no-verbose -O doxygen_exe https://cgal.geometryfactory.com/~cgaltest/doxygen_1_9_6_patched/doxygen
@ -81,36 +146,40 @@ jobs:
git config --global user.email "cgal@geometryfactory.com"
git config --global user.name "cgaltest"
- name: configure all
if: steps.get_round.outputs.result != 'stop'
- name: CMake configuration of Documentation/doc
run: |
set -ex
mkdir -p build_doc && cd build_doc && cmake ../Documentation/doc
- name: Build and Upload Doc
- name: Build and upload Doc
id: build_and_run
if: steps.get_round.outputs.result != 'stop'
env:
GH_TOKEN: ${{ github.token }}
run: |
set -ex
PR_NUMBER=${{ steps.get_pr_number.outputs.result }}
TMP_ROUND=${{ steps.get_round.outputs.result }}
ROUND=$(echo $TMP_ROUND | cut -d ":" -f 1)
force=$(echo $TMP_ROUND | cut -d ":" -f 2)
wget --no-verbose cgal.github.io -O tmp.html
if ! egrep -q "\/$PR_NUMBER\/$ROUND" tmp.html || [ "$force" = "yes" ]; then
PR_NUMBER=$pr_number
ROUND=$doc_version
force=$force_build
wget --no-verbose cgal.github.io -O index.html
if ! egrep -qF "/$PR_NUMBER/$ROUND" index.html || [ "$force" = "yes" ]; then
#list impacted packages
LIST_OF_PKGS=$(git diff --name-only HEAD^1 HEAD |cut -s -d/ -f1 |sort -u | xargs -I {} echo {} && ls -d {}/package_info 2>/dev/null |cut -d/ -f1 |egrep -v Installation||true)
LIST_OF_PKGS=$(git diff --name-only origin/master...HEAD |cut -s -d/ -f1 |sort -u | xargs -I {} echo {} && ls -d {}/package_info 2>/dev/null |cut -d/ -f1 |egrep -v Installation||true)
if [ "$LIST_OF_PKGS" = "" ]; then
echo "DoxygenError=No package affected." >> $GITHUB_OUTPUT
exit 1
fi
for p in $LIST_OF_PKGS; do
if [ -f $p/doc/$p/dependencies ]; then
LIST_OF_PKGS="$LIST_OF_PKGS $(cat $p/doc/$p/dependencies)"
fi
done
LIST_OF_PKGS=$(echo $LIST_OF_PKGS | tr ' ' '\n' | sort -u)
cd build_doc && make -j$(nproc) doc
make -j$(nproc) doc_with_postprocessing 2>tmp.log
if [ -s tmp.log ]; then
content=`cat ./tmp.log`
make -j$(nproc) doc_with_postprocessing 2>build.log
if [ -s build.log ]; then
delimiter="$(openssl rand -hex 8)"
echo "DoxygenError<<${delimiter}" >> "${GITHUB_OUTPUT}"
cat tmp.log >> "${GITHUB_OUTPUT}"
cat build.log >> "${GITHUB_OUTPUT}"
echo "${delimiter}" >> "${GITHUB_OUTPUT}"
exit 1
fi
@ -118,18 +187,16 @@ jobs:
git clone https://CGAL:${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}@github.com/CGAL/cgal.github.io.git
mkdir -p cgal.github.io/${PR_NUMBER}/$ROUND
rm cgal.github.io/${PR_NUMBER}/$ROUND/* -rf
for f in $LIST_OF_PKGS
for f in $LIST_OF_PKGS Manual
do
if [ -d ./build_doc/doc_output/$f ]; then
cp -r ./build_doc/doc_output/$f ./cgal.github.io/${PR_NUMBER}/$ROUND
fi
done
cp -r ./build_doc/doc_output/Manual ./cgal.github.io/${PR_NUMBER}/$ROUND
cd ./cgal.github.io
egrep -v " ${PR_NUMBER}\." index.html > tmp.html || true
echo "<li><a href=https://cgal.github.io/${PR_NUMBER}/$ROUND/Manual/index.html>Manual for PR ${PR_NUMBER} ($ROUND).</a></li>" >> ./tmp.html
mv tmp.html index.html
git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "base commit" && git push -q -f -u origin master
echo "<li><a href=https://cgal.github.io/${PR_NUMBER}/$ROUND/Manual/index.html>Manual for PR ${PR_NUMBER} ($ROUND).</a></li>" >> ./index.html
./cleanup.bash
git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "sole commit" && git push -q -f -u origin master
else
echo "DoxygenError=This round already exists. Overwrite it with /force-build." >> $GITHUB_OUTPUT
exit 1
@ -137,13 +204,11 @@ jobs:
- name: Post address
uses: actions/github-script@v7
if: ${{ success() && steps.get_round.outputs.result != 'stop' }}
if: ${{ success() }}
with:
script: |
const tmp_round = "${{ steps.get_round.outputs.result }}";
const id = tmp_round.indexOf(":");
const round = tmp_round.substring(0,id);
const address = "The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/${{ steps.get_pr_number.outputs.result }}/"+round+"/Manual/index.html"
const round = "${{ env.doc_version }}"
const address = "The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/${{ env.pr_number }}/"+round+"/Manual/index.html"
github.rest.issues.createComment({
owner: "CGAL",
repo: "cgal",
@ -155,7 +220,7 @@ jobs:
env:
ERRORMSG: ${{steps.build_and_run.outputs.DoxygenError}}
uses: actions/github-script@v7
if: ${{ failure() && steps.get_round.outputs.result != 'stop' }}
if: ${{ failure() }}
with:
script: |
const error = process.env.ERRORMSG

View File

@ -1,27 +1,33 @@
name: Documentation Removal
on:
workflow_dispatch:
inputs:
PR_NUMBER:
description: 'Pull request number for which the documentation should be removed'
type: number
required: true
pull_request_target:
types: [closed, removed, workflow_dispatch]
types: [closed]
permissions:
contents: read
jobs:
build:
delete_doc:
permissions:
contents: write # for Git to git push
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: delete directory
- name: delete directory ${{ github.event.inputs.PR_NUMBER || github.event.pull_request.number }}/ in cgal.github.io
env:
PR_NUMBER: ${{ github.event.inputs.PR_NUMBER || github.event.pull_request.number }}
run: |
set -x
git config --global user.email "cgal@geometryfactory.com"
git config --global user.name "cgaltest"
git clone https://CGAL:${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}@github.com/CGAL/cgal.github.io.git
PR_NUMBER=$(python -c "import json; import os; y = json.load(open(os.environ['GITHUB_EVENT_PATH'])); print(y[\"number\"])")
cd cgal.github.io/
egrep -v " ${PR_NUMBER}\." index.html > tmp.html || true
if [ -n "$(diff -q ./index.html ./tmp.html)" ]; then

View File

@ -12,15 +12,15 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: REUSE version
uses: fsfe/reuse-action@v3
uses: fsfe/reuse-action@v4
with:
args: --version
- name: REUSE lint
uses: fsfe/reuse-action@v3
uses: fsfe/reuse-action@v4
with:
args: --include-submodules lint
- name: REUSE SPDX SBOM
uses: fsfe/reuse-action@v3
uses: fsfe/reuse-action@v4
with:
args: spdx
- name: install dependencies
@ -30,6 +30,6 @@ jobs:
mkdir -p ./release
cmake -DDESTINATION=./release -DCGAL_VERSION=9.9 -P ./Scripts/developer_scripts/cgal_create_release_with_cmake.cmake
- name: REUSE lint release tarball
uses: fsfe/reuse-action@v3
uses: fsfe/reuse-action@v4
with:
args: --root ./release/CGAL-9.9 --include-submodules lint

2
.gitignore vendored
View File

@ -1059,7 +1059,7 @@ cmake_install.cmake
*~
.#*
# MacOS file https://en.wikipedia.org/wiki/.DS_Store
# macOS file https://en.wikipedia.org/wiki/.DS_Store
.DS_Store
# Binaries:

View File

@ -1,12 +0,0 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: CGAL
Upstream-Contact: CGAL Editorial Board <info@cgal.org>
Source: https://github.com/CGAL/cgal
Files: .* *.cmake *.md .github/* Maintenance/* */TODO */doc/* */deb/* */applications/* */doc_html/* */scripts/* */developer_scripts/* */demo/* */examples/* */src/* */test/* */benchmarks/* */benchmark/* */package_info/* */data/* */cmake/*
Copyright: 1995-2023 The CGAL Project
License: CC0-1.0
Files: CMakeLists.txt GraphicsView/include/CGAL/Qt/ImageInterface.ui GraphicsView/include/CGAL/Qt/resources/qglviewer-icon.xpm Installation/AUTHORS Installation/CMakeLists.txt Installation/README Installation/auxiliary/cgal_create_cmake_script.1 Installation/auxiliary/gmp/README Installation/include/CGAL/license/gpl_package_list.txt MacOSX/auxiliary/cgal_app.icns copyright
Copyright: 1995-2023 The CGAL Project
License: CC0-1.0

View File

@ -551,7 +551,7 @@ public:
traits.intersection(query, singleton_data());
break;
default: // if(size() >= 2)
root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
}
}

View File

@ -56,7 +56,7 @@ public:
/**
* @brief General traversal query
* @param query the query
* @param traits the traversal traits that define the traversal behaviour
* @param traits the traversal traits that define the traversal behavior
* @param nb_primitives the number of primitive
*
* General traversal query. The traits class allows using it for the various

View File

@ -426,7 +426,7 @@ void test_algebraic_structure_intern(
//commutative
assert(a+b+c==c+b+a);
assert(a*b*c==c*b*a);
//distributiv
//distributive
assert((a-b)*c==a*c-b*c);
assert((a+b)*c==a*c+b*c);
//binom

View File

@ -65,7 +65,7 @@ class Bitstream_descartes;
/*
* \brief Thrown whenever a non-specialised virtual member function is called
* \brief Thrown whenever a non-specialized virtual member function is called
*/
class Virtual_method_exception {};
@ -128,7 +128,7 @@ public:
/*!
* Constructor computing an interval containing all real roots of \c f,
* and initialising the Bitstream Descartes tree
* and initializing the Bitstream Descartes tree
*/
Generic_descartes_rep(Bitstream_descartes_type type,
Polynomial f,
@ -170,7 +170,7 @@ public:
/*!
* Constructor that copies the Bitstream tree given from outside
* and initialising the Bitstream Descartes tree
* and initializing the Bitstream Descartes tree
* The tree must "fit" to the polynomial
*/
Generic_descartes_rep(Bitstream_descartes_type type,
@ -367,7 +367,7 @@ public:
/*!
* \brief When does the isolation algorithm terminate?
*
* This method must be specialised by derived classes
* This method must be specialized by derived classes
*/
virtual bool termination_condition() {
throw Virtual_method_exception();
@ -378,7 +378,7 @@ public:
* \brief gives an opportunity to process the nodes after
* the subdivision steps are finished
*
* This method must be specialised by derived classes, but can
* This method must be specialized by derived classes, but can
* remain empty in many cases.
*/
virtual void process_nodes() {
@ -389,7 +389,7 @@ public:
/*! \brief returns whether the \c i th root is definitely a simple root
* of the isolated polynomial
*
* Must be specialised by derived class
* Must be specialized by derived class
*/
virtual bool is_certainly_simple_root(int) const {
throw Virtual_method_exception();
@ -399,7 +399,7 @@ public:
/*! \brief returns whether the \c i th root is definitely a multiple root
* of the isolated polynomial
*
* Must be specialised by derived class
* Must be specialized by derived class
*/
virtual bool is_certainly_multiple_root(int) const {
throw Virtual_method_exception();
@ -1082,7 +1082,7 @@ protected:
* variant of the Bitstream Descartes method: The Square_free_descartes_tag
* starts the usual Bitstream method for square free integer polynomials.
* With the M_k_descartes tag, it is able to handle one multiple root in
* favourable situations, the Backshear_descartes_tag allows to isolate
* favorable situations, the Backshear_descartes_tag allows to isolate
* even more complicated polynomials, if the multiple roots with even
* multiplicity can be refined from outside. See the corresponding
* constructors for more information.

View File

@ -865,7 +865,7 @@ public:
by trying randomly and checking. This randomization means
the same polynomial and same initial interval may give rise
to different intervals each time this class is used.
As indicated in the paper, we favour subdivision ratios
As indicated in the paper, we favor subdivision ratios
with a small denominator. Hence we first try denominator
2 (subdivision at midpoint), then denominator 16, and
only then the "proper" denominator prescribed by theory.

View File

@ -469,7 +469,7 @@ public:
* (\c SHEAR_ONLY_AT_IRRATIONAL_STRATEGY)
* is to \c shear the curve
* if a degenerate situation is detected during the analysis,
* except at rational x-coordinates where the curve can be analysed
* except at rational x-coordinates where the curve can be analyzed
* more directly. The analysis
* is then performed in the sheared system, and finally translated back
* into the original system.

View File

@ -140,7 +140,7 @@ public:
virtual ~LRU_hashed_map()
{ }
/*! \brief implements cache-like behaviour of the map
/*! \brief implements cache-like behavior of the map
*
* If the object is not in the map, it is constructed using \c Creator
* and added to the map
@ -312,7 +312,7 @@ public:
~LRU_hashed_map_with_kernel()
{ }
/*! \brief implements cache-like behaviour of the map
/*! \brief implements cache-like behavior of the map
*
* If the object is not in the map, it is constructed using \c Creator
* and added to the map

View File

@ -25,7 +25,7 @@ namespace CGAL {
/*!
* \brief Exception class for not sufficiently generic positions.
*
* Must be thrown whenever a curve cannot be analysed because its position
* Must be thrown whenever a curve cannot be analyzed because its position
* is not "good enough".
*/
class Non_generic_position_exception {
@ -40,7 +40,7 @@ namespace CGAL {
/*!
* \brief Exception class for not sufficiently generic positions.
*
* Must be thrown whenever a curve cannot be analysed because its position
* Must be thrown whenever a curve cannot be analyzed because its position
* is not "good enough".
*/
template<typename Polynomial>

View File

@ -76,7 +76,7 @@
/**
* If set, the curve and curve pair analysis are using specialized code
* to analyse conic curves, i.e. curves of degree 2
* to analyze conic curves, i.e. curves of degree 2
*/
#ifndef CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX
#define CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX 0

View File

@ -330,7 +330,7 @@ template<typename Arithmetic_kernel> void test_routine() {
#endif
}
{ // More tests...just analyse some curves and compute their segments
{ // More tests...just analyze some curves and compute their segments
Poly_int2 f = from_string<Poly_int2>("P[8(0,P[8(0,24)(1,-8)(2,-162)(3,204)(4,106)(5,-340)(6,240)(7,-72)(8,8)])(1,P[6(0,-60)(1,8)(2,304)(3,-400)(4,148)(5,8)(6,-8)])(2,P[6(0,18)(1,80)(2,-165)(3,-132)(4,367)(5,-212)(6,38)])(3,P[4(0,-30)(1,-136)(2,264)(3,-72)(4,-26)])(4,P[4(0,-15)(1,36)(2,89)(3,-144)(4,49)])(5,P[2(0,30)(1,-24)(2,-6)])(6,P[2(0,-6)(1,-28)(2,22)])(8,P[0(0,3)])]");
Curve_analysis_2 curve= construct_curve_2(f);
#if CGAL_ACK_DEBUG_FLAG

View File

@ -1638,7 +1638,7 @@ compute_edge_status( const Cell_handle& c,
last=ccirc;
while (is_infinite(ccirc) ) ++ccirc; //skip infinite incident cells
alpha = (*ccirc).get_alpha();
as.set_alpha_mid(alpha); // initialise as.alpha_mid to alpha value of an incident cell
as.set_alpha_mid(alpha); // initialize as.alpha_mid to alpha value of an incident cell
as.set_alpha_max(alpha); // same for as.alpha_max
while (++ccirc != last)
{

View File

@ -218,7 +218,7 @@ test_filtration(AS &A, bool verbose)
typename AS::NT alpha;
if(verbose) {
std::cerr << std::endl;
std::cerr << "Analyse filtration " << std::endl;
std::cerr << "Analyze filtration " << std::endl;
}
for (; filtre_it != filtration.end(); filtre_it++) {
if(assign(vertex, *filtre_it)) {

View File

@ -38,7 +38,6 @@ namespace Qt
{
class Callback;
class ArrangementGraphicsItemBase;
class ArrangementGraphicsItemBase;
class GraphicsViewCurveInputBase;
class GraphicsViewNavigation;
enum class CurveType;

View File

@ -111,13 +111,10 @@ void CurveInputMethod::beginInput_()
static inline void clearPainterPath(QPainterPath& ppath)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
ppath.clear();
#else
ppath = {};
#endif
}
void CurveInputMethod::reset()
{
this->resetInput();

View File

@ -67,11 +67,7 @@ void GridGraphicsItem::setSpacing(int spacing_)
static inline qreal
horizontalAdvance(const QFontMetrics& fm, const QString& text)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
return fm.horizontalAdvance(text);
#else
return fm.boundingRect(text).width();
#endif
}
void GridGraphicsItem::paint(

View File

@ -40,7 +40,7 @@ namespace {
Flag(bool init) : v{ init } {}
};
// EXTENDED AOS for analysing the arrangement
// EXTENDED AOS for analyzing the arrangement
using Ext_dcel = CGAL::Arr_extended_dcel<Geom_traits, Flag, Flag, Flag>;
using Ext_topol_traits =
CGAL::Arr_spherical_topology_traits_2<Geom_traits, Ext_dcel>;

View File

@ -118,7 +118,7 @@ public:
void cleanup_cache() const;
/*!
Returns a pointer to the used algerbaic kernel object.
Returns a pointer to the used algebraic kernel object.
*/
const Algebraic_kernel_d_1* algebraic_kernel_d_1() const;

View File

@ -641,8 +641,7 @@ public:
* \param[in] plane the containing plane.
* \param[in] source the source-point direction.
* \param[in] target the target-point direction.
* \pre Both endpoint lie on the given plane.
* \pre Both endpoint lie on the given plane.
* \pre Both endpoints lie on the given plane.
*/
X_monotone_curve_2 operator()(const Point_2& source, const Point_2& target,
const Direction_3& normal) const
@ -3113,7 +3112,7 @@ public:
* \param is_directed_right is the arc directed from left to right?
* \param is_full is the arc a full circle?
* \param is_degenerate is the arc degenerate (single point)?
* \pre Both endpoint lie on the given plane.
* \pre Both endpoints lie on the given plane.
*/
Arr_x_monotone_geodesic_arc_on_sphere_3
(const Arr_extended_direction_3& src,
@ -3312,8 +3311,7 @@ public:
* \param plane the containing plane.
* \param source the source-point direction.
* \param target the target-point direction.
* \pre Both endpoint lie on the given plane.
* \pre Both endpoint lie on the given plane.
* \pre Both endpoints lie on the given plane.
*/
Arr_x_monotone_geodesic_arc_on_sphere_3
(const Arr_extended_direction_3& source,

View File

@ -339,7 +339,7 @@ public:
if (! valid)
return;
// Analyze the behaviour of the rational function at x = -oo (the source).
// Analyze the behavior of the rational function at x = -oo (the source).
Algebraic y0;
const Arr_parameter_space inf_s =
_analyze_at_minus_infinity (_numer, _denom, y0);
@ -351,7 +351,7 @@ public:
else // if (inf_s == ARR_INTERIOR)
_ps = Point_2 (0, y0);
// Analyze the behaviour of the rational function at x = +oo (the target).
// Analyze the behavior of the rational function at x = +oo (the target).
const Arr_parameter_space inf_t =
_analyze_at_plus_infinity (_numer, _denom, y0);
@ -735,7 +735,7 @@ public:
*/
Self split_at_pole (const Algebraic& x0)
{
// Analyze the behaviour of the function near the given pole.
// Analyze the behavior of the function near the given pole.
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole (x0);
const CGAL::Sign sign_left = signs.first;
const CGAL::Sign sign_right = signs.second;

View File

@ -450,7 +450,7 @@ public:
_info = (_info | IS_DIRECTED_RIGHT);
// Analyze the behaviour of the rational function at x = -oo (the source).
// Analyze the behavior of the rational function at x = -oo (the source).
Algebraic_real_1 y0;
const Arr_parameter_space inf_s = _analyze_at_minus_infinity(P, Q, y0);
@ -460,7 +460,7 @@ public:
_info = (_info | SRC_AT_Y_PLUS_INFTY);
else // if (inf_s == ARR_INTERIOR)
_ps = Algebraic_point_2(); //the point is a dummy
//Analyze the behaviour of the rational function at x = +oo (the target).
//Analyze the behavior of the rational function at x = +oo (the target).
const Arr_parameter_space inf_t = _analyze_at_plus_infinity(P, Q, y0);
if (inf_t == ARR_BOTTOM_BOUNDARY)
@ -949,7 +949,7 @@ public:
Self split_at_pole(const Algebraic_real_1& x0)
{
// Analyze the behaviour of the function near the given pole.
// Analyze the behavior of the function near the given pole.
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole(x0);
const CGAL::Sign sign_left = signs.first;
const CGAL::Sign sign_right = signs.second;

View File

@ -1578,7 +1578,7 @@ public:
return res;
}
// otherwise: both ends have asymptotic behaviour
// otherwise: both ends have asymptotic behavior
if (ps_y1 == ps_y2) { // need special y-comparison
if (ce1 == ce2) { // both ends approach asymptote from one side
Comparison_result res = m_self->compare_x_near_boundary_2_object()(xcv1, xcv2, ce2);

View File

@ -24,7 +24,7 @@
* \brief
* defines class Curve_renderer_traits.
*
* provides specialisations of Curve_renderer_traits for different number
* provides specializations of Curve_renderer_traits for different number
* types compatible with the curve renderer
*/

View File

@ -1237,7 +1237,7 @@ public:
//! \brief checks whether curve has only finitely many self-intersection
//! points, i.e., it has no self-overlapped continuous parts
//!
//! for algerbaic curves this means that supporting polynomial is
//! for algebraic curves this means that supporting polynomial is
//! square-free
struct Has_finite_number_of_self_intersections_2 :
public CGAL::cpp98::unary_function< Polynomial_2, bool > {
@ -1252,7 +1252,7 @@ public:
//! \brief checks whether a curve pair has finitely many intersections,
//! in other words, whether two curves have no continuous common part
//!
//! in case of algerbaic curves: checks whether supporting polynomials are
//! in case of algebraic curves: checks whether supporting polynomials are
//! coprime
struct Has_finite_number_of_intersections_2 :
public CGAL::cpp98::binary_function< Curve_analysis_2, Curve_analysis_2, bool > {

View File

@ -1,6 +1,6 @@
# Input is based on the curves and points indexes from intersect.pt
# intersect.xcv. The first two numbers are the numbers of the input curves
# to be intersected. After that there is the number of intesections and
# to be intersected. After that there is the number of intersections and
# 2-3 numbers representing each intersection. Meaning, the input is of the form:
# intersect <id of 1st x-curve> <id of 2nd x-curve> \
# <expected number of intersections> [<type of intersection> \

View File

@ -9,9 +9,9 @@ find_package(CGAL REQUIRED)
find_package(OpenMesh)
if(OpenMesh_FOUND)
include(UseOpenMesh)
include(CGAL_OpenMesh_support)
create_single_source_cgal_program("TriMesh.cpp")
target_link_libraries(TriMesh PRIVATE ${OPENMESH_LIBRARIES})
target_link_libraries(TriMesh PRIVATE CGAL::OpenMesh_support)
else()
message("NOTICE: This project requires OpenMesh and will not be compiled.")
endif()

View File

@ -18,8 +18,8 @@ create_single_source_cgal_program("copy_polyhedron.cpp")
find_package(OpenMesh QUIET)
if(OpenMesh_FOUND)
target_link_libraries(copy_polyhedron PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(copy_polyhedron PRIVATE -DCGAL_USE_OPENMESH)
include(CGAL_OpenMesh_support)
target_link_libraries(copy_polyhedron PRIVATE CGAL::OpenMesh_support)
else()
message(STATUS "NOTICE: The example 'copy_polyhedron' will not use OpenMesh.")
endif()

View File

@ -733,7 +733,7 @@ struct Graph_with_descriptor_with_graph_property_map {
}
}; // class Graph_with_descriptor_with_graph_property_map
//specialisation for lvaluepropertymaps
//specialization for lvaluepropertymaps
template <typename Graph, typename PM>
struct Graph_with_descriptor_with_graph_property_map<Graph, PM, boost::lvalue_property_map_tag> {

View File

@ -33,6 +33,8 @@ namespace CGAL {
namespace METIS {
#ifndef DOXYGEN_RUNNING
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
void partition_dual_graph(const TriangleMesh& tm,
int nparts,
@ -128,6 +130,8 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts,
return partition_dual_graph(tm, nparts, &options, np);
}
#endif
/// \ingroup PkgBGLPartition
///
/// computes a partition of the input triangular mesh into `nparts` parts,

View File

@ -31,6 +31,8 @@ namespace CGAL {
namespace METIS {
#ifndef DOXYGEN_RUNNING
struct Output_vertex_partition_ids
{
template<typename TriangleMesh, typename Indices>
@ -68,6 +70,8 @@ struct Output_face_partition_ids
}
};
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
void partition_graph(const TriangleMesh& tm,
int nparts,
@ -161,6 +165,9 @@ void partition_graph(const TriangleMesh& tm, int nparts,
return partition_graph(tm, nparts, &options, np);
}
#endif
/// \ingroup PkgBGLPartition
///
/// computes a partition of the input triangular mesh into `nparts` parts, based on the

View File

@ -62,13 +62,15 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
const tm_face_descriptor tm_null_face = boost::graph_traits<TargetMesh>::null_face();
const tm_vertex_descriptor tm_null_vertex = boost::graph_traits<TargetMesh>::null_vertex();
reserve(tm, static_cast<typename boost::graph_traits<TargetMesh>::vertices_size_type>(vertices(tm).size()+vertices(sm).size()),
static_cast<typename boost::graph_traits<TargetMesh>::edges_size_type>(edges(tm).size()+edges(sm).size()),
static_cast<typename boost::graph_traits<TargetMesh>::faces_size_type>(faces(tm).size()+faces(sm).size()) );
reserve(tm, static_cast<typename boost::graph_traits<TargetMesh>::vertices_size_type>(internal::exact_num_vertices(tm)+internal::exact_num_vertices(sm)),
static_cast<typename boost::graph_traits<TargetMesh>::edges_size_type>(internal::exact_num_edges(tm)+internal::exact_num_edges(sm)),
static_cast<typename boost::graph_traits<TargetMesh>::faces_size_type>(internal::exact_num_faces(tm)+internal::exact_num_faces(sm)) );
//insert halfedges and create each vertex when encountering its halfedge
std::vector<tm_edge_descriptor> new_edges;
new_edges.reserve(edges(sm).size());
std::vector<tm_halfedge_descriptor> new_vertices;
new_edges.reserve(internal::exact_num_edges(sm));
new_vertices.reserve(internal::exact_num_vertices(sm));
for(sm_edge_descriptor sm_e : edges(sm))
{
tm_edge_descriptor tm_e = add_edge(tm);
@ -106,6 +108,7 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
tm_vertex_descriptor tm_h_tgt = add_vertex(tm);
*v2v++=std::make_pair(sm_h_tgt, tm_h_tgt);
set_halfedge(tm_h_tgt, tm_h, tm);
new_vertices.push_back(tm_h);
set_target(tm_h, tm_h_tgt, tm);
put(tm_vpm, tm_h_tgt, conv(get(sm_vpm, sm_h_tgt)));
}
@ -116,6 +119,7 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
tm_vertex_descriptor tm_h_src = add_vertex(tm);
*v2v++=std::make_pair(sm_h_src, tm_h_src);
set_halfedge(tm_h_src, tm_h_opp, tm);
new_vertices.push_back(tm_h_opp);
set_target(tm_h_opp, tm_h_src, tm);
put(tm_vpm, tm_h_src, conv(get(sm_vpm, sm_h_src)));
}
@ -163,11 +167,9 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
}
}
// update halfedge vertex of all but the vertex halfedge
for(tm_vertex_descriptor v : vertices(tm))
for(tm_halfedge_descriptor h : new_vertices)
{
tm_halfedge_descriptor h = halfedge(v, tm);
if (h==boost::graph_traits<TargetMesh>::null_halfedge())
continue;
tm_vertex_descriptor v = target(h, tm);
tm_halfedge_descriptor next_around_vertex=h;
do{
next_around_vertex=opposite(next(next_around_vertex, tm), tm);

View File

@ -300,8 +300,8 @@ make_quad(const P& p0, const P& p1, const P& p2, const P& p3, Graph& g)
* \cgalParamNEnd
* \cgalNamedParamsEnd
**/
template<typename P,
typename Graph,
template<typename Graph,
typename P,
typename NamedParameters = parameters::Default_named_parameters>
typename boost::graph_traits<Graph>::halfedge_descriptor
make_hexahedron(const P& p0, const P& p1, const P& p2, const P& p3,

View File

@ -214,11 +214,6 @@ public:
#ifndef DOXYGEN_RUNNING
explicit operator bool() const
{
return (! (this->base() == nullptr));
}
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@ -308,11 +303,6 @@ public:
#ifndef DOXYGEN_RUNNING
explicit operator bool() const
{
return (! (this->base() == nullptr));
}
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@ -400,11 +390,6 @@ public:
pointer operator -> ( ) { return &pos; }
const value_type* operator -> ( ) const { return &pos; }
explicit operator bool() const
{
return (! (this->base() == nullptr));
}
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);

View File

@ -42,50 +42,31 @@ create_single_source_cgal_program("test_deprecated_io.cpp")
find_package(OpenMesh QUIET)
if(OpenMesh_FOUND)
include(UseOpenMesh)
add_definitions(-DCGAL_USE_OPENMESH)
include(CGAL_OpenMesh_support)
target_link_libraries(test_clear PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_clear PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_Euler_operations PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_Euler_operations PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_Collapse_edge PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_Collapse_edge PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_Face_filtered_graph PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_Face_filtered_graph PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_graph_traits PRIVATE ${OPENMESH_LIBRARIES} )
target_compile_definitions(test_graph_traits PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_Properties PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_Properties PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_bgl_read_write PRIVATE ${OPENMESH_LIBRARIES})
target_compile_definitions(test_bgl_read_write PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(test_clear PRIVATE CGAL::OpenMesh_support)
target_link_libraries(test_Euler_operations PRIVATE CGAL::OpenMesh_support)
target_link_libraries(test_Collapse_edge PRIVATE CGAL::OpenMesh_support)
target_link_libraries(test_Face_filtered_graph PRIVATE CGAL::OpenMesh_support)
target_link_libraries(test_graph_traits PRIVATE CGAL::OpenMesh_support )
target_link_libraries(test_Properties PRIVATE CGAL::OpenMesh_support)
target_link_libraries(test_bgl_read_write PRIVATE CGAL::OpenMesh_support)
create_single_source_cgal_program("graph_concept_OpenMesh.cpp")
target_link_libraries(graph_concept_OpenMesh PRIVATE ${OPENMESH_LIBRARIES})
target_link_libraries(graph_concept_OpenMesh PRIVATE CGAL::OpenMesh_support)
else()
message(STATUS "NOTICE: Tests that use OpenMesh will not be compiled.")
endif()
find_package(VTK QUIET COMPONENTS vtkCommonCore vtkIOCore vtkIOLegacy vtkIOXML vtkFiltersCore vtkFiltersSources)
if (VTK_FOUND)
if(VTK_USE_FILE)
include(${VTK_USE_FILE})
endif()
if ("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5)
if(TARGET VTK::CommonCore)
set(VTK_LIBRARIES VTK::CommonCore VTK::IOCore VTK::IOLegacy VTK::IOXML VTK::FiltersCore VTK::FiltersSources)
endif()
if(VTK_LIBRARIES)
find_package(VTK 9.0 QUIET COMPONENTS CommonCore IOCore IOLegacy IOXML FiltersCore FiltersSources)
if (VTK_FOUND AND VTK_LIBRARIES)
message(STATUS "VTK ${VTK_VERSION} found ${VTK_LIBRARIES}")
target_link_libraries(test_bgl_read_write PRIVATE ${VTK_LIBRARIES})
target_compile_definitions(test_bgl_read_write PRIVATE -DCGAL_USE_VTK -DNOMINMAX)
target_link_libraries(test_deprecated_io PRIVATE ${VTK_LIBRARIES})
target_compile_definitions(test_deprecated_io PRIVATE -DCGAL_USE_VTK -DNOMINMAX)
else()
else()
message(STATUS "Tests that use VTK will not be compiled.")
endif()
endif()
endif() #VTK_FOUND
find_path(3MF_INCLUDE_DIR

View File

@ -17,6 +17,7 @@ test_copy_face_graph_nm_umbrella()
T g;
Kernel::Point_3 p(0,0,0);
// make two connected components
CGAL::make_tetrahedron(p, p, p, p, g);
CGAL::make_tetrahedron(p, p, p, p, g);

View File

@ -542,13 +542,13 @@ boundary of each input (linear) polygon as a cyclic sequence of single
(\f$x\f$-monotone) polylines. By default, `UsePolylines` is set to
`CGAL::Tag_true`, which implies that the boundary of the each input
(linear) polygon is treated as a cyclic sequence of (\f$x\f$-monotone)
polylines. In most cases this behaviour is superior (that is, less
polylines. In most cases this behavior is superior (that is, less
time-consuming) because the number of events handled as part of the
execution of the plane-sweep algorithm is reduced. In cases where the
boundaries of the input polygons frequently intersect, treating them
as polylines may become less efficient. In these cases substitute the
`UsePolylines` template parameter with `CGAL::Tag_false` to restore
the original behaviour (where the boundary of each input linear
the original behavior (where the boundary of each input linear
polygon is treated as a cyclic sequence of single \f$x\f$-monotone
segments).

View File

@ -1104,7 +1104,7 @@ do_intersect(const General_polygon_with_holes_2<General_polygon_2<ArrTraits>>& p
* \param traits a traits object.
* \return `true` if `pgn1` and `pgn2` intersect in their interior and `false`
* otherwise.
* \pre `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
*
* \pre `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
*/
template <typename Polygon, typename GpsTraits>

View File

@ -642,6 +642,7 @@ public:
unsigned int i = 1;
for (InputIterator itr = begin; itr != end; ++itr, ++i)
{
ValidationPolicy::is_valid((*itr), *m_traits);
arr_vec[i].first = new Aos_2(m_traits);
_insert(*itr, *(arr_vec[i].first));
}
@ -666,6 +667,7 @@ public:
unsigned int i = 1;
for (InputIterator itr = begin; itr!=end; ++itr, ++i)
{
ValidationPolicy::is_valid((*itr), *m_traits);
arr_vec[i].first = new Aos_2(m_traits);
_insert(*itr, *(arr_vec[i].first));
}

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_2` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the two-dimensional \cgal kernel.
optimization algorithms using the two-dimensional \cgal kernel.
\tparam K must bea model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_3` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the three-dimensional \cgal kernel.
optimization algorithms using the three-dimensional \cgal kernel.
\tparam K must be a model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_d` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel.
optimization algorithms using the \f$ d\f$-dimensional \cgal kernel.
\tparam K must be a model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -71,7 +71,7 @@ namespace CGAL {
std::vector<const Point *> P; // input points
int n; // number of input points, i.e., P.size()
// This class comes in two flavours:
// This class comes in two flavors:
//
// (i) When Embed is false, the input points are taken to be
// ordinary points in R^{d_P}, where d_P is the dimension of the

View File

@ -33,7 +33,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
// they are convertible to double.
// This is indeed the least invasive fix dropint the function that were
// defined here and cause linkage bug.
// You can still have a behaviour of instantiating only if a type
// You can still have a behavior of instantiating only if a type
// is convertibale to double (by using type_traits together with _if)
// but until "the whole design should be overhauled at some point"
// this is fine.

View File

@ -376,7 +376,7 @@ min_rectangle_2(
// quadruple of points defining the current rectangle
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(f, l, curr, t);
// curr[i] can be advanced (cyclically) until it reaches limit[i]
@ -482,7 +482,7 @@ min_parallelogram_2(ForwardIterator f,
// quadruple of points defining the bounding box
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(first, l, curr, t);
@ -659,7 +659,7 @@ min_strip_2(ForwardIterator f,
// quadruple of points defining the bounding box
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(first, l, curr, t);
ForwardIterator low = curr[0];

View File

@ -135,7 +135,7 @@ rectangular_3_center_2_type1(
rad = sdist(v(r, 2), v(r, 0));
// init to prevent default constructor requirement
Point bestpoint = *f;
// (initialisation avoids warning)
// (initialization avoids warning)
unsigned int bestrun = 0;
// two cases: top-left & bottom-right or top-right & bottom-left

View File

@ -11,7 +11,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -12,7 +12,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_traits_2_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -11,7 +11,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_traits_3_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d.h
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_annulus_d.aw
// revision : $Id$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_2.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_3.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_d.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_circle_2/test_Min_circle_2.C
// package : $CGAL_Package: Min_circle_2 $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_circle_2.aw
// revision : $Id$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_ellipse_2/test_Min_ellipse_2.C
// package : $CGAL_Package: Min_ellipse_2 $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_ellipse_2.aw
// revision : $Id$

View File

@ -21,7 +21,7 @@
#include <CGAL/ImageIO.h>
/* read analyse format header
/* read analyze format header
return:
-1: error

View File

@ -108,8 +108,8 @@ typedef std::uint32_t CGAL_UINT32;
*/
/*
* Bitmapfileheader defines a single bitmap image. Its analogue in the
* Windows SDK is the Bitmapfileheader. Its analogues in the OS/2 Toolkit are
* Bitmapfileheader defines a single bitmap image. Its analog in the
* Windows SDK is the Bitmapfileheader. Its analogs in the OS/2 Toolkit are
* the Bitmapfileheader and Bitmapfileheader2 structures.
*
* A BITMAPHEADER structure is always concatenated to the end of a
@ -128,7 +128,7 @@ typedef struct Bitmapfileheader
/*
* BITMAPARRAYHEADER is used to establish a linked list of Bitmapfileheader
* structures for a bitmap file with multiple images in it. There is no
* equivalent structure in the Windows SDK. Its analogues in the OS/2 toolkit
* equivalent structure in the Windows SDK. Its analogs in the OS/2 toolkit
* are the BITMAPARRAYFILEHEADER and BITMAPARRAYFILEHEADER2 structures.
*
* A Bitmapfileheader structure is always concatenated to the end of a
@ -145,9 +145,9 @@ typedef struct BITMAPARRAYHEADER
/*
* BITMAPHEADER defines the properties of a bitmap. Its analogues in the
* BITMAPHEADER defines the properties of a bitmap. Its analogs in the
* Windows SDK are the BITMAPCOREINFOHEADER and BITMAPINFOHEADER structures.
* Its analogues in the OS/2 Toolkit are the BITMAPINFOHEADER and
* Its analogs in the OS/2 Toolkit are the BITMAPINFOHEADER and
* BITMAPINFOHEADER2 structures.
*
* A color table is concatenated to this structure. The number of elements in
@ -188,8 +188,8 @@ typedef struct BITMAPHEADER
/*
* RGB defines a single color palette entry. Its analogues in the Windows SDK
* are the RGBTRIPLE and RGBQUAD structures. Its analogues in the OS/2
* RGB defines a single color palette entry. Its analogs in the Windows SDK
* are the RGBTRIPLE and RGBQUAD structures. Its analogs in the OS/2
* Toolkit are the RGB and RGB2 structure.
*/
typedef struct RGB

View File

@ -283,7 +283,7 @@ RFcoefficientType * InitRecursiveCoefficients( double x,
b0 /= x;
b1 /= x;
/*--- normalisation ---*/
/*--- normalization ---*/
switch ( derivative ) {
default :
CGAL_FALLTHROUGH;

View File

@ -30,17 +30,17 @@ void k_delaunay(Regular& rt,input_DS& input_wpt,int order){
typedef typename Kernel::Point_2 Point_2;
typedef typename Kernel::Weighted_point_2 Weighted_point_2;
std::vector<typename input_DS::iterator> Current_sel;//DS that will contain all possible combinaisons of k points (iterator), where k is the order
std::vector<typename input_DS::iterator> Current_sel;//DS that will contain all possible combinations of k points (iterator), where k is the order
typename input_DS::iterator it_wpt = input_wpt.begin();
typename input_DS::iterator stop_combi = input_wpt.end();
for(int i=0;i<order-1;++i){ //First fill the DS with the k fist wpoints
Current_sel.push_back(it_wpt);//Useful to know when all combinaisons have been treated
Current_sel.push_back(it_wpt);//Useful to know when all combinations have been treated
++it_wpt;
}
--it_wpt;
Current_sel.push_back(it_wpt);
for(int i=0;i<order;++i){ //Fix end point for combinaison searching
for(int i=0;i<order;++i){ //Fix end point for combination searching
--stop_combi;
}
do{

View File

@ -2380,7 +2380,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -2493,7 +2492,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -2735,7 +2733,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -2897,7 +2894,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -3308,7 +3304,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -3533,7 +3528,6 @@ void test_circulator_from_iterator() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -3742,7 +3736,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -3855,7 +3848,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -4097,7 +4089,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -4260,7 +4251,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -4671,7 +4661,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;
@ -4897,7 +4886,6 @@ void test_circulator_from_container() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == c);
assert( i == c);
// Do I reach myself.
++i;
Circulator j = i;

View File

@ -304,7 +304,6 @@ void test_struct(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Struct_circulator j = i;
@ -413,7 +412,6 @@ void test_struct(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Struct_const_circulator j = i;
@ -651,7 +649,6 @@ void test_struct(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Struct_bi_circulator j = i;
@ -809,7 +806,6 @@ void test_struct(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Struct_bi_const_circulator j = i;
@ -969,7 +965,6 @@ void test_class(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Class_circulator j = i;
@ -1078,7 +1073,6 @@ void test_class(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Class_const_circulator j = i;
@ -1316,7 +1310,6 @@ void test_class(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Class_bi_circulator j = i;
@ -1474,7 +1467,6 @@ void test_class(){
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Class_bi_const_circulator j = i;
@ -1891,7 +1883,6 @@ void test_array() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Circulator j = i;
@ -2119,7 +2110,6 @@ void test_array() {
assert( ! (i == nullptr));
assert( i != nullptr);
assert( i == start);
assert( i == start);
// Do I reach myself.
++i;
Circulator j = i;

View File

@ -75,7 +75,7 @@ Data structures specialized to classify clusters.
\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD}
\cgalPkgBib{cgal:lm-clscm-12}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{Operations on Polyhedra,polyhedron_3.zip}
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

View File

@ -48,7 +48,7 @@ typedef Classification::Feature::Vertical_dispersion<Kernel, Point_range, Pmap>
int main (int argc, char** argv)
{
const std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/b9.ply");
const std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("points_3/b9.ply");
std::cerr << "Reading input" << std::endl;
std::vector<Point> pts;

View File

@ -48,7 +48,7 @@ typedef Classification::Cluster<Point_set, Pmap> Clu
int main (int argc, char** argv)
{
std::string filename = CGAL::data_file_path("meshes/b9.ply");
std::string filename = CGAL::data_file_path("points_3/b9.ply");
std::string filename_config = "data/b9_clusters_config.bin";
if (argc > 1)

View File

@ -66,7 +66,7 @@ public:
int main (int argc, char** argv)
{
std::string filename (argc > 1 ? argv[1] : CGAL::data_file_path("meshes/b9.ply"));
std::string filename (argc > 1 ? argv[1] : CGAL::data_file_path("points_3/b9.ply"));
std::vector<Point> pts;
std::cerr << "Reading input" << std::endl;

View File

@ -662,7 +662,7 @@ namespace CGAL {
}
/** Create a new dart and add it to the map.
* The marks of the darts are initialised with mmask_marks, i.e. the dart
* The marks of the darts are initialized with mmask_marks, i.e. the dart
* is unmarked for all the marks.
* @return a Dart_descriptor on the new dart.
*/
@ -1780,7 +1780,6 @@ namespace CGAL {
void basic_link_beta_for_involution(Dart_descriptor adart1, Dart_descriptor adart2,
unsigned int i)
{
CGAL_assertion( i>=2 && i<=dimension );
CGAL_assertion( i>=2 && i<=dimension );
dart_link_beta(adart1, adart2, i);
dart_link_beta(adart2, adart1, i);
@ -4112,7 +4111,7 @@ namespace CGAL {
}
if (ah != null_descriptor)
{
// We initialise the 0-atttrib to ah
// We initialize the 0-atttrib to ah
internal::Set_i_attribute_of_dart_functor<Self, 0>::
run(*this, d1, ah);
}

View File

@ -228,7 +228,7 @@ struct Call_functor_if_both_attributes_have_point
const Pointconverter&)
{ return Map2::null_descriptor; }
};
// Specialisation with i==0 and both attributes have points.
// Specialization with i==0 and both attributes have points.
template< typename Map1, typename Map2, typename Pointconverter >
struct Call_functor_if_both_attributes_have_point<Map1, Map2, 0,
Pointconverter, true, true>
@ -285,7 +285,7 @@ struct Copy_attribute_functor_if_nonvoid
cmap2.template set_attribute<i>(dh2, res);
}
};
// Specialisation when attr1 is void, and attr2 is non void i==0. Nothing to
// Specialization when attr1 is void, and attr2 is non void i==0. Nothing to
// copy, but if 0-attributes has point and i==0, we need to create
// vertex attributes.
template<typename Map1, typename Map2, typename Converters,
@ -310,7 +310,7 @@ struct Copy_attribute_functor_if_nonvoid<Map1, Map2, Converters,
set_attribute<0>(dh2, cmap2.template create_attribute<0>());
}
};
// Specialisation when attr1 is void, and attr2 is non void i!=0.
// Specialization when attr1 is void, and attr2 is non void i!=0.
// Nothing to do.
template<typename Map1, typename Map2, typename Converters, unsigned int i,
typename Pointconverter, typename Attr2>
@ -360,7 +360,7 @@ struct Copy_dart_info_functor_if_nonvoid
const DartInfoConverter& converter)
{ converter(map1, map2, dh1, dh2); }
};
// Specialisation when Info1 is void.
// Specialization when Info1 is void.
template<typename Map1, typename Map2, typename DartInfoConverter,
typename Info2>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
@ -373,7 +373,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
const DartInfoConverter&)
{}
};
// Specialisation when Info2 is void.
// Specialization when Info2 is void.
template<typename Map1, typename Map2, typename DartInfoConverter,
typename Info1>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
@ -386,7 +386,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
const DartInfoConverter&)
{}
};
// Specialisation when both Info1 and Info2 are void.
// Specialization when both Info1 and Info2 are void.
template<typename Map1, typename Map2, typename DartInfoConverter>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
CGAL::Void, CGAL::Void>

View File

@ -36,7 +36,7 @@ namespace CGAL
{
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
{
// TODO? Optimisation for dim-2, and to not test all the darts of the cell?
// TODO? Optimization for dim-2, and to not test all the darts of the cell?
bool res = true;
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
res && it.cont(); ++it )
@ -462,7 +462,7 @@ namespace CGAL
{
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
{
// TODO ? Optimisation possible to not test all the darts of the cell ?
// TODO ? Optimization possible to not test all the darts of the cell ?
bool res = true;
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
res && it.cont(); ++it )

View File

@ -156,7 +156,7 @@ namespace CGAL {
}
protected:
/** Default constructor: no real initialisation,
/** Default constructor: no real initialization,
* because this is done in the combinatorial map class.
*/
Dart_without_info()
@ -300,7 +300,7 @@ namespace CGAL {
{ return Base::operator==(other) && minfo==other.minfo; }
protected:
/** Default constructor: no real initialisation,
/** Default constructor: no real initialization,
* because this is done in the combinatorial or generalized map class.
*/
Dart()=default; // default => zero-initializing built-in types

View File

@ -28,13 +28,12 @@ create_single_source_cgal_program(cmap_test_split_attribute.cpp)
# Link with OpenMesh if possible
find_package(OpenMesh QUIET)
if(TARGET OpenMesh::OpenMesh)
if(OpenMesh_FOUND)
message(STATUS "Found OpenMesh")
include(CGAL_OpenMesh_support)
target_link_libraries(Combinatorial_map_copy_test PRIVATE OpenMesh::OpenMesh)
target_compile_definitions(Combinatorial_map_copy_test PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(Combinatorial_map_copy_test_index PRIVATE OpenMesh::OpenMesh)
target_compile_definitions(Combinatorial_map_copy_test_index PRIVATE -DCGAL_USE_OPENMESH)
target_link_libraries(Combinatorial_map_copy_test PRIVATE CGAL::OpenMesh_support)
target_link_libraries(Combinatorial_map_copy_test_index PRIVATE CGAL::OpenMesh_support)
else()
message(STATUS "NOTICE: Tests will not use OpenMesh.")
endif()

View File

@ -115,7 +115,7 @@ public:
#if defined(CGAL_USE_LEDA) || defined(CGAL_USE_CORE)
/*
The specialised functor for computing the directions of cone boundaries exactly
The specialized functor for computing the directions of cone boundaries exactly
with a given cone number and a given initial direction.
*/
template <>

View File

@ -199,7 +199,7 @@ protected:
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
std::sort(S.begin (), S.end (), orderD1);
// Step 2: Initialise an empty set to store vertices sorted by orderD2
// Step 2: initialize an empty set to store vertices sorted by orderD2
typedef CGAL::ThetaDetail::Plane_scan_tree<typename Graph_::vertex_descriptor,
typename Graph_::vertex_descriptor,
Less_by_direction,

View File

@ -185,7 +185,7 @@ protected:
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
std::sort(S.begin (), S.end (), orderD1);
// Step 2: Initialise an empty set to store vertices sorted by orderD2
// Step 2: initialize an empty set to store vertices sorted by orderD2
Point_set pst(orderD2);
// Step 3: visit S in orderD1

View File

@ -93,7 +93,7 @@ std::string gnuplot_vertex_list (const Graph& g);
/* This struct is defined to use partial specialization to generate arrow styles differently for
* directed and undirected graphs.
* Note: Need to use structs because C++ before 11 doesn't allow partial specialisation
* Note: Need to use structs because C++ before 11 doesn't allow partial specialization
* for functions
*/
template <typename Graph, typename Directedness=typename Graph::directed_selector>

View File

@ -76,62 +76,13 @@ class External_structure_builder : public Modifier_base<typename Nef_::SNC_and_P
SNC_structure* sncp(sncpl.sncp);
SNC_point_locator* pl(sncpl.pl);
Unique_hash_map<SHalfedge_handle, SFace_handle> sedge2sface;
/*
SFace_iterator sfi;
CGAL_forall_sfaces(sfi, *sncp) {
SFace_cycle_iterator sfc;
for(sfc = sfi->sface_cycles_begin(); sfc != sfi->sface_cycles_end(); ++sfc) {
if(sfc.is_shalfedge()){
SHalfedge_around_sface_circulator eaf(sfc), end(eaf);
CGAL_For_all(eaf,end) {
SHalfedge_handle se(eaf);
sedge2sface[eaf] = sfi;
}
}
}
}
// CGAL::SNC_io_parser<SNC_structure> O0(std::cerr, *sncp, false);
// O0.print();
SHalfedge_iterator sei;
CGAL_forall_shalfedges(sei, *sncp) {
SHalfedge_handle se(sei);
if(sedge2sface[se] == SFace_handle()) {
SM_decorator SD(&*sei->source()->source());
SFace_handle sf_new = SD.new_sface();
sf_new->mark() = sei->incident_sface()->mark();
CGAL_NEF_TRACEN("new entry sedge " << sei->source()->point()
<< "->" << sei->twin()->source()->point()
<< " at " << sei->source()->source()->point());
SD.link_as_face_cycle(sei, sf_new);
SHalfedge_around_sface_circulator eaf(se), end(eaf);
CGAL_For_all(eaf,end) {
SHalfedge_handle se(eaf);
sedge2sface[eaf] = sf_new;
}
// TODO: relink inner sface cycles
}
}
*/
SNC_point_locator* old_pl = pl;
pl = pl->clone();
sncpl.pl = pl;
delete old_pl;
SNC_external_structure C(*sncp,pl);
C.clear_external_structure();
C.build_external_structure();
// CGAL::SNC_io_parser<SNC_structure> Ox(std::cerr, *sncp, false);
// Ox.print();
delete old_pl;
}
};

View File

@ -0,0 +1,53 @@
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/Nef_polyhedron_3.h>
#include <CGAL/IO/Nef_polyhedron_iostream_3.h>
#include <CGAL/Nef_3/SNC_indexed_items.h>
#include <CGAL/convex_decomposition_3.h>
#include <list>
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron_3;
typedef CGAL::Nef_polyhedron_3<Kernel, CGAL::SNC_indexed_items> Nef_polyhedron_3;
typedef Nef_polyhedron_3::Volume_const_iterator Volume_const_iterator;
std::size_t run(std::string path)
{
Polyhedron_3 input;
std::ifstream(path) >> input;
Nef_polyhedron_3 N(input);
CGAL::convex_decomposition_3(N);
std::list<Polyhedron_3> convex_parts;
Volume_const_iterator ci = ++N.volumes_begin();
for( ; ci != N.volumes_end(); ++ci) {
if(ci->mark()) {
Polyhedron_3 P;
N.convert_inner_shell_to_polyhedron(ci->shells_begin(), P);
convex_parts.push_back(P);
}
}
// int i=0;
for (const Polyhedron_3& P : convex_parts)
{
// std::ofstream("out_"+std::to_string(i++)+".off") << std::setprecision(17) << P;
assert(P.size_of_vertices()!=0);
}
return convex_parts.size();
}
int main()
{
std::size_t val = run("data/in1.off");
assert(val==9);
val = run("data/in2.off");
assert(val==10);
val = run("data/in3.off");
assert(val==13);
val = run("data/in4.off");
assert(val==17);
}

View File

@ -0,0 +1,117 @@
OFF 40 76 0
5 -5 4
5 -5 2
5 5 2
5 5 4
5 -5 -2
5 -5 -4
5 5 -4
5 5 -2
-5 5 4
-5 -5 4
-4 -4 4
-4 4 4
4 4 4
4 -4 4
-5 -5 -4
-5 5 -4
-4 4 -4
-4 -4 -4
4 -4 -4
4 4 -4
-5 5 2
-5 -5 2
-5 -5 -2
-5 5 -2
4 4 2
4 -4 2
4 -4 -2
4 4 -2
-4 4 2
-4 -4 2
-4 4 -2
-4 -4 -2
6 -6 2
6 -6 -2
6 6 -2
6 6 2
-6 6 2
-6 -6 2
-6 -6 -2
-6 6 -2
3 0 2 3
3 2 0 1
3 4 6 7
3 6 4 5
3 3 12 0
3 3 11 12
3 11 8 10
3 8 11 3
3 13 0 12
3 10 0 13
3 10 9 0
3 9 10 8
3 5 18 6
3 5 17 18
3 17 14 16
3 14 17 5
3 19 6 18
3 16 6 19
3 16 15 6
3 15 16 14
3 21 8 20
3 8 21 9
3 14 23 15
3 23 14 22
3 2 8 3
3 8 2 20
3 6 23 7
3 23 6 15
3 21 0 9
3 0 21 1
3 14 4 22
3 4 14 5
3 25 12 24
3 12 25 13
3 18 27 19
3 27 18 26
3 10 28 11
3 28 10 29
3 31 16 30
3 16 31 17
3 28 12 11
3 12 28 24
3 16 27 30
3 27 16 19
3 25 10 13
3 10 25 29
3 18 31 26
3 31 18 17
3 32 34 35
3 34 32 33
3 35 2 32
3 35 20 2
3 20 36 21
3 36 20 35
3 1 32 2
3 21 32 1
3 21 37 32
3 37 21 36
3 28 25 24
3 25 28 29
3 33 4 34
3 33 22 4
3 22 38 23
3 38 22 33
3 7 34 4
3 23 34 7
3 23 39 34
3 39 23 38
3 31 27 26
3 27 31 30
3 38 36 39
3 36 38 37
3 34 36 35
3 36 34 39
3 38 32 37
3 32 38 33

View File

@ -0,0 +1,144 @@
OFF
48 92 0
2 2 2
2 -2 2
-2 2 2
-2 -2 2
-2 2 4
2 2 4
-2 -2 4
2 -2 4
5 -5 4
-4 4 4
5 5 4
4 -4 4
-5 -5 4
-4 -4 -4
5 -5 -4
4 4 -4
-5 5 -4
-5 5 4
5 5 -4
-5 -5 -4
4 4 4
4 -4 -2
-4 -4 4
-4 4 -2
-4 4 -4
4 4 -2
4 -4 -4
6 -6 2
5 5 2
-5 5 2
6 6 2
5 -5 2
-5 -5 2
-6 -6 2
5 -5 -2
-5 -5 -2
6 -6 -2
5 5 -2
-5 5 -2
-6 6 -2
-4 -4 -2
-6 6 2
6 6 -2
-6 -6 -2
-4 -4 2
-4 4 2
4 4 2
4 -4 2
3 2 4 5
3 7 6 3
3 5 7 1
3 6 7 5
3 3 6 4
3 5 0 2
3 3 1 7
3 1 0 5
3 5 4 6
3 4 2 3
3 8 28 10
3 28 8 31
3 34 18 37
3 18 34 14
3 10 20 8
3 10 9 20
3 9 17 22
3 17 9 10
3 11 8 20
3 22 8 11
3 22 12 8
3 12 22 17
3 14 26 18
3 14 13 26
3 13 19 24
3 19 13 14
3 15 18 26
3 24 18 15
3 24 16 18
3 16 24 19
3 32 17 29
3 17 32 12
3 19 38 16
3 38 19 35
3 28 17 10
3 17 28 29
3 18 38 37
3 38 18 16
3 32 8 12
3 8 32 31
3 19 34 35
3 34 19 14
3 47 20 46
3 20 47 11
3 26 25 15
3 25 26 21
3 22 45 9
3 45 22 44
3 40 24 23
3 24 40 13
3 45 20 9
3 20 45 46
3 24 25 23
3 25 24 15
3 47 22 11
3 22 47 44
3 26 40 21
3 40 26 13
3 27 42 30
3 42 27 36
3 30 28 27
3 30 29 28
3 29 41 32
3 41 29 30
3 31 27 28
3 32 27 31
3 32 33 27
3 33 32 41
3 2 0 45
3 1 44 47
3 36 34 42
3 36 35 34
3 35 43 38
3 43 35 36
3 37 42 34
3 38 42 37
3 38 39 42
3 39 38 43
3 40 25 21
3 25 40 23
3 43 41 39
3 41 43 33
3 42 41 30
3 41 42 39
3 43 27 33
3 27 43 36
3 44 1 3
3 44 3 45
3 45 3 2
3 46 45 0
3 46 0 47
3 47 0 1

View File

@ -0,0 +1,180 @@
OFF
60 116 0
1 1 4
1 0.33333333333333337 4
1 -1 4
0.33333333333333337 -1 4
-1 -1 4
-1 0.33333333333333337 4
-1 1 4
0.33333333333333337 1 4
-2 2 2
5 -5 4
-4 4 4
5 5 4
4 -4 4
-5 -5 4
-4 -4 -4
5 -5 -4
4 4 -4
-5 5 -4
-5 5 4
5 5 -4
-5 -5 -4
4 4 4
4 -4 -2
-4 -4 4
-4 4 -2
-4 4 -4
4 4 -2
4 -4 -4
6 -6 2
5 5 2
-5 5 2
6 6 2
5 -5 2
-5 -5 2
-6 -6 2
5 -5 -2
-5 -5 -2
6 -6 -2
5 5 -2
-5 5 -2
-6 6 -2
-4 -4 -2
-6 6 2
6 6 -2
-6 -6 -2
-2 -2 2
-4 -4 2
-4 4 2
4 4 2
4 -4 2
2 -2 2
2 2 2
-2 2 4
2 2 4
2 -2 4
-2 -2 4
1 1 2
1 -1 2
-1 -1 2
-1 1 2
3 8 52 53
3 54 55 45
3 53 54 50
3 0 1 53
3 45 55 52
3 53 51 8
3 45 50 54
3 50 51 53
3 4 5 55
3 52 8 45
3 9 29 11
3 29 9 32
3 35 19 38
3 19 35 15
3 11 21 9
3 11 10 21
3 10 18 23
3 18 10 11
3 12 9 21
3 23 9 12
3 23 13 9
3 13 23 18
3 15 27 19
3 15 14 27
3 14 20 25
3 20 14 15
3 16 19 27
3 25 19 16
3 25 17 19
3 17 25 20
3 33 18 30
3 18 33 13
3 20 39 17
3 39 20 36
3 29 18 11
3 18 29 30
3 19 39 38
3 39 19 17
3 33 9 13
3 9 33 32
3 20 35 36
3 35 20 15
3 49 21 48
3 21 49 12
3 27 26 16
3 26 27 22
3 23 47 10
3 47 23 46
3 41 25 24
3 25 41 14
3 47 21 10
3 21 47 48
3 25 26 24
3 26 25 16
3 49 23 12
3 23 49 46
3 27 41 22
3 41 27 14
3 28 43 31
3 43 28 37
3 31 29 28
3 31 30 29
3 30 42 33
3 42 30 31
3 32 28 29
3 33 28 32
3 33 34 28
3 34 33 42
3 8 51 47
3 50 46 49
3 37 35 43
3 37 36 35
3 36 44 39
3 44 36 37
3 38 43 35
3 39 43 38
3 39 40 43
3 40 39 44
3 41 26 22
3 26 41 24
3 44 42 40
3 42 44 34
3 43 42 31
3 42 43 40
3 44 28 34
3 28 44 37
3 46 50 45
3 46 45 47
3 47 45 8
3 48 47 51
3 48 51 49
3 49 51 50
3 52 55 5
3 52 7 53
3 52 5 6
3 53 7 0
3 52 6 7
3 54 53 1
3 54 2 3
3 54 1 2
3 55 54 3
3 55 3 4
3 58 57 56
3 59 56 7
3 2 57 3
3 0 56 1
3 5 59 6
3 56 59 58
3 57 1 56
3 57 2 1
3 58 5 4
3 7 56 0
3 58 3 57
3 4 3 58
3 59 5 58
3 7 6 59

View File

@ -0,0 +1,180 @@
OFF
60 116 0
1 1 4
1 0.5 4
1 -1 4
0.5 -1 4
-1 -1 4
-1 0.5 4
-1 1 4
0.5 1 4
-2 2 2
5 -5 4
-4 4 4
5 5 4
4 -4 4
-5 -5 4
-4 -4 -4
5 -5 -4
4 4 -4
-5 5 -4
-5 5 4
5 5 -4
-5 -5 -4
4 4 4
4 -4 -2
-4 -4 4
-4 4 -2
-4 4 -4
4 4 -2
4 -4 -4
6 -6 2
5 5 2
-5 5 2
6 6 2
5 -5 2
-5 -5 2
-6 -6 2
5 -5 -2
-5 -5 -2
6 -6 -2
5 5 -2
-5 5 -2
-6 6 -2
-4 -4 -2
-6 6 2
6 6 -2
-6 -6 -2
-2 -2 2
-4 -4 2
-4 4 2
4 4 2
4 -4 2
2 -2 2
2 2 2
-2 2 4
2 2 4
2 -2 4
-2 -2 4
1 1 1
1 -1 1
-1 -1 1
-1 1 1
3 8 52 53
3 54 55 45
3 53 54 50
3 0 1 53
3 45 55 52
3 53 51 8
3 45 50 54
3 50 51 53
3 4 5 55
3 52 8 45
3 9 29 11
3 29 9 32
3 35 19 38
3 19 35 15
3 11 21 9
3 11 10 21
3 10 18 23
3 18 10 11
3 12 9 21
3 23 9 12
3 23 13 9
3 13 23 18
3 15 27 19
3 15 14 27
3 14 20 25
3 20 14 15
3 16 19 27
3 25 19 16
3 25 17 19
3 17 25 20
3 33 18 30
3 18 33 13
3 20 39 17
3 39 20 36
3 29 18 11
3 18 29 30
3 19 39 38
3 39 19 17
3 33 9 13
3 9 33 32
3 20 35 36
3 35 20 15
3 49 21 48
3 21 49 12
3 27 26 16
3 26 27 22
3 23 47 10
3 47 23 46
3 41 25 24
3 25 41 14
3 47 21 10
3 21 47 48
3 25 26 24
3 26 25 16
3 49 23 12
3 23 49 46
3 27 41 22
3 41 27 14
3 28 43 31
3 43 28 37
3 31 29 28
3 31 30 29
3 30 42 33
3 42 30 31
3 32 28 29
3 33 28 32
3 33 34 28
3 34 33 42
3 8 51 47
3 50 46 49
3 37 35 43
3 37 36 35
3 36 44 39
3 44 36 37
3 38 43 35
3 39 43 38
3 39 40 43
3 40 39 44
3 41 26 22
3 26 41 24
3 44 42 40
3 42 44 34
3 43 42 31
3 42 43 40
3 44 28 34
3 28 44 37
3 46 50 45
3 46 45 47
3 47 45 8
3 48 47 51
3 48 51 49
3 49 51 50
3 52 55 5
3 52 7 53
3 52 5 6
3 53 7 0
3 52 6 7
3 54 53 1
3 54 2 3
3 54 1 2
3 55 54 3
3 55 3 4
3 58 57 56
3 59 56 7
3 2 57 3
3 0 56 1
3 5 59 6
3 56 59 58
3 57 1 56
3 57 2 1
3 58 5 4
3 7 56 0
3 58 3 57
3 4 3 58
3 59 5 58
3 7 6 59

View File

@ -21,13 +21,13 @@ create_single_source_cgal_program("extreme_indices_3.cpp")
find_package(OpenMesh QUIET)
if(OpenMesh_FOUND)
include(UseOpenMesh)
include(CGAL_OpenMesh_support)
message(STATUS "Found OpenMesh")
create_single_source_cgal_program("quickhull_OM_3.cpp")
target_link_libraries(quickhull_OM_3 PRIVATE ${OPENMESH_LIBRARIES})
target_link_libraries(quickhull_OM_3 PRIVATE CGAL::OpenMesh_support)
create_single_source_cgal_program("dynamic_hull_OM_3.cpp")
target_link_libraries(dynamic_hull_OM_3 PRIVATE ${OPENMESH_LIBRARIES})
target_link_libraries(dynamic_hull_OM_3 PRIVATE CGAL::OpenMesh_support)
else()
message(STATUS "NOTICE: Examples that use OpenMesh will not be compiled.")
endif()

View File

@ -160,7 +160,6 @@ private:
assert(are_equal(res_o2o1, expected_result));
do_intersect_check(o1, o2);
do_intersect_check(o1, o2);
}
template <typename O1, typename O2>
@ -169,7 +168,6 @@ private:
const FT res_o1o2 = CGAL::squared_distance(o1, o2);
const FT res_o2o1 = CGAL::squared_distance(o2, o1);
do_intersect_check(o1, o2);
do_intersect_check(o1, o2);
assert(res_o1o2 <= ubound);
@ -324,7 +322,7 @@ private:
check_squared_distance(S{p2, p3}, S{p4, p5}, 0);
check_squared_distance(S{p2, p3}, S{p5, p4}, 0);
check_squared_distance(S{p3, p2}, S{p4, p5}, 0);
check_squared_distance(S{p3, p2}, S{p4, p5}, 0);
check_squared_distance(S{p3, p2}, S{p5, p4}, 0);
const double lambda_6 = r.get_double(0, 1);
const P p6 = p3 + FT(lambda_6) * V{p3 - p2};
@ -332,7 +330,7 @@ private:
check_squared_distance(S{p2, p3}, S{p6, p5}, 0);
check_squared_distance(S{p2, p3}, S{p5, p6}, 0);
check_squared_distance(S{p3, p2}, S{p6, p5}, 0);
check_squared_distance(S{p3, p2}, S{p6, p5}, 0);
check_squared_distance(S{p3, p2}, S{p5, p6}, 0);
const double lambda_7 = r.get_double(1, 2);
const P p7 = p3 + FT(lambda_7) * V{p3 - p2};

View File

@ -17,7 +17,7 @@ configuration.
create <B>a single executable</B> for 'source' linked with
compilations of all other source files
(`*.cc`, `*.cp`, `*.cxx`, `*.cpp`, `*.CPP`, `*.c++`, or `*.C`).
This behaviour is usually needed for (graphical) demos.
This behavior is usually needed for (graphical) demos.
If the parameter is not given, the script creates <B>one executable for each given
source file</B>.

View File

@ -33,14 +33,17 @@ This section describes a minimal example of a program that uses \cgal and Qt6 fo
\skip cmake_minimum_required
\until project
\skip #CGAL_Qt6 is needed for the drawing.
\until endif()
\until find_package
\skip #create the executable of the application
\until "draw_surface_mesh.cpp"
\skip if(CGAL_Qt6_FOUND)
\until target_link_libraries(draw_surface_mesh PUBLIC CGAL::CGAL_Qt6)
\until target_link_libraries(draw_surface_mesh PUBLIC CGAL::CGAL_Basic_viewer)
\skip endif
\until #end of the file

View File

@ -19,7 +19,6 @@ FILTER_PATTERNS = *.txt=${CMAKE_BINARY_DIR}/pkglist_filter
HTML_EXTRA_FILES += ${CGAL_DOC_RESOURCE_DIR}/hacks.js \
${CGAL_DOC_RESOURCE_DIR}/menu_version.js \
${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css \
${CMAKE_BINARY_DIR}/how_to_cite_cgal.bib \
${CMAKE_BINARY_DIR}/how_to_cite.html \
${CGAL_PACKAGE_DOC_DIR}/fig/g-196x196-doc.png

View File

@ -47,7 +47,7 @@ also avoid CMake to link with the native threads support library on your system.
Much of the \cgal code contains assert statements for preconditions, and postconditions of functions
as well as in the code. These assertions can be switched on and off per package
and the user can change the error behaviour. For details see Section \ref secchecks
and the user can change the error behavior. For details see Section \ref secchecks
of Chapter \ref Chapter_STL_Extensions_for_CGAL.
\section Preliminaries_flags Compile-time Flags to Control Inlining

View File

@ -15,7 +15,7 @@ supporting C++17 or later.
| | `Clang` \cgalFootnote{<A HREF="https://clang.llvm.org/">\cgalFootnoteCode{https://clang.llvm.org/}</A>} compiler version 15.0.7 |
| \ms Windows | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| | \ms Visual `C++` 15.9, 16.10, 17.0 (\visualstudio 2017, 2019, and 2022)\cgalFootnote{<A HREF="https://visualstudio.microsoft.com/">\cgalFootnoteCode{https://visualstudio.microsoft.com/}</A>} |
| MacOS X | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| macOS | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| | Apple `Clang` compiler versions 10.0.1, 12.0.5, and 15.0.0 |
<!-- Windows supported version are also listed on windows.html (must change both) -->
@ -72,23 +72,32 @@ As there is no canonical directory for where to find \boost on Windows,
we recommend that you define the environment variable
`BOOST_ROOT` and set it to where you have installed \boost, e.g., `C:\boost\boost_1_70_0`.
\subsection thirdpartyMPFR GNU Multiple Precision Arithmetic (GMP) and GNU Multiple Precision Floating-Point Reliably (MPFR) Libraries
<b>GMP Version 5.0.1 or later, MPFR Version 3.0.0 or later</b>
\subsection thirdpartyMP Multi Precision Number Type Library
The components \cgal, `CGAL_Core`, and `CGAL_Qt6` require
\gmp and \mpfr which are libraries for multi precision integers and rational numbers,
and for multi precision floating point numbers.
\cgal combines floating point arithmetic with exact arithmetic
in order to be efficient and reliable. \cgal has a built-in
number type for that, but \gmp and \mpfr provide a faster
solution, and we recommend using them.
GNU Multiple Precision Arithmetic (GMP) and GNU Multiple Precision Floating-Point Reliably (MPFR) Libraries
are libraries for multi precision integers and rational numbers, and for multi precision floating point numbers.
These libraries can be obtained from <A HREF="https://gmplib.org/">`https://gmplib.org/`</A>
and <A HREF="https://www.mpfr.org/">`https://www.mpfr.org/`</A>.
Since Visual \cpp is not properly supported by the \gmp and \mpfr projects,
we provide precompiled versions of \gmp and \mpfr, which can be downloaded
from the <a href="https://github.com/CGAL/cgal/releases">assets of a release</a>.
Version supported are <b>GMP Version 5.0.1 or later, MPFR Version 3.0.0 or later</b>.
The \boost library also provides a module for multi precision integers and rational numbers:
<A HREF="https://www.boost.org/doc/libs/release/libs/multiprecision/doc/html/index.html">\boost multiprecision</A>.
Versions supported are <b>\boost Version 1.72 or later</b>.
The components \cgal, and `CGAL_Qt6` require either \gmp and \mpfr, or \boost multiprecision
for multi precision numbers. `CGAL_Core` requires \boost multiprecision.
\cgal combines floating point arithmetic with exact arithmetic
in order to be efficient and reliable. \cgal has a built-in
number type for that, but previous alternatives are faster
solutions, and we recommend using one of them.
The CMake variable `CGAL_CMAKE_EXACT_NT_BACKEND` can be used to select
the library that will be used internally for multi precision number types.
\section secoptional3rdpartysoftware Optional Third Party Libraries
@ -153,7 +162,7 @@ executables should be linked with the CMake imported target
The \libpointmatcher web site is <A
HREF="https://github.com/ethz-asl/libpointmatcher">`https://github.com/ethz-asl/libpointmatcher`</A>.
\attention On Windows, we only support version 1.3.1 of PointMatcher with version 3.3.7 of Eigen, with some changes to the recipe at
`https://github.com/ethz-asl/libpointmatcher/blob/master/doc/CompilationWindows.md`:`NABO_INCLUDE_DIR` becomes `libnabo_INCLUDE_DIRS`
`https://github.com/ethz-asl/libpointmatcher/blob/master/doc/Compilation.md`:`NABO_INCLUDE_DIR` becomes `libnabo_INCLUDE_DIRS`
and `NABO_LIBRARY` becomes `libnabo_LIBRARIES` in the "Build libpointmatcher" section.
@ -239,9 +248,8 @@ imported target `CGAL::LASLIB_support` provided in
\laslib information can be obtained from
<a href="https://lastools.github.io/">https://lastools.github.io/</a> and
<a href="https://rapidlasso.de/product-overview/">https://rapidlasso.de/product-overview/</a>.
\laslib is usually distributed along with LAStools: for simplicity, \cgal
provides <a href="https://github.com/CGAL/LAStools">a fork with a
CMake based install procedure</a>.
\laslib is usually distributed along with LAStools. Current versions of \laslib provide CMake support.
BUILD_SHARED_LIBS needs to be set to true on windows to create a dynamic linked library.
\subsection thirdpartyOpenCV OpenCV

View File

@ -193,7 +193,7 @@ An example of a raster image with a rainbow ramp representing height
is given in \cgalFigureRef{TutorialGISFigRastering}.
\cgalFigureBegin{TutorialGISFigRastering, raster.jpg}
Raster visualisation of height using a rainbow ramp, ranging from
Raster visualization of height using a rainbow ramp, ranging from
light blue for low values to dark red for high values.
\cgalFigureEnd

View File

@ -36,7 +36,7 @@ Using \cgal requires a few core components to be previously installed:
<li> a supported compiler (see Section \ref seccompilers),</li>
<li> \ref seccmake,</li>
<li> \ref thirdpartyBoost,</li>
<li> \ref thirdpartyMPFR.</li>
<li> a \ref thirdpartyMP.</li>
</ul>
Optional third-party software might be required to build examples and demos shipped with \cgal,

View File

@ -38,7 +38,7 @@ other contexts can be done by obtaining a commercial license from
[GeometryFactory](https://www.geometryfactory.com). For more details
see the \ref license "License" page.
<h2>Acknowledgement</h2>
<h2>Acknowledgment</h2>
We provide bibtex entries for each package so that you can cite \cgal correctly in your publications,
see the page \ref how_to_cite_cgal.

View File

@ -6,7 +6,7 @@
15.9, 16.0, 17.0 (\visualstudio 2017, 2019, and 2022).
\cgal is a library that has mandatory dependencies that must be first installed:
\ref thirdpartyBoost and \ref thirdpartyMPFR.
\ref thirdpartyBoost and a \ref thirdpartyMP.
You have two options to install \cgal and its dependencies: you can either use
the *Vcpkg library manager*, which will automatically install an appropriate version of

View File

@ -1581,17 +1581,6 @@ Voronoi diagram"
,update = "97.04 kettner"
}
@article{cgal:l-lsqp-82,
title={Least squares quantization in PCM},
author={Lloyd, Stuart},
journal={IEEE transactions on information theory},
volume={28},
number={2},
pages={129--137},
year={1982},
publisher={IEEE}
}
@InProceedings{ cgal:lprm-lscm-02,
author = {Bruno L{\'e}vy and Sylvain Petitjean and Nicolas Ray
and J{\'e}rome Maillot},
@ -2814,7 +2803,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
editor = "Jacob E. Goodman, J\'anos Pach and Emo Welzl",
year = {2005},
pages = {439-458},
URL = {http://library.msri.org/books/Book52/files/23liu.pdf},
URL = {https://library.slmath.org/books/Book52/files/23liu.pdf},
publisher = {MSRI Publications}
}

View File

@ -9513,7 +9513,7 @@ sites with respect to the geodesic metric within a simple $n$-sided polygon."
, number = 1
, year = 1993
, pages = "27--35"
, keywords = "polygon, triagulation"
, keywords = "polygon, triangulation"
, update = "95.05 korneenko"
}
@ -16862,7 +16862,7 @@ Contains C code."
, title = "A polyhedron representation for computer vision"
, booktitle = "Proc. AFIPS Natl. Comput. Conf."
, volume = 44
, publisher = "AFIPS Press, Alrington, Va."
, publisher = "AFIPS Press, Arlington, Va."
, year = 1975
, pages = "589--596"
, update = "98.07 bibrelex"
@ -92400,7 +92400,7 @@ some 2 curves cross exponentially many times."
@inproceedings{kn-afrmt-97
, author = "Yoshiyuki Kusakari and Takao Nishizeki"
, title = "An Algorithm for Finding a Region with the Minimum Total {$L_1$}-Distance from Prescibed Terminals"
, title = "An Algorithm for Finding a Region with the Minimum Total {$L_1$}-Distance from Prescribed Terminals"
, booktitle = "Proc. 8th Annu. Internat. Sympos. Algorithms Comput."
, nickname = "ISAAC '97"
, site = "Singapore"
@ -101937,7 +101937,7 @@ used in many computational geometry algorithms. Contains C++ code."
@inproceedings{mp-drlvd-84
, author = "T. Matsuyama and T. Phillips"
, title = "Digital Realization of the Labelled {Voronoi} Diagram and its Application to Closed Boundary Detection"
, title = "Digital Realization of the Labeled {Voronoi} Diagram and its Application to Closed Boundary Detection"
, booktitle = "Proc. IEEE Internat. Conf. Pattern Recogn."
, year = 1984
, pages = "478--480"
@ -116182,7 +116182,7 @@ dither and stipple patterns."
@techreport{plvt-edecl-96
, author = "P. Parodi and R. Lancewicki and A. Vijh and J. K. Tsotsos"
, title = "Empirically-derived Estimates of the Complexity of Labelling Line Drawings of Polyhedral Scenes"
, title = "Empirically-derived Estimates of the Complexity of Labeling Line Drawings of Polyhedral Scenes"
, number = "RBCV-TR-96-52"
, institution = "Dept. Comput. Sci., Univ. Toronto"
, address = "Toronto, ON"
@ -116674,7 +116674,7 @@ dither and stipple patterns."
@article{p-axrac-44
, author = "A. L. Patterson"
, title = "Amibguities in the {X}-ray analysis of crystal structures"
, title = "Ambiguities in the {X}-ray analysis of crystal structures"
, journal = "Physical Review"
, volume = 65
, year = 1944
@ -116759,7 +116759,7 @@ dither and stipple patterns."
@article{p-rflg-72
, author = "T. Pavlidis"
, title = "Representation of figures by labelled graphs"
, title = "Representation of figures by labeled graphs"
, journal = "Pattern Recogn."
, volume = 4
, year = 1972
@ -133630,7 +133630,7 @@ Contains C code."
@inproceedings{sc-aipta-86
, author = "J. K. Sircar and J. A. Cerbrian"
, title = "Application of image processing techniques to the automated labelling of raster digitized contours"
, title = "Application of image processing techniques to the automated labeling of raster digitized contours"
, booktitle = "Proc. 2nd Internat. Sympos. Spatial Data Handling"
, year = 1986
, pages = "171--184"

View File

@ -486,6 +486,24 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE}
HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# Note: Since the styling of scrollbars can currently not be overruled in
# Webkit/Chromium, the styling will be left out of the default doxygen.css if
# one or more extra stylesheets have been specified. So if scrollbar
# customization is desired it has to be added explicitly. For an example see the
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css
# Doxygen stores a couple of settings persistently in the browser (via e.g.
# cookies). By default these settings apply to all HTML pages generated by
# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store

View File

@ -26,8 +26,6 @@ $search
$mathjax
$darkmode
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
<!-- This should probably be an extrastylesheet instead of hardcoded. -->
<link href="$relpath$../Manual/cgal_stylesheet.css" rel="stylesheet" type="text/css" />
$extrastylesheet
</head>
<body>

Some files were not shown because too many files have changed in this diff Show More