Merge branch 'master' into CGAL-Clean_CMakeLists.txt-GF

This commit is contained in:
Mael 2022-12-05 16:03:41 +01:00 committed by GitHub
commit 6538b22e06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1006 changed files with 15036 additions and 15812 deletions

1
.github/install.sh vendored
View File

@ -1,5 +1,4 @@
#!/bin/bash
sudo add-apt-repository ppa:mikhailnov/pulseeffects -y
sudo apt-get update
sudo apt-get install -y libmpfr-dev \
libeigen3-dev qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev \

32
.github/workflows/Remove_labels.yml vendored Normal file
View File

@ -0,0 +1,32 @@
name: remove_labels
on:
pull_request_target:
types: [synchronize]
jobs:
remove_label:
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tested')
name: remove label
steps:
- name: removelabel
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: "Tested",
});
- name: Post address
uses: actions/github-script@v6
if: ${{ success() }}
with:
script: |
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: "This pull-request was previously marked with the label `Tested`, but has been modified with new commits. That label has been removed."
})

View File

@ -4,9 +4,16 @@ on:
issue_comment:
types: [created]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
permissions:
contents: read # to fetch code (actions/checkout)
pull-requests: write # to create comment
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
@ -40,15 +47,27 @@ jobs:
//get pullrequest url
const pr_number = context.payload.issue.number
return pr_number
- name: Emoji-comment
uses: actions/github-script@v6
if: steps.get_round.outputs.result != 'stop'
with:
script: |
github.rest.reactions.createForIssueComment({
comment_id: ${{ github.event.comment.id }},
owner: context.repo.owner,
repo: context.repo.repo,
content: 'rocket'
})
- uses: actions/checkout@v3
name: "checkout branch"
if: steps.get_round.outputs.result != 'stop'
with:
repository: ${{ github.repository }}
ref: refs/pull/${{ steps.get_pr_number.outputs.result }}/merge
token: ${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}
fetch-depth: 2
repository: ${{ github.repository }}
ref: refs/pull/${{ steps.get_pr_number.outputs.result }}/merge
token: ${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}
fetch-depth: 2
- name: install dependencies
if: steps.get_round.outputs.result != 'stop'
@ -83,14 +102,17 @@ jobs:
#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)
if [ "$LIST_OF_PKGS" = "" ]; then
echo "::set-output name=DoxygenError::No package affected."
echo "DoxygenError=No package affected." >> $GITHUB_OUTPUT
exit 1
fi
cd build_doc && make -j2 doc
make -j2 doc_with_postprocessing 2>tmp.log
if [ -s tmp.log ]; then
content=`cat ./tmp.log`
echo "::set-output name=DoxygenError::$(cat tmp.log)"
delimiter="$(openssl rand -hex 8)"
echo "DoxygenError<<${delimiter}" >> "${GITHUB_OUTPUT}"
cat tmp.log >> "${GITHUB_OUTPUT}"
echo "${delimiter}" >> "${GITHUB_OUTPUT}"
exit 1
fi
cd ..
@ -110,7 +132,7 @@ jobs:
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
else
echo "::set-output name=DoxygenError::This round already exists. Overwrite it with /force-build."
echo "DoxygenError=This round already exists. Overwrite it with /force-build." >> $GITHUB_OUTPUT
exit 1
fi
@ -131,11 +153,13 @@ jobs:
});
- name: Post error
env:
ERRORMSG: ${{steps.build_and_run.outputs.DoxygenError}}
uses: actions/github-script@v6
if: ${{ failure() && steps.get_round.outputs.result != 'stop' }}
with:
script: |
const error = "${{steps.build_and_run.outputs.DoxygenError}}"
const error = process.env.ERRORMSG
const msg = "There was an error while building the doc: \n"+error
github.rest.issues.createComment({
owner: "CGAL",

View File

@ -4,8 +4,12 @@ on:
issue_comment:
types: [created]
permissions: {}
jobs:
build:
permissions:
pull-requests: write # to create comment
if: (github.event.comment.user.login == 'sloriot' || github.event.comment.user.login == 'lrineau') && contains(github.event.comment.body, '/testme')
runs-on: ubuntu-latest
steps:

View File

@ -2,7 +2,7 @@
<body>
<h2>AABB Tree Demo</h2>
<p>Copyright &copy;2009
<a href="http://www-sop.inria.fr/">INRIA Sophia Antipolis - Mediterranee<a/></p>
<a href="https://www.inria.fr/fr/centre-inria-universite-cote-azur">INRIA Sophia Antipolis - Mediterranee<a/></p>
<p>This application illustrates the AABB tree component
of <a href="https://www.cgal.org/">CGAL</a>, applied to polyhedron
facets and edges.</p>

View File

@ -527,7 +527,6 @@ private:
{
CGAL::Timer timer;
timer.start();
int nb_test = 0;
while ( timer.time() < duration )
{
Point a = random_point_in<K>(m_tree.bbox());
@ -539,8 +538,6 @@ private:
test(segment, m_polyhedron, m_tree, m_naive);
test(ray, m_polyhedron, m_tree, m_naive);
test(line, m_polyhedron, m_tree, m_naive);
++nb_test;
}
timer.stop();

View File

@ -370,19 +370,19 @@ namespace CGAL {
coord_type K, min_K;
const coord_type eps;
const coord_type inv_eps_2; // 1/(eps^2)
const coord_type eps_3; // test de ^3 donc points tel 1e-7 soit petit
const coord_type eps_3; // tests using cubed eps so points such that 1e-7 is small
const criteria STANDBY_CANDIDATE;
const criteria STANDBY_CANDIDATE_BIS;
const criteria NOT_VALID_CANDIDATE;
//---------------------------------------------------------------------
//Pour une visu correcte
//pour retenir les facettes selectionnees
// For a correct visualization
// to retain the selected facets
int _vh_number;
int _facet_number;
//---------------------------------------------------------------------
//Pour le post traitement
// For post-processing
mutable int _postprocessing_counter;
int _size_before_postprocessing;
@ -501,9 +501,8 @@ namespace CGAL {
}
//-------------------------------------------------------------------
// pour gerer certaines aretes interieures: a savoir celle encore connectee au
// bord (en fait seule, les aretes interieures reliant 2 bords nous
// interressent...)
// to handle certain interior edges, meaning those still connected to the boundary
// (actually, only the interior edges linking two boundaries are relevant)
inline void set_interior_edge(Vertex_handle w, Vertex_handle v)
{
@ -806,7 +805,7 @@ namespace CGAL {
if ((number_of_facets() > static_cast<int>(T.number_of_vertices()))&&
(NB_BORDER_MAX > 0))
// en principe 2*nb_sommets = nb_facettes: y a encore de la marge!!!
// in theory 2*vertices_n = facets_n: plenty of room!!!
{
while(postprocessing()){
extend2_timer.start();
@ -1068,9 +1067,8 @@ namespace CGAL {
//---------------------------------------------------------------------
bool is_interior_edge(const Edge_like& key) const
// pour gerer certaines aretes interieures: a savoir celle encore connectee au
// bord (en fait seule, les aretes interieures reliant 2 bords nous
// interressent...)
// to handle certain interior edges, meaning those still connected to the boundary
// (actually, only the interior edges linking two boundaries are relevant)
{
return (is_interior_edge(key.first, key.second)||
is_interior_edge(key.second, key.first));
@ -1299,7 +1297,6 @@ namespace CGAL {
#ifdef AFSR_LAZY
value = lazy_squared_radius(cc);
#else
// qualified with CGAL, to avoid a compilation error with clang
if(volume(pp0, pp1, pp2, pp3) != 0){
value = T.geom_traits().compute_squared_radius_3_object()(pp0, pp1, pp2, pp3);
} else {
@ -1337,7 +1334,6 @@ namespace CGAL {
{
value = compute_scalar_product(Vc, Vc) - ac*ac/norm_V;
if ((value < 0)||(norm_V > inv_eps_2)){
// qualified with CGAL, to avoid a compilation error with clang
value = T.geom_traits().compute_squared_radius_3_object()(cp1, cp2, cp3);
}
}
@ -1365,7 +1361,7 @@ namespace CGAL {
/// @}
//---------------------------------------------------------------------
// For a border edge e we determine the incident facet which has the highest
// For a border edge e, we determine the incident facet which has the highest
// chance to be a natural extension of the surface
Radius_edge_type
@ -1425,8 +1421,7 @@ namespace CGAL {
P2Pn = construct_vector(p2, pn);
v2 = construct_cross_product(P2P1,P2Pn);
//pas necessaire de normer pour un bon echantillon:
// on peut alors tester v1*v2 >= 0
// no need to normalize for a correct sampling: one can then test v1*v2 >= 0
norm = sqrt(norm1 * compute_scalar_product(v2,v2));
pscal = v1*v2;
// check if the triangle will produce a sliver on the surface
@ -1437,7 +1432,8 @@ namespace CGAL {
if (tmp < min_valueA)
{
PnP1 = p1-pn;
// DELTA represente la qualite d'echantillonnage du bord
// DELTA encodes the quality of the border sampling
//
// We skip triangles having an internal angle along e
// whose cosinus is smaller than -DELTA
// that is the angle is larger than arcos(-DELTA)
@ -1462,37 +1458,36 @@ namespace CGAL {
if ((min_valueA == infinity()) || border_facet) // bad facets case
{
min_facet = Facet(c, i); // !!! sans aucune signification....
value = NOT_VALID_CANDIDATE; // Attention a ne pas inserer dans PQ
min_facet = Facet(c, i); // !!! without any meaning....
value = NOT_VALID_CANDIDATE; // Do not insert in the PQ
}
else
{
min_facet = min_facetA;
//si on considere seulement la pliure value appartient a [0, 2]
//value = coord_type(1) - min_valueP;
// si la pliure est bonne on note suivant le alpha sinon on prend en compte la
// pliure seule... pour discriminer entre les bons slivers...
// si on veut discriminer les facettes de bonnes pliures plus finement
// alors -(1+1/min_valueA) app a [-inf, -1]
// -min_valueP app a [-1, 1]
// If we only consider the fold value belongs to [0, 2]
// value = coord_type(1) - min_valueP;
// If the fold is OK, we rate based on the alpha value. Otherwise, take only the fold into account
// to discriminate between good slivers.
//
// If we wish to discriminate the facets with good folds more finely,
// then:
// -(1+1/min_valueA) is within [-inf, -1]
// -min_valueP is within [-1, 1]
//
if (min_valueP > COS_BETA)
value = -(coord_type(1) + coord_type(1)/min_valueA);
else
{
//on refuse une trop grande non-uniformite
// reject overly non-uniform values
coord_type tmp = priority (*this, c, i);
if (min_valueA <= K * tmp)
value = - min_valueP;
else
{
value = STANDBY_CANDIDATE; // tres mauvais candidat mauvaise pliure
// + grand alpha... a traiter plus tard....
min_K =
(std::min)(min_K,
min_valueA/tmp);
value = STANDBY_CANDIDATE; // extremely bad candidate, bad fold + large alpha; handle later
min_K = (std::min)(min_K, min_valueA/tmp);
}
}
}
@ -1597,7 +1592,7 @@ namespace CGAL {
}
//---------------------------------------------------------------------
// test de reciprocite avant de recoller une oreille anti-singularite
// reciprocity test before glueing anti-singularity ear
int
test_merge(const Edge_like& ordered_key, const Border_elt& result,
const Vertex_handle& v, const coord_type& ear_alpha)
@ -1622,12 +1617,12 @@ namespace CGAL {
coord_type norm = sqrt(compute_scalar_product(v1, v1) * compute_scalar_product(v2, v2));
if (v1*v2 > COS_BETA*norm)
return 1; // label bonne pliure sinon:
return 1; // mark as good fold
if (ear_alpha <= K * priority(*this, neigh, n_ind))
return 2; // label alpha coherent...
return 2; // mark alpha consistent
return 0; //sinon oreille a rejeter...
return 0; // ear to be rejected
}
@ -1753,7 +1748,7 @@ namespace CGAL {
Edge_like ordered_key(v1,v2);
if (!is_border_elt(ordered_key, result12))
std::cerr << "+++probleme coherence bord <validate>" << std::endl;
std::cerr << "+++issue with border consistency <validate>" << std::endl;
bool is_border_el1 = is_border_elt(ordered_el1, result1),
is_border_el2 = is_border_elt(ordered_el2, result2);
@ -1782,8 +1777,7 @@ namespace CGAL {
return FINAL_CASE;
}
//---------------------------------------------------------------------
//on peut alors marquer v1 et on pourrait essayer de merger
//sans faire de calcul inutile???
// we can then mark v1 and could try to merge without any useless computation???
if (is_border_el1)
{
Edge_incident_facet edge_Ifacet_2(Edge(c, i, edge_Efacet.first.third),
@ -1796,7 +1790,7 @@ namespace CGAL {
return EAR_CASE;
}
//---------------------------------------------------------------------
//idem pour v2
//idem for v2
if (is_border_el2)
{
Edge_incident_facet edge_Ifacet_1(Edge(c, i, edge_Efacet.first.second),
@ -1852,9 +1846,9 @@ namespace CGAL {
// border incident to a point... _mark<1 even if th orientation
// may be such as one vh has 2 successorson the same border...
{
// a ce niveau on peut tester si le recollement se fait en
// maintenant la compatibilite d'orientation des bords (pour
// surface orientable...) ou si elle est brisee...
// at this level, we can test if glueing can be done while keeping
// compatible orientations for the borders (for an orientable surface...)
// or if it is broken
Edge_incident_facet edge_Ifacet_1(Edge(c, i, edge_Efacet.first.second),
edge_Efacet.second);
Edge_incident_facet edge_Ifacet_2(Edge(c, i, edge_Efacet.first.third),
@ -1884,8 +1878,8 @@ namespace CGAL {
Border_elt result_ear2;
Edge_like ear1_e, ear2_e;
// pour maintenir la reconstruction d'une surface orientable :
// on verifie que les bords se recollent dans des sens opposes
// to preserve the reconstruction of an orientable surface, we check that
// borders glue to one another in opposite directions
if (ordered_key.first==v1)
{
ear1_e = Edge_like(c->vertex(i), ear1_c ->vertex(ear1_i));
@ -1897,7 +1891,7 @@ namespace CGAL {
ear2_e = Edge_like(c->vertex(i), ear2_c ->vertex(ear2_i));
}
//maintient la surface orientable
// preserves orientability of the surface
bool is_border_ear1 = is_ordered_border_elt(ear1_e, result_ear1);
bool is_border_ear2 = is_ordered_border_elt(ear2_e, result_ear2);
bool ear1_valid(false), ear2_valid(false);
@ -1931,8 +1925,7 @@ namespace CGAL {
{
Validation_case res = validate(ear1, e1.first);
if (!((res == EAR_CASE)||(res == FINAL_CASE)))
std::cerr << "+++probleme de recollement : cas "
<< res << std::endl;
std::cerr << "+++issue in glueing: case " << res << std::endl;
e2 = compute_value(edge_Ifacet_2);
if (ordered_key.first == v1)
@ -1948,8 +1941,7 @@ namespace CGAL {
{
Validation_case res = validate(ear2, e2.first);
if (!((res == EAR_CASE)||(res == FINAL_CASE)))
std::cerr << "+++probleme de recollement : cas "
<< res << std::endl;
std::cerr << "+++issue in glueing : case " << res << std::endl;
e1 = compute_value(edge_Ifacet_1);
if (ordered_key.first == v1)
@ -1962,25 +1954,23 @@ namespace CGAL {
_ordered_border.insert(Radius_ptr_type(e1.first, p1));
}
}
else// les deux oreilles ne se recollent pas sur la meme arete...
else // both ears do not glue on the same edge
{
// on resoud la singularite.
// resolve the singularity
if (ear1_valid)
{
Validation_case res = validate(ear1, e1.first);
if (!((res == EAR_CASE)||(res == FINAL_CASE)))
std::cerr << "+++probleme de recollement : cas "
<< res << std::endl;
std::cerr << "+++issue in glueing: case " << res << std::endl;
}
if (ear2_valid)
{
Validation_case res = validate(ear2, e2.first);
if (!((res == EAR_CASE)||(res == FINAL_CASE)))
std::cerr << "+++probleme de recollement : cas "
<< res << std::endl;
std::cerr << "+++issue in glueing : case " << res << std::endl;
}
// on met a jour la PQ s'il y a lieu... mais surtout pas
// avant la resolution de la singularite
// Update the PQ if needed, but not before resolving the singularity
if (!ear1_valid)
{
_ordered_border.insert(Radius_ptr_type(e1.first, p1));
@ -2020,7 +2010,7 @@ namespace CGAL {
if (new_candidate.first == STANDBY_CANDIDATE)
{
// a garder pour un K un peu plus grand...
// put aside for a slightly larger K
new_candidate.first = STANDBY_CANDIDATE_BIS;
}
@ -2042,8 +2032,8 @@ namespace CGAL {
void
extend()
{
// initilisation de la variable globale K: qualite d'echantillonnage requise
K = K_init; // valeur d'initialisation de K pour commencer prudemment...
// Initialize the global variable K: required sampling quality
K = K_init; // initial value of K to start carefully
coord_type K_prev = K;
Vertex_handle v1, v2;
@ -2052,7 +2042,7 @@ namespace CGAL {
}
do
{
min_K = infinity(); // pour retenir le prochain K necessaire pour progresser...
min_K = infinity(); // to store the next K required to progress
do
{
@ -2095,7 +2085,7 @@ namespace CGAL {
{
new_candidate = compute_value(mem_Ifacet);
if ((new_candidate != mem_e_it))
// &&(new_candidate.first < NOT_VALID_CANDIDATE))
// &&(new_candidate.first < NOT_VALID_CANDIDATE))
{
IO_edge_type* pnew =
set_again_border_elt(key_tmp.first, key_tmp.second,
@ -2111,8 +2101,7 @@ namespace CGAL {
(_ordered_border.begin()->first < STANDBY_CANDIDATE_BIS));
K_prev = K;
K += (std::max)(K_step, min_K - K + eps);
// on augmente progressivement le K mais on a deja rempli sans
// faire des betises auparavant...
// Progressively increase K, but having already filled without issue beforehand
}
while((!_ordered_border.empty())&&(K <= K)&&(min_K != infinity())&&(K!=K_prev));
@ -2125,9 +2114,8 @@ namespace CGAL {
//---------------------------------------------------------------------
// En principe, si l'allocateur de cellules etait bien fait on aurait pas besoin
// de mettre a jour les valeurs rajoutees pour les cellules a la main...
// In theory, if the cell allocator were properly made, one would not need to manually update
// the values added for the cells
void
re_init_for_free_cells_cache(const Vertex_handle& vh)
{
@ -2152,9 +2140,8 @@ namespace CGAL {
int index = c->index(vh);
Cell_handle neigh = c->neighbor(index);
int n_ind = neigh->index(c);
neigh->set_smallest_radius(n_ind, -1); // pour obliger le recalcul
// si c est selectionnee c'est qu'elle est aussi le mem_IFacet renvoye par
// compute_value... donc a swapper aussi
neigh->set_smallest_radius(n_ind, -1); // forces recomputation
// if c is selected, then it is also the mem_IFacet returned by compute_value... so to be swapped too
if (c->is_selected_facet(index))
{
int fn = c->facet_number(index);
@ -2214,8 +2201,8 @@ namespace CGAL {
circ = next(circ);
}
while(circ.first.first != c);
// si on passe par la, alors y a eu un probleme....
std::cerr << "+++probleme dans la MAJ avant remove..." << std::endl;
// if we are here, something went wrong
std::cerr << "+++issue in the update before removal..." << std::endl;
return Facet(c, start.second);
}
@ -2237,7 +2224,7 @@ namespace CGAL {
ordered_map_erase(border_elt.second.first.first,
border_IO_elt(vh, vh_succ));
remove_border_edge(vh, vh_succ);
// 1- a virer au cas ou car vh va etre detruit
// 1- remove just in case since vh is about to be destroyed
remove_interior_edge(vh_succ, vh);
bool while_cond(true);
do
@ -2266,14 +2253,14 @@ namespace CGAL {
{
ordered_map_erase(result.first.first, border_IO_elt(vh_int, vh));
remove_border_edge(vh_int, vh);
// 1- a virer au cas ou car vh va etre detruit
// 1- remove just in case since vh is about to be destroyed
remove_interior_edge(vh_int, vh);
while_cond = false;
}
// a titre preventif... on essaye de s'assurer de marquer les aretes
// interieures au sens large...
// 2- a virer a tout pris pour que maintenir le sens de interior edge
// As a preventive measure, we try to ensure marking the interior edges in a broad sense
// 2- remove to preserve the interior edge
remove_interior_edge(vh_int, vh_succ);
remove_interior_edge(vh_succ, vh_int);
@ -2304,16 +2291,16 @@ namespace CGAL {
bool
create_singularity(const Vertex_handle& vh)
{
// Pour reperer le cas de triangle isole
// To detect the isolated triangle case
if (vh->is_on_border())
{
// vh sommet 0
// vh vertex 0
Next_border_elt border_elt = *(vh->first_incident());
Vertex_handle vh_1 = border_elt.first;// sommet 1
Vertex_handle vh_1 = border_elt.first;// vertex 1
border_elt = *(vh_1->first_incident());
Vertex_handle vh_2 = border_elt.first;// sommet 2
Vertex_handle vh_2 = border_elt.first;// vertex 2
border_elt = *(vh_2->first_incident());
Vertex_handle vh_3 = border_elt.first;// sommet 0 ???
Vertex_handle vh_3 = border_elt.first;// vertex 0 ???
Cell_handle c;
int i, j, k;
if ((vh_3 == vh)&&(T.is_facet(vh, vh_1, vh_2, c, i ,j ,k)))
@ -2328,7 +2315,7 @@ namespace CGAL {
}
// Reperer le cas d'aretes interieures...
// Detect the interior edges case
std::list<Vertex_handle> vh_list;
T.incident_vertices(vh, std::back_inserter(vh_list));
@ -2402,9 +2389,9 @@ namespace CGAL {
std::list<Vertex_handle> L_v;
// Pour controler les sommets choisis sur le bord...
// To control vertices chosen on the boundary
// nombre d'aretes a partir duquel on considere que c'est irrecuperable NB_BORDER_MAX
// NB_BORDER_MAX: number of edges from which we consider that things are irrecoverable
int vh_on_border_inserted(0);
for(Finite_vertices_iterator v_it = T.finite_vertices_begin();
@ -2445,7 +2432,7 @@ namespace CGAL {
std::size_t itmp, L_v_size_mem;
L_v_size_mem = L_v.size();
if ((vh_on_border_inserted != 0)&& // pour ne post-traiter que les bords
if ((vh_on_border_inserted != 0)&& // to post-process only the borders
(L_v.size() < .1 * _size_before_postprocessing))
{
{
@ -2460,7 +2447,7 @@ namespace CGAL {
}
#ifdef VERBOSE
if(L_v.size() > 0){
std::cout << " " << L_v.size() << " non regular points." << std::endl;
std::cout << " " << L_v.size() << " non-regular points." << std::endl;
}
#endif // VERBOSE
re_compute_values();
@ -2469,7 +2456,7 @@ namespace CGAL {
postprocess_timer.stop();
return false;
}
// we stop if we removed more than 10% of points or after 20 rounds
// we stop if we removed more than 10% of points, or after 20 rounds
if ((L_v_size_mem == L_v.size())||
((_size_before_postprocessing - T.number_of_vertices()) >
.1 * _size_before_postprocessing)||
@ -2479,7 +2466,6 @@ namespace CGAL {
}
min_K = infinity();
// fin--
// if (_postprocessing_counter < 5)
// return true;
postprocess_timer.stop();

View File

@ -220,7 +220,7 @@ namespace CGAL {
else
{
if (m_incident_border->second->first != nullptr)
std::cerr << "+++probleme de MAJ du bord <Vertex_base>" << std::endl;
std::cerr << "+++issue while updating border <Vertex_base>" << std::endl;
*m_incident_border->second = elt;
}
}

View File

@ -73,7 +73,7 @@ namespace CGAL {
* in turn required by the \c CurvedKernelViaAnalysis_2 concept
* (see the documentation of the corresponding package). Therefore,
* some types and methods of the class have both an "algebraic" name
* (demanded by \c CurveKernelWithAnalysis_d_2) and an "non-algebraic name
* (demanded by \c CurveKernelWithAnalysis_d_2) and a "non-algebraic" name
* (demanded by \c CurveKernel_2).
*
* \b Algebraic_curve_kernel_2 is a template class, and needs a model
@ -356,10 +356,10 @@ public:
const OuterFunctor& outer)
: _inner(inner), _outer(outer) {}
Unary_compose(const Unary_compose& other)
: _inner(other._inner), _outer(other._outer) {}
Unary_compose(const Unary_compose& other) = default;
Unary_compose& operator=(const Unary_compose& other) = default;
Unary_compose() : _inner(::boost::none),_outer(::boost::none) {}
Unary_compose() : _inner(::boost::none),_outer(::boost::none) {}
typedef typename InnerFunctor::argument_type argument_type;
typedef typename OuterFunctor::result_type result_type;

View File

@ -45,7 +45,7 @@ namespace internal {
* @Unpublished{abbott-quadratic,
* author = {John Abbott},
* title = {Quadratic Interval Refinement for Real Roots},
* url = {http://www.dima.unige.it/~abbott/},
* url = {https://www.dima.unige.it/~abbott/},
* note = {Poster presented at the 2006 Internat. Sympos. on Symbolic
and Algebraic Computation (ISSAC 2006)}
* }

View File

@ -1147,8 +1147,8 @@ public:
Bitstream_descartes() : Base(new Rep()) {}
//! Copy constructor
Bitstream_descartes(const Self& other) : Base(static_cast<const Base&>(other))
{}
Bitstream_descartes(const Self& other) = default;
Bitstream_descartes& operator=(const Self& other) = default;
/*!
* \brief Constructor for a polynomial \c f

View File

@ -436,6 +436,9 @@ public:
friend class CGAL::internal::Bitstream_descartes_E08_tree<TRAITS>;
friend class CGAL::internal::Bitstream_descartes_E08_tree_rep<TRAITS>;
Bitstream_descartes_E08_node(const Self&) = default;
Self& operator= (const Self&) = delete;
private:
// "node data" (set individually in subdivision)
Integer lower_num_, upper_num_; // TODO use lower_num_, width_num_ instead
@ -466,8 +469,6 @@ private:
log_eps_ = n.log_eps_;
log_C_eps_ = n.log_C_eps_;
}
Self& operator= (const Self&) = delete;
}; // struct Bitstream_descartes_E08_node

View File

@ -525,6 +525,9 @@ public:
friend class internal::Bitstream_descartes_rndl_tree<TRAITS>;
friend class internal::Bitstream_descartes_rndl_tree_rep<TRAITS>;
Bitstream_descartes_rndl_node(const Self&) = default;
Self& operator= (const Self&) = delete;
private:
// "node data" (set individually in subdivision)
Integer lower_num_, upper_num_; // TODO use lower_num_, width_num_ instead
@ -557,8 +560,6 @@ private:
log_eps_ = n.log_eps_;
log_C_eps_ = n.log_C_eps_;
}
Self& operator= (const Self&)=delete;
}; // struct Bitstream_descartes_rndl_node

View File

@ -762,7 +762,7 @@ std::istream& operator >> (
is >> arcno;
// read the ")
// read the ")"
swallow(is, ')');
pt = Xy_coordinate_2(x, curve, arcno);

View File

@ -187,7 +187,7 @@ void test_real_root_isolator() {
assert( n == number_of_roots);
}{
//std::cout << "Kameny 3\n";
// from http://www-sop.inria.fr/saga/POL/BASE/1.unipol
// from https://www-sop.inria.fr/saga/POL/BASE/1.unipol/
NT c = CGAL::ipower(NT(10),12);
Polynomial P(NT(-3),NT(0),c);
@ -202,7 +202,7 @@ void test_real_root_isolator() {
assert(3 == internal::check_intervals_real_root_isolator<Isolator>(P));
}{
//std::cout << "Kameny 4\n";
// from http://www-sop.inria.fr/saga/POL/BASE/1.unipol
// from https://www-sop.inria.fr/saga/POL/BASE/1.unipol
NT z(0);
NT a = CGAL::ipower(NT(10),24); // a = 10^{24}
@ -218,7 +218,7 @@ void test_real_root_isolator() {
assert( 4 == internal::check_intervals_real_root_isolator<Isolator>(P));
}{
//std::cout << "Polynomial with large and small clustered roots\n";
// from http://www-sop.inria.fr/saga/POL/BASE/1.unipol
// from https://www-sop.inria.fr/saga/POL/BASE/1.unipol
// there seems to be some error or misunderstanding
NT z(0);

View File

@ -23,7 +23,6 @@
#include <CGAL/assertions.h>
#include <CGAL/basic.h>
#include <CGAL/triangulation_assertions.h>
#include <CGAL/Unique_hash_map.h>
#include <CGAL/utility.h>
@ -849,7 +848,7 @@ Alpha_shape_2<Dt,EACT>::initialize_interval_edge_map()
{
// both faces are infinite by definition unattached
// the edge is finite by construction
CGAL_triangulation_precondition((is_infinite(pNeighbor)
CGAL_precondition((is_infinite(pNeighbor)
&& is_infinite(pFace)));
interval = make_triple(squared_radius(pFace, i),
Infinity,
@ -859,7 +858,7 @@ Alpha_shape_2<Dt,EACT>::initialize_interval_edge_map()
else
{ // is_infinite(pNeighbor)
CGAL_triangulation_precondition((is_infinite(pNeighbor)
CGAL_precondition((is_infinite(pNeighbor)
&& !is_infinite(pFace)));
if (is_attached(pFace, i))
interval = make_triple(UNDEFINED,
@ -1109,7 +1108,7 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_vertex_list()const {
// which might be infinity
// write the vertex
v = (*vertex_alpha_it).second;
CGAL_triangulation_assertion((classify(v) == REGULAR));
CGAL_assertion((classify(v) == REGULAR));
Alpha_shape_vertices_list.push_back(v);
}
}
@ -1122,7 +1121,7 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_vertex_list()const {
++vertex_alpha_it)
{
v = (*vertex_alpha_it).second;
CGAL_triangulation_assertion((classify(v) == SINGULAR));
CGAL_assertion((classify(v) == SINGULAR));
Alpha_shape_vertices_list.push_back(v);
}
@ -1159,7 +1158,7 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_edges_list() const
{
pInterval = &(*edge_alpha_it).first;
CGAL_triangulation_assertion(pInterval->second != Infinity);
CGAL_assertion(pInterval->second != Infinity);
// since this happens only for convex hull of dimension 2
// thus singular
@ -1171,9 +1170,9 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_edges_list() const
// and alpha is smaller than the upper boundary
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== REGULAR));
CGAL_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== REGULAR));
Alpha_shape_edges_list.push_back(Edge((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second));
}
@ -1191,7 +1190,7 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_edges_list() const
if (pInterval->first == UNDEFINED)
{
CGAL_triangulation_assertion(pInterval->second != Infinity);
CGAL_assertion(pInterval->second != Infinity);
// since this happens only for convex hull of dimension 2
// thus singular
@ -1203,9 +1202,9 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_edges_list() const
// and alpha is smaller than the upper boundary
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== REGULAR));
CGAL_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== REGULAR));
Alpha_shape_edges_list.push_back(Edge((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second));
}
@ -1219,12 +1218,12 @@ Alpha_shape_2<Dt,EACT>::update_alpha_shape_edges_list() const
// if alpha is smaller than the upper boundary
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion(((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== REGULAR)
|| (classify((*edge_alpha_it).second.first,
CGAL_assertion(((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== SINGULAR)));
== REGULAR)
|| (classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second)
== SINGULAR)));
Alpha_shape_edges_list.push_back(Edge((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second));
}
@ -1324,7 +1323,7 @@ Alpha_shape_2<Dt,EACT>::number_of_solid_components(const Type_of_alpha& alpha) c
++face_it)
{
Face_handle pFace = face_it;
CGAL_triangulation_postcondition( pFace != nullptr);
CGAL_postcondition( pFace != nullptr);
if (classify(pFace, alpha) == INTERIOR){
Data& data = marked_face_set[pFace];
@ -1358,7 +1357,7 @@ Alpha_shape_2<Dt,EACT>::traverse(const Face_handle& pFace,
for (int i=0; i<3; i++)
{
pNeighbor = fh->neighbor(i);
CGAL_triangulation_assertion(pNeighbor != nullptr);
CGAL_assertion(pNeighbor != nullptr);
if (classify(pNeighbor, alpha) == INTERIOR){
Data& data = marked_face_set[pNeighbor];
if(data == false){
@ -1514,7 +1513,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
// write the vertex
v = (*vertex_alpha_it).second;
CGAL_triangulation_assertion((classify(v) ==
CGAL_assertion((classify(v) ==
Alpha_shape_2<Dt,EACT>::REGULAR));
// if we used Edelsbrunner and Muecke's definition
// regular means incident to a higher-dimensional face
@ -1536,7 +1535,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
{
pInterval = &(*edge_alpha_it).first;
CGAL_triangulation_assertion(pInterval->second != Infinity);
CGAL_assertion(pInterval->second != Infinity);
// since this happens only for convex hull of dimension 1
// thus singular
@ -1563,11 +1562,11 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
f = pNeighbor;
}
CGAL_triangulation_assertion((classify(f) ==
Alpha_shape_2<Dt,EACT>::INTERIOR));
CGAL_assertion((classify(f) ==
Alpha_shape_2<Dt,EACT>::INTERIOR));
CGAL_triangulation_assertion((classify(f, i) ==
Alpha_shape_2<Dt,EACT>::REGULAR));
CGAL_assertion((classify(f, i) ==
Alpha_shape_2<Dt,EACT>::REGULAR));
os << V[f->vertex(f->ccw(i))] << ' '
<< V[f->vertex(f->cw(i))] << std::endl;
@ -1595,8 +1594,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
// write the vertex
v = (*vertex_alpha_it).second;
CGAL_triangulation_assertion((classify(v) ==
Alpha_shape_2<Dt,EACT>::REGULAR));
CGAL_assertion((classify(v) == Alpha_shape_2<Dt,EACT>::REGULAR));
V[v] = number_of_vertices++;
os << v->point() << std::endl;
}
@ -1608,8 +1606,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
++vertex_alpha_it)
{
v = (*vertex_alpha_it).second;
CGAL_triangulation_assertion((classify(v) ==
Alpha_shape_2<Dt,EACT>::SINGULAR));
CGAL_assertion((classify(v) == Alpha_shape_2<Dt,EACT>::SINGULAR));
V[v] = number_of_vertices++;
os << v->point() << std::endl;
@ -1652,7 +1649,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
if (pInterval->second != Infinity &&
pInterval->second <= get_alpha())
{
CGAL_triangulation_assertion((classify(f, i) ==
CGAL_assertion((classify(f, i) ==
Alpha_shape_2<Dt,EACT>::REGULAR));
// assure that all vertices are in ccw order
if (classify(f) == Alpha_shape_2<Dt,EACT>::EXTERIOR)
@ -1665,7 +1662,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
f = pNeighbor;
}
CGAL_triangulation_assertion((classify(f) ==
CGAL_assertion((classify(f) ==
Alpha_shape_2<Dt,EACT>::INTERIOR));
os << V[f->vertex(f->ccw(i))] << ' '
@ -1680,7 +1677,7 @@ Alpha_shape_2<Dt,EACT>::op_ostream(std::ostream& os) const
// write the singular edges
if (pInterval->first != UNDEFINED)
{
CGAL_triangulation_assertion((classify(f, i) ==
CGAL_assertion((classify(f, i) ==
Alpha_shape_2<Dt,EACT>::SINGULAR));
os << V[f->vertex(f->ccw(i))] << ' '
<< V[f->vertex(f->cw(i))] << std::endl;
@ -1739,7 +1736,7 @@ Alpha_shape_2<Dt,EACT>::Output ()
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion((classify((*edge_alpha_it).second.first,
CGAL_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
REGULAR));
@ -1769,7 +1766,7 @@ Alpha_shape_2<Dt,EACT>::Output ()
if (pInterval->first == UNDEFINED)
{
CGAL_triangulation_assertion(pInterval->second != Infinity);
CGAL_assertion(pInterval->second != Infinity);
// since this happens only for convex hull of dimension 1
// thus singular
@ -1782,9 +1779,9 @@ Alpha_shape_2<Dt,EACT>::Output ()
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
REGULAR));
CGAL_assertion((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
REGULAR));
L.push_back((this->segment((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second))
.source());
@ -1802,12 +1799,12 @@ Alpha_shape_2<Dt,EACT>::Output ()
// which might be infinity
// visualize the boundary
CGAL_triangulation_assertion(((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
REGULAR) ||
(classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
SINGULAR)));
CGAL_assertion(((classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
REGULAR) ||
(classify((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second) ==
SINGULAR)));
L.push_back((this->segment((*edge_alpha_it).second.first,
(*edge_alpha_it).second.second))
.source());

View File

@ -319,7 +319,7 @@ private :
}
// the version to be used with Tag_true is templated to avoid
// instanciation through explicit instantiation of the whole class
// instantiation through explicit instantiation of the whole class
void set_alpha_min_of_vertices(Tag_false)
{
for( Finite_vertices_iterator vit = finite_vertices_begin();
@ -401,7 +401,7 @@ public:
// Returns the n-th alpha-value.
// n < size()
{
CGAL_triangulation_assertion( n > 0 &&
CGAL_assertion( n > 0 &&
n <= static_cast<int>(alpha_spectrum.size()) );
return alpha_spectrum[n-1];
}
@ -1713,7 +1713,7 @@ Alpha_shape_3<Dt,EACT>::number_of_solid_components(const NT& alpha) const
for( cell_it = finite_cells_begin(); cell_it != done; ++cell_it)
{
Cell_handle pCell = cell_it;
CGAL_triangulation_assertion(pCell != nullptr);
CGAL_assertion(pCell != nullptr);
if (classify(pCell, alpha) == INTERIOR){
Data& data = marked_cell_set[pCell];
@ -1745,7 +1745,7 @@ void Alpha_shape_3<Dt,EACT>::traverse(Cell_handle pCell,
for (int i=0; i<=3; i++)
{
pNeighbor = pCell->neighbor(i);
CGAL_triangulation_assertion(pNeighbor != nullptr);
CGAL_assertion(pNeighbor != nullptr);
if (classify(pNeighbor, alpha) == INTERIOR){
Data& data = marked_cell_set[pNeighbor];
if(data == false){

View File

@ -45,6 +45,7 @@ int main(int argc, char** argv)
const double alpha = diag_length / relative_alpha;
const double offset = diag_length / relative_offset;
std::cout << "alpha: " << alpha << ", offset: " << offset << std::endl;
// Construct the wrap
CGAL::Real_timer t;

View File

@ -47,16 +47,9 @@ int main(int argc, char** argv)
const double offset = diag_length / relative_offset;
// Construct the wrap
using Oracle = CGAL::Alpha_wraps_3::internal::Triangle_mesh_oracle<K>;
Oracle oracle;
oracle.add_triangle_mesh(input);
CGAL::Real_timer t;
t.start();
Mesh wrap;
CGAL::Alpha_wraps_3::internal::Alpha_wrap_3<Oracle> aw3(oracle);
// There is no limit on how many seeds can be used.
// However, the algorithm automatically determines whether a seed can be used
// to initialize the refinement based on a few conditions (distance to the offset, value of alpha, etc.)
@ -66,7 +59,8 @@ int main(int argc, char** argv)
Point_3(0, 50, 0) // a point within the armadillo surface
};
aw3(alpha, offset, wrap, CGAL::parameters::seed_points(std::ref(seeds)));
Mesh wrap;
alpha_wrap_3(input, alpha, offset, wrap, CGAL::parameters::seed_points(std::ref(seeds)));
t.stop();
std::cout << "Result: " << num_vertices(wrap) << " vertices, " << num_faces(wrap) << " faces" << std::endl;

View File

@ -29,7 +29,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/gate_priority_queue.h>
#include <CGAL/Alpha_wrap_3/internal/geometry_utils.h>
#include <CGAL/Alpha_wrap_3/internal/oracles.h>
@ -229,11 +229,14 @@ private:
}
public:
template <typename OutputMesh, typename NamedParameters>
template <typename OutputMesh,
typename InputNamedParameters = parameters::Default_named_parameters,
typename OutputNamedParameters = parameters::Default_named_parameters>
void operator()(const double alpha, // = default_alpha()
const double offset, // = alpha / 30.
OutputMesh& output_mesh,
const NamedParameters& np)
const InputNamedParameters& in_np = parameters::default_values(),
const OutputNamedParameters& out_np = parameters::default_values())
{
namespace PMP = Polygon_mesh_processing;
@ -241,25 +244,25 @@ public:
using parameters::get_parameter_reference;
using parameters::choose_parameter;
using OVPM = typename CGAL::GetVertexPointMap<OutputMesh, NamedParameters>::type;
OVPM ovpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
using OVPM = typename CGAL::GetVertexPointMap<OutputMesh, OutputNamedParameters>::type;
OVPM ovpm = choose_parameter(get_parameter(out_np, internal_np::vertex_point),
get_property_map(vertex_point, output_mesh));
typedef typename internal_np::Lookup_named_param_def <
internal_np::visitor_t,
NamedParameters,
InputNamedParameters,
Wrapping_default_visitor // default
>::reference Visitor;
Wrapping_default_visitor default_visitor;
Visitor visitor = choose_parameter(get_parameter_reference(np, internal_np::visitor), default_visitor);
Visitor visitor = choose_parameter(get_parameter_reference(in_np, internal_np::visitor), default_visitor);
std::vector<Point_3> no_seeds;
using Seeds = typename internal_np::Lookup_named_param_def<
internal_np::seed_points_t, NamedParameters, std::vector<Point_3> >::reference;
Seeds seeds = choose_parameter(get_parameter_reference(np, internal_np::seed_points), no_seeds);
internal_np::seed_points_t, InputNamedParameters, std::vector<Point_3> >::reference;
Seeds seeds = choose_parameter(get_parameter_reference(in_np, internal_np::seed_points), no_seeds);
const bool do_enforce_manifoldness = choose_parameter(get_parameter(np, internal_np::do_enforce_manifoldness), true);
const bool do_enforce_manifoldness = choose_parameter(get_parameter(in_np, internal_np::do_enforce_manifoldness), true);
#ifdef CGAL_AW3_TIMER
CGAL::Real_timer t;
@ -360,14 +363,6 @@ public:
}
// Convenience overloads
template <typename OutputMesh>
void operator()(const double alpha,
const double offset,
OutputMesh& output_mesh)
{
return operator()(alpha, offset, output_mesh, parameters::default_values());
}
template <typename OutputMesh>
void operator()(const double alpha,
OutputMesh& output_mesh)

View File

@ -13,8 +13,8 @@
// Andreas Fabri
// Michael Hemmer
//
#ifndef CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_TRAITS_H
#define CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_TRAITS_H
#ifndef CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_GEOM_TRAITS_H
#define CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_GEOM_TRAITS_H
#include <CGAL/license/Alpha_wrap_3.h>
@ -89,14 +89,14 @@ public:
};
template <typename GT>
class Alpha_wrap_AABB_traits
class Alpha_wrap_AABB_geom_traits
: public GT
{
public:
using Ball_3 = internal::Ball_3<GT>;
public:
Alpha_wrap_AABB_traits(const GT& gt = GT()) : GT(gt) { }
Alpha_wrap_AABB_geom_traits(const GT& gt = GT()) : GT(gt) { }
public:
class Construct_ball_3
@ -295,4 +295,4 @@ public:
} // namespace Alpha_wraps_3
} // namespace CGAL
#endif // CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_TRAITS_H
#endif // CGAL_ALPHA_WRAP_3_INTERNAL_ALPHA_WRAP_AABB_GEOM_TRAITS_H

View File

@ -145,6 +145,8 @@ public:
bool empty() const { return m_tree_ptr->empty(); }
bool do_call() const { return (!empty() || base().do_call()); }
void clear() { m_tree_ptr->clear() && base().clear(); }
public:
typename AABB_tree::Bounding_box bbox() const
{
@ -313,6 +315,8 @@ public:
bool empty() const { return m_tree_ptr->empty(); }
bool do_call() const { return !empty(); }
void clear() { m_tree_ptr->clear(); }
public:
typename AABB_tree::Bounding_box bbox() const
{

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Oracle_base.h>
#include <CGAL/AABB_primitive.h>
@ -38,7 +38,7 @@ namespace internal {
template <typename GT_>
struct PS_oracle_traits
{
using Geom_traits = Alpha_wrap_AABB_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Geom_traits = Alpha_wrap_AABB_geom_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Points = std::vector<typename GT_::Point_3>;
using PR_iterator = typename Points::const_iterator;

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Oracle_base.h>
#include <CGAL/AABB_traits.h>
@ -38,7 +38,7 @@ namespace internal {
template <typename GT_>
struct SS_oracle_traits
{
using Geom_traits = Alpha_wrap_AABB_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Geom_traits = Alpha_wrap_AABB_geom_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Segments = std::vector<typename GT_::Segment_3>;
using SR_iterator = typename Segments::const_iterator;

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Oracle_base.h>
#include <CGAL/Alpha_wrap_3/internal/splitting_helper.h>
@ -37,7 +37,7 @@ namespace internal {
template <typename GT_>
struct TM_oracle_traits
{
using Geom_traits = Alpha_wrap_AABB_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Geom_traits = Alpha_wrap_AABB_geom_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Point_3 = typename Geom_traits::Point_3;
using AABB_traits = typename AABB_tree_splitter_traits<Point_3, Geom_traits>::AABB_traits;

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Oracle_base.h>
#include <CGAL/Alpha_wrap_3/internal/splitting_helper.h>
@ -38,7 +38,7 @@ namespace internal {
template <typename GT_>
struct TS_oracle_traits
{
using Geom_traits = Alpha_wrap_AABB_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Geom_traits = Alpha_wrap_AABB_geom_traits<GT_>; // Wrap the kernel to add Ball_3 + custom Do_intersect_3
using Point_3 = typename Geom_traits::Point_3;
using AABB_traits = typename AABB_tree_splitter_traits<Point_3, Geom_traits>::AABB_traits;
using AABB_tree = typename AABB_tree_splitter_traits<Point_3, Geom_traits>::AABB_tree;

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/Alpha_wrap_3/internal/offset_intersection.h>
#include <CGAL/Alpha_wrap_3/internal/Triangle_mesh_oracle.h>

View File

@ -14,7 +14,7 @@
#include <CGAL/license/Alpha_wrap_3.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_traits.h>
#include <CGAL/Alpha_wrap_3/internal/Alpha_wrap_AABB_geom_traits.h>
#include <CGAL/AABB_tree/internal/AABB_traversal_traits.h>
#include <CGAL/AABB_primitive.h>

View File

@ -112,7 +112,7 @@ void alpha_wrap_3(const PointRange& points,
Oracle oracle(alpha, gt);
oracle.add_triangle_soup(points, faces, in_np);
AW3 alpha_wrap_builder(oracle);
alpha_wrap_builder(alpha, offset, alpha_wrap, out_np);
alpha_wrap_builder(alpha, offset, alpha_wrap, in_np, out_np);
}
// Convenience overloads
@ -261,7 +261,7 @@ void alpha_wrap_3(const TriangleMesh& tmesh,
Oracle oracle(alpha, gt);
oracle.add_triangle_mesh(tmesh, in_np);
AW3 alpha_wrap_builder(oracle);
alpha_wrap_builder(alpha, offset, alpha_wrap, out_np);
alpha_wrap_builder(alpha, offset, alpha_wrap, in_np, out_np);
}
// The convenience overloads are the same for triangle mesh & point set
@ -357,7 +357,7 @@ void alpha_wrap_3(const PointRange& points,
Oracle oracle(gt);
oracle.add_point_set(points, in_np);
AW3 alpha_wrap_builder(oracle);
alpha_wrap_builder(alpha, offset, alpha_wrap, out_np);
alpha_wrap_builder(alpha, offset, alpha_wrap, in_np, out_np);
}
// Convenience overloads, common to both mesh and point set

View File

@ -45,7 +45,6 @@ void alpha_wrap_triangle_manifoldness(Mesh& input_mesh,
Mesh nm_wrap;
CGAL::alpha_wrap_3(input_mesh, alpha, offset, nm_wrap,
CGAL::parameters::default_values(),
CGAL::parameters::do_enforce_manifoldness(false));
std::cout << "Result: " << vertices(nm_wrap).size() << " vertices, " << faces(nm_wrap).size() << " faces" << std::endl;
@ -67,7 +66,6 @@ void alpha_wrap_triangle_manifoldness(Mesh& input_mesh,
Mesh m_wrap;
CGAL::alpha_wrap_3(input_mesh, alpha, offset, m_wrap,
CGAL::parameters::default_values(),
CGAL::parameters::do_enforce_manifoldness(true));
// CGAL::IO::write_polygon_mesh("last.off", wrap, CGAL::parameters::stream_precision(17));

View File

@ -47,7 +47,6 @@ void alpha_wrap_triangle_mesh(Mesh& input_mesh,
Mesh wrap;
CGAL::alpha_wrap_3(input_mesh, alpha, offset, wrap,
CGAL::parameters::default_values(),
CGAL::parameters::do_enforce_manifoldness(enforce_manifoldness));
std::cout << "Result: " << vertices(wrap).size() << " vertices, " << faces(wrap).size() << " faces" << std::endl;

View File

@ -53,7 +53,7 @@ is_valid(bool verbose, int level) const
if (number_of_vertices() < 3) return true;
// CGAL_triangulation_assertion(result);
// CGAL_assertion(result);
for (All_edges_iterator eit = all_edges_begin();
eit != all_edges_end(); ++eit) {
@ -64,7 +64,7 @@ is_valid(bool verbose, int level) const
if ( !is_infinite(v) ) {
result = result &&
( incircle(f, v->site()) != NEGATIVE );
// CGAL_triangulation_assertion(result);
// CGAL_assertion(result);
}
Edge sym_e = sym_edge(e);
f = sym_e.first;
@ -72,7 +72,7 @@ is_valid(bool verbose, int level) const
if ( !is_infinite(v) ) {
result = result &&
( incircle(f, v->site()) != NEGATIVE );
// CGAL_triangulation_assertion(result);
// CGAL_assertion(result);
}
}
@ -83,7 +83,7 @@ is_valid(bool verbose, int level) const
std::cerr << "Apollonius diagram is NOT valid..." << std::flush;
}
// CGAL_triangulation_assertion(result);
// CGAL_assertion(result);
return result;
}
@ -100,7 +100,7 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Point_2
Apollonius_graph_2<Gt,Agds,LTag>::
circumcenter(const Face_handle& f) const
{
CGAL_triangulation_precondition (dimension()==2 || !is_infinite(f));
CGAL_precondition (dimension()==2 || !is_infinite(f));
return circumcenter(f->vertex(0)->site(),
f->vertex(1)->site(),
f->vertex(2)->site());
@ -122,7 +122,7 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Site_2
Apollonius_graph_2<Gt,Agds,LTag>::
circumcircle(const Face_handle& f) const
{
CGAL_triangulation_precondition (dimension()==2 || !is_infinite(f));
CGAL_precondition (dimension()==2 || !is_infinite(f));
return circumcircle(f->vertex(0)->site(),
f->vertex(1)->site(),
f->vertex(2)->site());
@ -178,7 +178,7 @@ typename Gt::Object_2
Apollonius_graph_2<Gt,Agds,LTag>::
dual(const Edge e) const
{
CGAL_triangulation_precondition( !is_infinite(e) );
CGAL_precondition( !is_infinite(e) );
if ( dimension() == 1 ) {
Site_2 p = (e.first)->vertex(cw(e.second))->site();
@ -207,16 +207,16 @@ dual(const Edge e) const
}
// only one of the adjacent faces is infinite
CGAL_triangulation_assertion( is_infinite( e.first ) ||
CGAL_assertion( is_infinite( e.first ) ||
is_infinite( e.first->neighbor(e.second) )
);
CGAL_triangulation_assertion( !(is_infinite( e.first ) &&
CGAL_assertion( !(is_infinite( e.first ) &&
is_infinite( e.first->neighbor(e.second) )
)
);
CGAL_triangulation_assertion
CGAL_assertion
( is_infinite( e.first->vertex(e.second) ) ||
is_infinite( tds().mirror_vertex(e.first, e.second) ) );
@ -246,7 +246,7 @@ primal(const Edge e) const
// typedef typename Geom_traits::Hyperbola_segment_2 Hyperbola_segment;
// typedef typename Geom_traits::Parabola_segment_2 Parabola_segment;
// CGAL_triangulation_precondition( !is_infinite(e) );
// CGAL_precondition( !is_infinite(e) );
if ( number_of_vertices() != 2 ) {
if ( is_infinite(e) ) {
@ -257,7 +257,7 @@ primal(const Edge e) const
Site_2 s = tds().mirror_vertex( e.first, e.second )->site();
ray = construct_Apollonius_primal_ray_2_object()(p,r,s);
} else {
CGAL_triangulation_assertion
CGAL_assertion
( is_infinite( e.first->vertex(ccw(e.second)) ) );
Site_2 q = e.first->vertex( cw(e.second) )->site();
Site_2 r = e.first->vertex( e.second )->site();
@ -317,11 +317,11 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Edge
Apollonius_graph_2<Gt,Agds,LTag>::
flip(Face_handle& f, int i)
{
CGAL_triangulation_precondition ( f != Face_handle() );
CGAL_triangulation_precondition (i == 0 || i == 1 || i == 2);
CGAL_triangulation_precondition( dimension()==2 );
CGAL_precondition ( f != Face_handle() );
CGAL_precondition (i == 0 || i == 1 || i == 2);
CGAL_precondition( dimension()==2 );
CGAL_triangulation_precondition( f->vertex(i) != tds().mirror_vertex(f,i) );
CGAL_precondition( f->vertex(i) != tds().mirror_vertex(f,i) );
this->_tds.flip(f, i);
@ -383,7 +383,7 @@ void
Apollonius_graph_2<Gt,Agds,LTag>::
remove_degree_2(Vertex_handle v)
{
CGAL_triangulation_precondition( is_degree_2(v) );
CGAL_precondition( is_degree_2(v) );
this->_tds.remove_degree_2( v );
}
@ -403,7 +403,7 @@ void
Apollonius_graph_2<Gt,Agds,LTag>::
remove_degree_3(Vertex_handle v, Face_handle f)
{
CGAL_triangulation_precondition( degree(v) == 3 );
CGAL_precondition( degree(v) == 3 );
this->_tds.remove_degree_3(v, f);
}
@ -416,7 +416,7 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Vertex_handle
Apollonius_graph_2<Gt,Agds,LTag>::
insert_first(const Site_2& p)
{
CGAL_triangulation_precondition(number_of_vertices() == 0);
CGAL_precondition(number_of_vertices() == 0);
Vertex_handle v = this->_tds.insert_second();
v->set_site(p);
return v;
@ -428,7 +428,7 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Vertex_handle
Apollonius_graph_2<Gt,Agds,LTag>::
insert_second(const Site_2& p)
{
CGAL_triangulation_precondition( number_of_vertices() == 1 );
CGAL_precondition( number_of_vertices() == 1 );
Vertex_handle vnew;
Vertex_handle v(finite_vertices_begin());
if ( is_hidden(v->site(), p) ) {
@ -439,7 +439,7 @@ insert_second(const Site_2& p)
v->set_site(p);
vnew = v;
} else {
CGAL_triangulation_precondition(number_of_vertices() == 1);
CGAL_precondition(number_of_vertices() == 1);
vnew = this->_tds.insert_dim_up(infinite_vertex(), true);
vnew->set_site(p);
// vnew = Delaunay_graph::insert_second(p);
@ -453,7 +453,7 @@ typename Apollonius_graph_2<Gt,Agds,LTag>::Vertex_handle
Apollonius_graph_2<Gt,Agds,LTag>::
insert_third(const Site_2& p)
{
CGAL_triangulation_precondition( number_of_vertices() == 2 );
CGAL_precondition( number_of_vertices() == 2 );
Face_handle f((*finite_edges_begin()).first);
Vertex_handle v1(f->vertex(0));
@ -592,7 +592,7 @@ insert_third(const Site_2& p)
}
}
// CGAL_triangulation_assertion( is_valid() );
// CGAL_assertion( is_valid() );
return v;
}
@ -1752,8 +1752,8 @@ void
Apollonius_graph_2<Gt,Agds,LTag>::
remove(Vertex_handle v)
{
CGAL_triangulation_precondition( v != Vertex_handle() );
CGAL_triangulation_precondition( !is_infinite(v) );
CGAL_precondition( v != Vertex_handle() );
CGAL_precondition( !is_infinite(v) );
// find a neighbor of v to use for point location of hidden sites to
// be re-inserted
@ -1900,7 +1900,7 @@ remove_degree_d_vertex(Vertex_handle v)
CGAL_assertion( found );
CGAL_USE(found);
}
CGAL_triangulation_precondition( degree(v) == 3 );
CGAL_precondition( degree(v) == 3 );
this->_tds.remove_degree_3( v, Face_handle() );

View File

@ -332,8 +332,8 @@ void
Apollonius_graph_hierarchy_2<Gt,Agds,LTag>::
remove(Vertex_handle v)
{
CGAL_triangulation_precondition( v != Vertex_handle());
CGAL_triangulation_precondition( !is_infinite(v));
CGAL_precondition( v != Vertex_handle());
CGAL_precondition( !is_infinite(v));
// get the hidden circles
typename Apollonius_graph_base::Site_list wp_list;

View File

@ -19,7 +19,6 @@
#include <list>
#include <CGAL/Triangulation_ds_vertex_base_2.h>
#include <CGAL/triangulation_assertions.h>
namespace CGAL {

View File

@ -48,12 +48,10 @@ ArrangementPainterOstream<CGAL::Arr_polyline_traits_2<SegmentTraits>>&
ArrangementPainterOstream<CGAL::Arr_polyline_traits_2<SegmentTraits>>::
operator<<(const X_monotone_curve_2& curve)
{
int cnt = 0;
for (typename X_monotone_curve_2::Subcurve_const_iterator it =
curve.subcurves_begin();
it != curve.subcurves_end(); ++it)
{
cnt++;
this->painterOstream << *it;
}
@ -200,7 +198,6 @@ ArrangementPainterOstream<CGAL::Arr_conic_traits_2<
auto p_curr = app_pts.begin();
auto end_pts = app_pts.end();
auto p_next = p_curr + 1;
int count = 0;
do
{
QPointF p1(p_curr->first, p_curr->second);
@ -208,7 +205,6 @@ ArrangementPainterOstream<CGAL::Arr_conic_traits_2<
this->qp->drawLine(p1, p2);
p_curr++;
p_next++;
++count;
} while (p_next != end_pts);
};

View File

@ -19,7 +19,7 @@
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
** will be met: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
@ -31,7 +31,7 @@
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
** met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.

View File

@ -19,7 +19,7 @@
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
** will be met: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
@ -31,7 +31,7 @@
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
** met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.

View File

@ -1937,8 +1937,8 @@ perform a point-location query on the resulting arrangement. The query
point \f$q\f$ is drawn as a plus sign. The face that contains it is
drawn with a shaded texture. The program calls an instance of the
function template `print_arrangement_size()`, which prints
quantitative measures of the arrangement; see \ref lst_paz "code
example" for its listing in Section \ref aos_ssec-basic-arr_class.
quantitative measures of the arrangement; see \ref lst_paz
"code example" for its listing in Section \ref aos_ssec-basic-arr_class.
\cgalExample{Arrangement_on_surface_2/incremental_insertion.cpp}

View File

@ -112,7 +112,7 @@ public:
typedef X_monotone_curve_2 Curve_2;
//! A functor that trims curves.
Class Trim_2 {
class Trim_2 {
public:
//! \name Creation
//! @{

View File

@ -8,7 +8,6 @@ namespace ArrTraits {
* \cgalHasModel ArrangementClosedLeftTraits_2::Compare_y_on_boundary_2
* \cgalHasModel ArrangementClosedRightTraits_2::Compare_y_on_boundary_2
* \cgalHasModel ArrangementIdentifiedVerticalTraits_2::Compare_y_on_boundary_2
* \cgalHasModel ArrangementOpenBoundaryTraits_2::Compare_y_on_boundary_2
* \cgalHasModel ArrangementSphericalBoundaryTraits_2::Compare_y_on_boundary_2
*/
class CompareYOnBoundary_2 {

View File

@ -316,7 +316,7 @@ _vertical_ray_shoot(const Point_2& p, bool shoot_up) const
// face) we check the isolated vertices inside the face to check whether there
// is an isolated vertex right above/below the query point.
//
template <class Arrangement>
template <typename Arrangement>
typename Arr_trapezoid_ric_point_location<Arrangement>::result_type
Arr_trapezoid_ric_point_location<Arrangement>::
_check_isolated_for_vertical_ray_shoot (Halfedge_const_handle halfedge_found,
@ -324,40 +324,36 @@ _check_isolated_for_vertical_ray_shoot (Halfedge_const_handle halfedge_found,
bool shoot_up,
const Td_map_item& tr) const
{
const auto* gt = this->arrangement()->geometry_traits();
const Comparison_result point_above_under = (shoot_up ? SMALLER : LARGER);
typename Geometry_traits_2::Compare_x_2 compare_x =
this->arrangement()->traits()->compare_x_2_object();
typename Geometry_traits_2::Compare_xy_2 compare_xy =
this->arrangement()->traits()->compare_xy_2_object();
typename Geometry_traits_2::Compare_y_at_x_2 compare_y_at_x =
this->arrangement()->traits()->compare_y_at_x_2_object();
auto compare_x = gt->compare_x_2_object();
auto compare_xy = gt->compare_xy_2_object();
auto compare_y_at_x = gt->compare_y_at_x_2_object();
Isolated_vertex_const_iterator iso_verts_it;
Vertex_const_handle closest_iso_v;
const Vertex_const_handle invalid_v;
const Halfedge_const_handle invalid_he;
Face_const_handle face;
Vertex_const_handle closest_iso_v;
const Vertex_const_handle invalid_v;
const Halfedge_const_handle invalid_he;
// If the closest feature is a valid halfedge, take its incident face.
// Otherwise, take the unbounded face.
if (halfedge_found == invalid_he)
face = _get_unbounded_face(tr, p, All_sides_oblivious_category());
else
face = halfedge_found->face();
Face_const_handle face = (halfedge_found == invalid_he) ?
_get_unbounded_face(tr, p, All_sides_oblivious_category()) :
halfedge_found->face();
// Go over the isolated vertices in the face.
// The following statement pacifies MSVC. Without it the implicit conversion
// from the iterator to the corresponding handle fails!
Isolated_vertex_const_iterator iso_verts_it;
for (iso_verts_it = face->isolated_vertices_begin();
iso_verts_it != face->isolated_vertices_end(); ++iso_verts_it)
{
// The current isolated vertex should have the same x-coordinate as the
// query point in order to be below or above it.
if (compare_x (p, iso_verts_it->point()) != EQUAL)
continue;
if (compare_x (p, iso_verts_it->point()) != EQUAL) continue;
// Make sure the isolated vertex is above the query point (if we shoot up)
// or below it (if we shoot down).
if (compare_xy (p, iso_verts_it->point()) != point_above_under)
continue;
if (compare_xy (p, iso_verts_it->point()) != point_above_under) continue;
// Check if the current isolated vertex lies closer to the query point than
// the closest feature so far.
@ -379,12 +375,10 @@ _check_isolated_for_vertical_ray_shoot (Halfedge_const_handle halfedge_found,
// If we found an isolated vertex above (or under) the query point, return
// a handle to this vertex.
if (closest_iso_v != invalid_v)
return make_result(closest_iso_v);
if (closest_iso_v != invalid_v) return make_result(closest_iso_v);
// If we are inside the unbounded face, return this face.
if (halfedge_found == invalid_he)
return make_result(face);
if (halfedge_found == invalid_he) return make_result(face);
// Return the halfedge lying above (or below) the query point.
return make_result(halfedge_found);

View File

@ -776,7 +776,7 @@ _is_in_connected_component (const Point_2& p,
//-----------------------------------------------------------------------------
// Find the first halfedge around a given target vertex, when going clockwise
// from "6 o'clock" around this vertex (when shooting up) or starting from
// "12 o'clock (when shooting down).
// "12 o'clock" (when shooting down).
//
template <class Arrangement>
typename Arr_walk_along_line_point_location<Arrangement>::Halfedge_const_handle

View File

@ -1114,7 +1114,7 @@ public:
// model of this concept.
//
// The following implementation is inspired by
// http://stackoverflow.com/a/11816999/1915421
// https://stackoverflow.com/a/11816999/1915421
template <typename T>
struct Void {

View File

@ -183,7 +183,7 @@ protected:
/*!
* Find the first halfedge around a given target vertex, when going clockwise
* from "6 o'clock" around this vertex (when shooting up) or starting from
* "12 o'clock (when shooting down).
* "12 o'clock" (when shooting down).
* \param v The given vertex.
* \param shoot_up If (true) we should start from "6 o'clock",
* if (false) we should start from "12 o'clock".

View File

@ -164,7 +164,7 @@ enum Fig_depth
/*!
* \class A class for writing geometric objects in a FIG format (version 3.2).
* For more details, see: http://www.xfig.org/userman/fig-format.html
* For more details, see: https://mcj.sourceforge.net/
*/
template <class Kernel_>
class Fig_stream

View File

@ -74,7 +74,7 @@ int main(int argc, char** argv)
// Ad hoc property_map to store normals. Face_index_map is used to
// map face_descriptors to a contiguous range of indices. See
// http://www.boost.org/libs/property_map/doc/vector_property_map.html
// https://www.boost.org/libs/property_map/doc/vector_property_map.html
// for details.
boost::vector_property_map<Vector, Face_index_map>
normals(static_cast<unsigned>(num_faces(lcc)), get(CGAL::face_index, lcc));

View File

@ -79,7 +79,7 @@ int main(int argc, char** argv)
// Ad hoc property_map to store normals. Face_index_map is used to
// map face_descriptors to a contiguous range of indices. See
// http://www.boost.org/libs/property_map/doc/vector_property_map.html
// https://www.boost.org/libs/property_map/doc/vector_property_map.html
// for details.
boost::vector_property_map<Vector, Face_index_map>
normals(static_cast<unsigned>(num_faces(P)), get(CGAL::face_index, P));

View File

@ -38,11 +38,12 @@ typename boost::graph_traits<Graph>::halfedge_descriptor
join_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
Graph& g)
{
typedef typename boost::graph_traits<Graph> Traits;
typedef typename boost::graph_traits<Graph> Traits;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
halfedge_descriptor hop = opposite(h,g);
halfedge_descriptor hprev = prev(h, g), gprev = prev(hop, g);
@ -73,17 +74,17 @@ join_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
remove_edge(edge(h, g), g);
return hprev;
}
} // namespace EulerImpl
/// \endcond
namespace Euler {
namespace Euler {
/// \ingroup PkgBGLEulerOperations
/// @{
/**
* joins the two vertices incident to `h`, (that is `source(h, g)` and
* `target(h, g)`) and removes `source(h,g)`. Returns the predecessor
@ -117,6 +118,8 @@ join_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::vertex_descriptor vertex_descriptor;
typedef Halfedge_around_target_iterator<Graph> halfedge_around_vertex_iterator;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
halfedge_descriptor hop = opposite(h, g)
, hprev = prev(hop, g)
, gprev = prev(h, g)
@ -191,8 +194,9 @@ split_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
Graph& g)
{
CGAL_assertion(h1 != h2);
CGAL_assertion(target(h1, g) == target(h2, g));
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
CGAL_precondition(h1 != h2);
CGAL_precondition(target(h1, g) == target(h2, g));
typename boost::graph_traits<Graph>::halfedge_descriptor
hnew = halfedge(add_edge(g), g),
@ -226,8 +230,11 @@ split_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
template<typename Graph>
typename boost::graph_traits<Graph>::halfedge_descriptor
split_edge(typename boost::graph_traits<Graph>::halfedge_descriptor h, Graph& g)
{ return opposite(split_vertex(prev(h,g), opposite(h,g),g), g); }
{
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
return opposite(split_vertex(prev(h,g), opposite(h,g),g), g);
}
/**
* joins the two faces incident to `h` and `opposite(h,g)`.
@ -260,8 +267,6 @@ join_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
return EulerImpl::join_face(h,g);
}
/**
* splits the face incident to `h1` and `h2`. Creates the opposite
* halfedges `h3` and `h4`, such that `next(h1,g) == h3` and `next(h2,g) == h4`.
@ -290,6 +295,12 @@ split_face(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
typedef typename boost::graph_traits<Graph> Traits;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
CGAL_precondition(h1 != h2);
CGAL_precondition(face(h1, g) == face(h2, g));
CGAL_precondition(next(h1, g) != h2 && next(h2, g) != h1);
halfedge_descriptor hnew = halfedge(add_edge(g), g);
face_descriptor fnew = add_face(g);
internal::insert_tip( hnew, h2, g);
@ -298,6 +309,7 @@ split_face(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
internal::set_face_in_face_loop(opposite(hnew,g), fnew, g);
set_halfedge(face(hnew,g), hnew, g);
set_halfedge(face(opposite(hnew,g),g), opposite(hnew,g), g);
return hnew;
}
@ -327,7 +339,9 @@ join_loop(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
typedef typename boost::graph_traits<Graph> Traits;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
CGAL_precondition( is_border(h1,g) || face(h1, g) != face(h2, g));
if (! is_border(h1,g))
remove_face(face(h1, g), g);
if (! is_border(h2,g))
@ -401,13 +415,18 @@ split_loop(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) &&
is_valid_halfedge_descriptor(h2, g) &&
is_valid_halfedge_descriptor(h3, g));
halfedge_descriptor h = h1, i = h2, j = h3;
CGAL_precondition( h != i);
CGAL_precondition( h != j);
CGAL_precondition( i != j);
CGAL_precondition( target(h,g) == target(opposite(i,g),g));
CGAL_precondition( target(i,g) == target(opposite(j,g),g));
CGAL_precondition( target(j,g) == target(opposite(h,g),g));
CGAL_precondition(h != i);
CGAL_precondition(h != j);
CGAL_precondition(i != j);
CGAL_precondition(target(h,g) == target(opposite(i,g),g));
CGAL_precondition(target(i,g) == target(opposite(j,g),g));
CGAL_precondition(target(j,g) == target(opposite(h,g),g));
// Create a copy of the triangle.
halfedge_descriptor hnew = internal::copy(h,g);
halfedge_descriptor inew = internal::copy(i,g);
@ -505,7 +524,9 @@ void remove_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
CGAL_precondition(! is_border(h,g));
face_descriptor f = face(h, g);
halfedge_descriptor end = h;
@ -551,13 +572,15 @@ add_edge(typename boost::graph_traits<Graph>::vertex_descriptor s,
typename boost::graph_traits<Graph>::vertex_descriptor t,
Graph& g)
{
CGAL_precondition(is_valid_vertex_descriptor(s, g) && is_valid_vertex_descriptor(t, g));
typename boost::graph_traits<Graph>::edge_descriptor e = add_edge(g);
set_target(halfedge(e, g), t, g);
set_target(opposite(halfedge(e, g), g), s, g);
return e;
}
/**
* checks whether a new face defined by a range of vertices (identified by their descriptors,
* `boost::graph_traits<Graph>::%vertex_descriptor`) can be added.
@ -568,6 +591,9 @@ bool can_add_face(const VertexRange& vrange, const PMesh& sm)
typedef typename boost::graph_traits<PMesh>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<PMesh>::halfedge_descriptor halfedge_descriptor;
CGAL_precondition_code(for(vertex_descriptor v : vrange))
CGAL_precondition(is_valid_vertex_descriptor(v, sm));
std::vector<typename boost::graph_traits<PMesh>::vertex_descriptor> face(vrange.begin(), vrange.end());
std::size_t N = face.size();
@ -697,6 +723,9 @@ add_face(const VertexRange& vr, Graph& g)
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
typedef typename boost::graph_traits<Graph>::edge_descriptor edge_descriptor;
CGAL_precondition_code(for(vertex_descriptor v : vr))
CGAL_precondition(is_valid_vertex_descriptor(v, g));
std::vector<vertex_descriptor> vertices(vr.begin(), vr.end()); // quick and dirty copy
unsigned int n = (unsigned int)vertices.size();
//check that every vertex is unique
@ -1115,7 +1144,9 @@ void make_hole(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::face_descriptor face_descriptor;
typedef Halfedge_around_face_iterator<Graph> halfedge_around_face_iterator;
CGAL_precondition(! is_border(h,g));
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
CGAL_precondition(!is_border(h, g));
face_descriptor fd = face(h, g);
halfedge_around_face_iterator hafib, hafie;
for(boost::tie(hafib, hafie) = halfedges_around_face(h, g);
@ -1139,6 +1170,9 @@ void fill_hole(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::face_descriptor face_descriptor;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
CGAL_precondition(is_border(h, g));
face_descriptor f = add_face(g);
for(halfedge_descriptor hd : halfedges_around_face(h,g)){
set_face(hd, f,g);
@ -1179,6 +1213,9 @@ add_center_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
CGAL_precondition(!is_border(h, g));
halfedge_descriptor hnew = halfedge(add_edge(g),g);
vertex_descriptor vnew = add_vertex(g);
internal::close_tip(hnew, vnew, g);
@ -1236,6 +1273,8 @@ remove_center_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename boost::graph_traits<Graph> Traits;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
// h points to the vertex that gets removed
halfedge_descriptor h2 = opposite(next(h, g), g);
halfedge_descriptor hret = prev(h, g);
@ -1283,14 +1322,28 @@ add_vertex_and_face_to_border(typename boost::graph_traits<Graph>::halfedge_desc
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
Graph& g)
{
typename boost::graph_traits<Graph>::vertex_descriptor v = add_vertex(g);
typename boost::graph_traits<Graph>::face_descriptor f = add_face(g);
typename boost::graph_traits<Graph>::edge_descriptor e1 = add_edge(g);
typename boost::graph_traits<Graph>::edge_descriptor e2 = add_edge(g);
typename boost::graph_traits<Graph>::halfedge_descriptor he1= halfedge(e1, g);
typename boost::graph_traits<Graph>::halfedge_descriptor he2= halfedge(e2, g);
typename boost::graph_traits<Graph>::halfedge_descriptor ohe1= opposite(he1, g);
typename boost::graph_traits<Graph>::halfedge_descriptor ohe2= opposite(he2, g);
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
typedef typename boost::graph_traits<Graph>::edge_descriptor edge_descriptor;
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
CGAL_precondition(is_border(h1, g) && is_border(h2, g));
CGAL_precondition(h1 != h2);
CGAL_precondition_code(halfedge_descriptor h = h1;)
CGAL_precondition_code(const halfedge_descriptor done = h1;)
CGAL_precondition_code(do { if(h == h2) break; h = next(h, g); } while(h != done);)
CGAL_precondition(h != done);
vertex_descriptor v = add_vertex(g);
face_descriptor f = add_face(g);
edge_descriptor e1 = add_edge(g);
edge_descriptor e2 = add_edge(g);
halfedge_descriptor he1 = halfedge(e1, g);
halfedge_descriptor he2 = halfedge(e2, g);
halfedge_descriptor ohe1= opposite(he1, g);
halfedge_descriptor ohe2= opposite(he2, g);
set_next(ohe1, next(h1,g),g);
set_next(h1,he1,g);
@ -1340,6 +1393,7 @@ add_face_to_border(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
Graph& g)
{
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
CGAL_precondition(is_border(h1,g) == true);
CGAL_precondition(is_border(h2,g) == true);
CGAL_precondition(h1 != h2);
@ -1409,6 +1463,8 @@ collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor e,
typedef typename Traits::vertex_descriptor vertex_descriptor;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
CGAL_precondition(is_valid_edge_descriptor(e, g));
halfedge_descriptor pq = halfedge(e,g);
halfedge_descriptor qp = opposite(pq, g);
halfedge_descriptor pt = opposite(prev(pq, g), g);
@ -1520,15 +1576,17 @@ collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor e,
template<typename Graph, typename EdgeIsConstrainedMap>
typename boost::graph_traits<Graph>::vertex_descriptor
collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor v0v1,
Graph& g
, EdgeIsConstrainedMap Edge_is_constrained_map)
Graph& g,
EdgeIsConstrainedMap Edge_is_constrained_map)
{
typedef boost::graph_traits< Graph > Traits;
typedef typename Traits::vertex_descriptor vertex_descriptor;
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
CGAL_precondition(is_valid_edge_descriptor(v0v1, g));
CGAL_precondition(!get(Edge_is_constrained_map, v0v1));
halfedge_descriptor pq = halfedge(v0v1,g);
CGAL_assertion( !get(Edge_is_constrained_map,v0v1) );
halfedge_descriptor qp = opposite(pq,g);
halfedge_descriptor pt = opposite(prev(pq,g),g);
@ -1666,6 +1724,8 @@ flip_edge(typename boost::graph_traits<Graph>::halfedge_descriptor h,
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
typedef typename Traits::face_descriptor face_descriptor;
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
vertex_descriptor s = source(h,g);
vertex_descriptor t = target(h,g);
halfedge_descriptor nh = next(h,g), nnh = next(nh,g), oh = opposite(h,g), noh = next(oh,g), nnoh = next(noh,g);
@ -1706,6 +1766,8 @@ does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
typedef CGAL::Halfedge_around_source_iterator<Graph> out_edge_iterator;
CGAL_precondition(is_valid_edge_descriptor(e, g));
halfedge_descriptor v0_v1 = halfedge(e,g);
halfedge_descriptor v1_v0 = opposite(v0_v1,g);
@ -1798,9 +1860,8 @@ does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor
#ifndef CGAL_NO_DEPRECATED_CODE
/// \cond SKIP_IN_MANUAL
template<typename Graph>
bool
satisfies_link_condition(typename boost::graph_traits<Graph>::edge_descriptor e,
const Graph& g)
bool satisfies_link_condition(typename boost::graph_traits<Graph>::edge_descriptor e,
const Graph& g)
{
return does_satisfy_link_condition(e, g);
}
@ -1808,9 +1869,8 @@ bool
#endif
/// @}
} // CGAL
} // CGAL
} // namespace Euler
} // namespace CGAL
#endif /* CGAL_EULER_OPERATIONS_H */

View File

@ -109,7 +109,7 @@ off_file_input( std::istream& is, Triangulation_data_structure_2<Vb,Fb>& tds, bo
tds.set_adjacency(fn, 2, inf_edge_map);
edge_map.erase(edge_map.begin());
}
CGAL_triangulation_assertion(inf_edge_map.empty());
CGAL_assertion(inf_edge_map.empty());
}

View File

@ -195,6 +195,11 @@ make_quad(typename boost::graph_traits<Graph>::vertex_descriptor v0,
typename boost::graph_traits<Graph>::vertex_descriptor v3,
Graph& g)
{
CGAL_precondition(is_valid_vertex_descriptor(v0, g) &&
is_valid_vertex_descriptor(v1, g) &&
is_valid_vertex_descriptor(v2, g) &&
is_valid_vertex_descriptor(v3, g));
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
halfedge_descriptor h0 = halfedge(add_edge(g), g);

View File

@ -11,7 +11,7 @@
#ifndef CGAL_BOOST_GRAPH_GRAPH_TRAITS_POLYMESH_ARRAYKERNELT_H
#define CGAL_BOOST_GRAPH_GRAPH_TRAITS_POLYMESH_ARRAYKERNELT_H
// http://openmesh.org/Documentation/OpenMesh-Doc-Latest/classOpenMesh_1_1Concepts_1_1KernelT.html
// https://www.graphics.rwth-aachen.de/media/openmesh_static/Documentations/OpenMesh-Doc-Latest/a02182.html
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <CGAL/boost/graph/properties_PolyMesh_ArrayKernelT.h>
#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>

View File

@ -11,7 +11,7 @@
#ifndef CGAL_BOOST_GRAPH_GRAPH_TRAITS_TRIMESH_ARRAYKERNELT_H
#define CGAL_BOOST_GRAPH_GRAPH_TRAITS_TRIMESH_ARRAYKERNELT_H
// http://openmesh.org/Documentation/OpenMesh-Doc-Latest/classOpenMesh_1_1Concepts_1_1KernelT.html
// https://www.graphics.rwth-aachen.de/media/openmesh_static/Documentations/OpenMesh-Doc-Latest/a02182.html
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <CGAL/boost/graph/properties_TriMesh_ArrayKernelT.h>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>

File diff suppressed because it is too large Load Diff

View File

@ -11,14 +11,15 @@
#ifndef CGAL_BOOST_GRAPH_INTERNAL_HELPERS_H
#define CGAL_BOOST_GRAPH_INTERNAL_HELPERS_H
#include <boost/graph/graph_traits.hpp>
#include <boost/optional.hpp>
#include <CGAL/iterator.h>
#include <CGAL/property_map.h>
#include <CGAL/boost/graph/iterator.h>
#include <CGAL/Named_function_parameters.h>
#include <boost/iterator/function_output_iterator.hpp>
#include <tuple>
namespace CGAL {
// breaks a dependency loop between <CGAL/boost/graph/helpers.h>
@ -133,7 +134,7 @@ std::size_t
exact_num_vertices(const Graph& g)
{
typename boost::graph_traits<Graph>::vertex_iterator beg, end;
boost::tie(beg,end) = vertices(g);
std::tie(beg,end) = vertices(g);
return std::distance(beg,end);
}
@ -142,7 +143,7 @@ std::size_t
exact_num_halfedges(const Graph& g)
{
typename boost::graph_traits<Graph>::halfedge_iterator beg, end;
boost::tie(beg,end) = halfedges(g);
std::tie(beg,end) = halfedges(g);
return std::distance(beg,end);
}
@ -151,7 +152,7 @@ std::size_t
exact_num_edges(const Graph& g)
{
typename boost::graph_traits<Graph>::edge_iterator beg, end;
boost::tie(beg,end) = edges(g);
std::tie(beg,end) = edges(g);
return std::distance(beg,end);
}
@ -160,14 +161,14 @@ std::size_t
exact_num_faces(const Graph& g)
{
typename boost::graph_traits<Graph>::face_iterator beg, end;
boost::tie(beg,end) = faces(g);
std::tie(beg,end) = faces(g);
return std::distance(beg,end);
}
template<typename Graph>
bool
is_isolated(typename boost::graph_traits<Graph>::vertex_descriptor v,
Graph& g)
const Graph& g)
{
return halfedge(v, g) == boost::graph_traits<Graph>::null_halfedge();
}

View File

@ -202,7 +202,7 @@ public:
: sm_(pm.sm_)
{}
reference operator[](key_type v)
reference operator[](key_type v) const
{
#if defined(CGAL_USE_OM_POINTS)
return sm_->point(v);

View File

@ -207,13 +207,11 @@ struct Regularization_graph
prevent_unselection (prevent_unselection)
{
labels.reserve(num_faces(fg));
std::size_t nb_selected = 0;
for (fg_face_descriptor fd : faces(fg))
{
if (get(is_selected_map,fd))
{
labels.push_back(1);
++ nb_selected;
}
else
labels.push_back(0);
@ -486,7 +484,7 @@ reduce_face_selection(
\cgalParamNEnd
\cgalParamNBegin{prevent_unselection}
\cgalParamDescription{Boolean used to indicate if selection can be only expanded or if it can also be shrinked.}
\cgalParamDescription{Boolean used to indicate if selection can be only expanded or if it can also be shrunk.}
\cgalParamType{`bool`}
\cgalParamDefault{`false`}
\cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
@ -545,7 +543,7 @@ regularize_face_selection_borders(
(face_index_map));
for (mesh_face_descriptor fd : faces(mesh))
put(is_selected, fd, graph.labels[get(face_index_map,fd)]);
put(is_selected, fd, (graph.labels[get(face_index_map,fd)] != 0));
}
/// \cond SKIP_IN_MANUAL

View File

@ -1,129 +0,0 @@
// Copyright (c) 2014 GeometryFactory (France). All rights reserved.
//
// This file is part of CGAL (www.cgal.org)
//
// $URL$
// $Id$
// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial
//
//
// Author(s) : Andreas Fabri
#ifndef CGAL_BOOST_PARAMETER_H
#define CGAL_BOOST_PARAMETER_H
#include <CGAL/config.h>
#ifdef BOOST_PARAMETER_MAX_ARITY
# if (BOOST_PARAMETER_MAX_ARITY < 12)
# error "BOOST_PARAMETER_MAX_ARITY must be at least 12 for CGAL::Mesh_3"
# endif
#else
# define BOOST_PARAMETER_MAX_ARITY 12
#endif
#include <boost/parameter/name.hpp>
#if defined(__clang__) || defined(BOOST_GCC)
# define CGAL_IGNORE_UNUSED_VARIABLES \
_Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
_Pragma("GCC diagnostic ignored \"-Wunused-parameter\"")
#else
# define CGAL_IGNORE_UNUSED_VARIABLES
#endif
#if __has_warning("-Wunneeded-internal-declaration")
# define CGAL_IGNORE_UNUSED_INTERNAL_DECLARATION \
_Pragma("clang diagnostic ignored \"-Wunneeded-internal-declaration\"")
#else
# define CGAL_IGNORE_UNUSED_INTERNAL_DECLARATION
#endif
#define CGAL_IGNORE_BOOST_PARAMETER_NAME_WARNINGS \
CGAL_IGNORE_UNUSED_VARIABLES \
CGAL_IGNORE_UNUSED_INTERNAL_DECLARATION
namespace CGAL
{
namespace parameters
{
template <typename T>
struct Base
{
Base(T t) : t_(t) {}
T operator()() const { return t_; }
private:
T t_;
};
#define CGAL_BOOLEAN_PARAMETER(Class, function_true, function_false) \
struct Class : public Base<bool> { Class(bool b) : Base<bool>(b){} }; \
inline Class function_true() { return Class(true); } \
inline Class function_false() { return Class(false); }
#define CGAL_DOUBLE_PARAMETER(Class, function, precondition) \
struct Class : public Base<double> \
{ Class(double d) : Base<double>(d) { precondition(d); } }; \
inline Class function(double d) { return Class(d); }
// see <CGAL/config.h>
CGAL_PRAGMA_DIAG_PUSH
// see <CGAL/boost/parameter.h>
CGAL_IGNORE_BOOST_PARAMETER_NAME_WARNINGS
BOOST_PARAMETER_NAME( c3t3 )
BOOST_PARAMETER_NAME( domain )
BOOST_PARAMETER_NAME( criteria )
BOOST_PARAMETER_NAME( cdt )
BOOST_PARAMETER_NAME( (seeds_begin, tag) seeds_begin_)
BOOST_PARAMETER_NAME( (seeds_end, tag) seeds_end_)
BOOST_PARAMETER_NAME( (mark, tag) mark_)
BOOST_PARAMETER_NAME( (time_limit, tag) time_limit_ )
BOOST_PARAMETER_NAME( (convergence, tag) convergence_)
BOOST_PARAMETER_NAME( (max_iteration_number, tag) max_iteration_number_ )
BOOST_PARAMETER_NAME( (freeze_bound, tag) freeze_bound_)
BOOST_PARAMETER_NAME( (sliver_bound, tag) sliver_bound_)
BOOST_PARAMETER_NAME( (sliver_criterion, tag) sliver_criterion_)
BOOST_PARAMETER_NAME( (perturbation_vector, tag) perturbation_vector_)
BOOST_PARAMETER_NAME( (do_freeze, tag) do_freeze_)
BOOST_PARAMETER_NAME( (mesh_topology, tag) mesh_topology_)
BOOST_PARAMETER_NAME( (dump_after_init_prefix, tag ) dump_after_init_prefix_)
BOOST_PARAMETER_NAME( (dump_after_refine_surface_prefix, tag ) dump_after_refine_surface_prefix_)
BOOST_PARAMETER_NAME( (dump_after_refine_prefix, tag ) dump_after_refine_prefix_)
BOOST_PARAMETER_NAME( (dump_after_glob_opt_prefix, tag ) dump_after_glob_opt_prefix_)
BOOST_PARAMETER_NAME( (dump_after_perturb_prefix, tag ) dump_after_perturb_prefix_)
BOOST_PARAMETER_NAME( (dump_after_exude_prefix, tag ) dump_after_exude_prefix_)
BOOST_PARAMETER_NAME( (number_of_initial_points, tag) number_of_initial_points_)
BOOST_PARAMETER_NAME( (maximal_number_of_vertices, tag ) maximal_number_of_vertices_)
BOOST_PARAMETER_NAME( (nonlinear_growth_of_balls, tag ) nonlinear_growth_of_balls_)
BOOST_PARAMETER_NAME( (pointer_to_error_code, tag ) pointer_to_error_code_)
BOOST_PARAMETER_NAME( (pointer_to_stop_atomic_boolean, tag ) pointer_to_stop_atomic_boolean_)
// First used in <CGAL/Labeled_mesh_domain_3.h>
BOOST_PARAMETER_NAME( (function, tag ) function_)
BOOST_PARAMETER_NAME( (bounding_object, tag ) bounding_object_)
BOOST_PARAMETER_NAME( (relative_error_bound, tag ) relative_error_bound_)
BOOST_PARAMETER_NAME( (weights, tag) weights_)
BOOST_PARAMETER_NAME( (p_rng, tag ) p_rng_)
BOOST_PARAMETER_NAME( (null_subdomain_index, tag ) null_subdomain_index_)
BOOST_PARAMETER_NAME( (construct_surface_patch_index, tag ) construct_surface_patch_index_)
// First used in <CGAL/Gray_image_mesh_domain_3.h>
BOOST_PARAMETER_NAME( (image, tag ) image_)
BOOST_PARAMETER_NAME( (iso_value, tag) iso_value_)
BOOST_PARAMETER_NAME( (value_outside, tag) value_outside_)
BOOST_PARAMETER_NAME( (image_values_to_subdomain_indices, tag ) image_values_to_subdomain_indices_)
CGAL_PRAGMA_DIAG_POP
} // parameters
} // CGAL
#endif // CGAL_BOOST_PARAMETER_H

View File

@ -23,9 +23,9 @@ int main()
vertex_descriptor vs = CGAL::add_vertex(sm);
std::array<vertex_descriptor,0> face0;
assert( ! CGAL::Euler::can_add_face(face0,sm) );
std::array<vertex_descriptor,1> face1;
std::array<vertex_descriptor,1> face1 = { vp };
assert( ! CGAL::Euler::can_add_face(face1,sm) );
std::array<vertex_descriptor,2> face2;
std::array<vertex_descriptor,2> face2 = { vp, vq };
assert( ! CGAL::Euler::can_add_face(face2,sm) );
std::array<vertex_descriptor,3> face = { vp, vq, vr };
@ -56,5 +56,7 @@ int main()
assert( ! CGAL::Euler::can_add_face(face,sm) );
}
std::cout << "Done" << std::endl;
return 0;
}

View File

@ -1,10 +1,10 @@
# Created by the script cgal_create_cmake_script.
# This is the CMake script for compiling a CGAL application.
project(Barycentric_coordinates_2_Examples)
cmake_minimum_required(VERSION 3.1...3.23)
project(Barycentric_coordinates_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
create_single_source_cgal_program("segment_coordinates.cpp")

View File

@ -1,10 +1,10 @@
# Created by the script cgal_create_cmake_script.
# This is the CMake script for compiling a CGAL application.
project(Barycentric_coordinates_2_Tests)
cmake_minimum_required(VERSION 3.1...3.23)
project(Barycentric_coordinates_2_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
create_single_source_cgal_program("test_almost_degenerate_segment.cpp")

View File

@ -58,7 +58,7 @@ public:
{}
/*! Constructor with traits object. */
Polygon_set_2 (Traits_2& tr) :
Polygon_set_2 (const Traits_2& tr) :
Base(tr)
{}

View File

@ -432,7 +432,7 @@ OutputIterator connect_holes(const Polygon_with_holes_2<Kernel,
} else {
/*the case where target() is a part of several holes, and next is a
boundary of a hole that has been traversed. This requires
to continue "traversal alongside all edges whose target is also
to continue traversal alongside all edges whose target is also
curr->target() to keep looking for a hole that hasn't been traversed.
we do not insert the target to the output set to avoid duplication
with cases 2 and 3*/

View File

@ -20,12 +20,6 @@
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd
\cgalCRPSection{Assertions}
The optimization code uses infix `OPTIMISATION` in the assertions,
e.g. defining the compiler flag
`CGAL_OPTIMISATION_NO_PRECONDITIONS` switches precondition
checking off, cf. Section \ref secchecks.
\cgalClassifedRefPages
@ -62,4 +56,3 @@ checking off, cf. Section \ref secchecks.
- `CGAL::Min_sphere_of_spheres_d<Traits>`
- `MinSphereOfSpheresTraits`
*/

View File

@ -12,7 +12,7 @@
// Note: whenever a comment refers to "Khachiyan's paper" then the
// paper "Rounding of polytopes in the real number model of
// computation" is ment (Mathematics of Operations Research, Vol. 21,
// computation" is meant (Mathematics of Operations Research, Vol. 21,
// No. 2, May 1996). Nontheless, most comments refer to the
// accompanying documentation sheet (and not to the above paper), see
// the file(s) in documentation/.
@ -85,7 +85,7 @@ namespace CGAL {
//
// Notice that (at almost all places in this code) whenever a
// point "p" is mentioned in a comment then the embedded point is
// ment in case (ii).
// meant in case (ii).
const int d_P; // dimension of the input points
const int d; // dimension of the ambient space

View File

@ -12,7 +12,7 @@
// Note: whenever a comment refers to "Khachiyan's paper" then the
// paper "Rounding of polytopes in the real number model of
// computation" is ment (Mathematics of Operations Research, Vol. 21,
// computation" is meant (Mathematics of Operations Research, Vol. 21,
// No. 2, May 1996). Nontheless, most comments refer to the
// accompanying documentation sheet (and not to the above paper), see
// the file(s) in documentation/.

View File

@ -325,7 +325,7 @@ public:
Support_point_iterator
support_points_begin() const {
CGAL_optimisation_assertion_msg(number_of_points() >= 2,
CGAL_assertion_msg(number_of_points() >= 2,
"support_points_begin: not enough points");
return Support_point_iterator(
solver->basic_original_variable_indices_begin(),
@ -334,7 +334,7 @@ public:
Support_point_iterator
support_points_end() const {
CGAL_optimisation_assertion_msg(number_of_points() >= 2,
CGAL_assertion_msg(number_of_points() >= 2,
"support_points_begin: not enough points");
return Support_point_iterator(
solver->basic_original_variable_indices_end(),
@ -401,27 +401,27 @@ public:
// NOTE: an implicit conversion from ET to RT must be available!
Point
center( ) const
{ CGAL_optimisation_precondition( ! is_empty());
{ CGAL_precondition( ! is_empty());
return tco.construct_point_d_object()( ambient_dimension(),
center_coordinates_begin(),
center_coordinates_end()); }
FT
squared_inner_radius( ) const
{ CGAL_optimisation_precondition( ! is_empty());
{ CGAL_precondition( ! is_empty());
return FT( squared_inner_radius_numerator()) /
FT( squared_radii_denominator()); }
FT
squared_outer_radius( ) const
{ CGAL_optimisation_precondition( ! is_empty());
{ CGAL_precondition( ! is_empty());
return FT( squared_outer_radius_numerator()) /
FT( squared_radii_denominator()); }
// predicates
CGAL::Bounded_side
bounded_side( const Point& p) const
{ CGAL_optimisation_precondition(
{ CGAL_precondition(
is_empty() || tco.access_dimension_d_object()( p) == d);
ET sqr_d = sqr_dist( p);
ET h_p_sqr = da_coord(p)[d] * da_coord(p)[d];
@ -431,7 +431,7 @@ public:
bool
has_on_bounded_side( const Point& p) const
{ CGAL_optimisation_precondition(
{ CGAL_precondition(
is_empty() || tco.access_dimension_d_object()( p) == d);
ET sqr_d = sqr_dist( p);
ET h_p_sqr = da_coord(p)[d] * da_coord(p)[d];
@ -440,7 +440,7 @@ public:
bool
has_on_boundary( const Point& p) const
{ CGAL_optimisation_precondition(
{ CGAL_precondition(
is_empty() || tco.access_dimension_d_object()( p) == d);
ET sqr_d = sqr_dist( p);
ET h_p_sqr = da_coord(p)[d] * da_coord(p)[d];
@ -449,7 +449,7 @@ public:
bool
has_on_unbounded_side( const Point& p) const
{ CGAL_optimisation_precondition(
{ CGAL_precondition(
is_empty() || tco.access_dimension_d_object()( p) == d);
ET sqr_d = sqr_dist( p);
ET h_p_sqr(da_coord(p)[d]);
@ -468,14 +468,14 @@ public:
{ if ( points.size() > 0) points.erase( points.begin(), points.end());
std::copy( first, last, std::back_inserter( points));
set_dimension();
CGAL_optimisation_precondition_msg( check_dimension(),
CGAL_precondition_msg( check_dimension(),
"Not all points have the same dimension.");
compute_min_annulus(); }
void
insert( const Point& p)
{ if ( is_empty()) d = tco.access_dimension_d_object()( p);
CGAL_optimisation_precondition(
CGAL_precondition(
tco.access_dimension_d_object()( p) == d);
points.push_back( p);
compute_min_annulus(); }
@ -483,10 +483,10 @@ public:
template < class InputIterator >
void
insert( InputIterator first, InputIterator last)
{ CGAL_optimisation_precondition_code( std::size_t old_n = points.size());
{ CGAL_precondition_code( std::size_t old_n = points.size());
points.insert( points.end(), first, last);
set_dimension();
CGAL_optimisation_precondition_msg( check_dimension( old_n),
CGAL_precondition_msg( check_dimension( old_n),
"Not all points have the same dimension.");
compute_min_annulus(); }
@ -645,7 +645,7 @@ private:
options.set_pricing_strategy(pricing_strategy(NT()));
delete solver;
solver = new Solver(lp, options);
CGAL_optimisation_assertion(solver->status() == QP_OPTIMAL);
CGAL_assertion(solver->status() == QP_OPTIMAL);
// compute center and squared radius
ET sqr_sum = 0;
@ -829,7 +829,7 @@ operator << ( std::ostream& os,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -858,7 +858,7 @@ operator >> ( std::istream& is, CGAL::Min_annulus_d<Traits_>& min_annulus)
break;
default:
CGAL_optimisation_assertion_msg( false, "CGAL::IO::mode invalid!");
CGAL_assertion_msg( false, "CGAL::IO::mode invalid!");
break; }
return( is);

View File

@ -191,7 +191,7 @@ class Min_circle_2 {
const Point&
support_point( std::size_t i) const
{
CGAL_optimisation_precondition(i < number_of_support_points());
CGAL_precondition(i < number_of_support_points());
return( support_points[ i]);
}
// circle
@ -256,7 +256,7 @@ class Min_circle_2 {
tco.circle.set( );
break;
default:
CGAL_optimisation_assertion( n_support_points <= 3 ); }
CGAL_assertion( n_support_points <= 3 ); }
}
void
@ -334,7 +334,7 @@ class Min_circle_2 {
// initialize circle
tco.circle.set();
CGAL_optimisation_postcondition( is_empty());
CGAL_postcondition( is_empty());
}
// constructor for one point
@ -349,7 +349,7 @@ class Min_circle_2 {
support_points[ 0] = p;
tco.circle.set( p);
CGAL_optimisation_postcondition( is_degenerate());
CGAL_postcondition( is_degenerate());
}
// constructor for two points

View File

@ -293,7 +293,7 @@ operator << ( std::ostream& os,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -323,7 +323,7 @@ operator >> ( std::istream& is,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::mode invalid!");
break; }

View File

@ -332,7 +332,7 @@ operator << ( std::ostream& os,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -363,7 +363,7 @@ operator >> ( std::istream& is,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::mode invalid!");
break; }

View File

@ -60,7 +60,7 @@ operator << ( std::ostream& os,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -89,7 +89,7 @@ operator >> ( std::istream& is, CGAL::Min_circle_2<Traits_>& min_circle)
break;
default:
CGAL_optimisation_assertion_msg( false, "CGAL::IO::mode invalid!");
CGAL_assertion_msg( false, "CGAL::IO::mode invalid!");
break; }
return( is);

View File

@ -11,7 +11,7 @@
// Author(s) : Sven Schoenherr <sven@inf.ethz.ch>, Bernd Gaertner
// includes
# include <CGAL/Optimisation/assertions.h>
# include <CGAL/assertions.h>
namespace CGAL {
@ -42,7 +42,7 @@ operator << ( std::ostream& os, const CGAL::Optimisation_circle_2<K_>& c)
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -79,7 +79,7 @@ operator >> ( std::istream& is, CGAL::Optimisation_circle_2<K_>& c)
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( is) invalid!");
break; }

View File

@ -203,7 +203,7 @@ class Min_ellipse_2 {
const Point&
support_point( std::size_t i) const
{
CGAL_optimisation_precondition(i < number_of_support_points());
CGAL_precondition(i < number_of_support_points());
return( support_points[ i]);
}
// ellipse
@ -281,7 +281,7 @@ class Min_ellipse_2 {
tco.ellipse.set( );
break;
default:
CGAL_optimisation_assertion( ( n_support_points >= 0) &&
CGAL_assertion( ( n_support_points >= 0) &&
( n_support_points <= 5) ); }
}
@ -360,7 +360,7 @@ class Min_ellipse_2 {
// initialize ellipse
tco.ellipse.set();
CGAL_optimisation_postcondition( is_empty());
CGAL_postcondition( is_empty());
}
inline
@ -373,7 +373,7 @@ class Min_ellipse_2 {
// initialize ellipse
tco.ellipse.set();
CGAL_optimisation_postcondition( is_empty());
CGAL_postcondition( is_empty());
}
// constructor for one point
@ -388,7 +388,7 @@ class Min_ellipse_2 {
support_points[ 0] = p;
tco.ellipse.set( p);
CGAL_optimisation_postcondition( is_degenerate());
CGAL_postcondition( is_degenerate());
}
// constructor for two points
@ -409,7 +409,7 @@ class Min_ellipse_2 {
// compute me
me( points.end(), 0);
CGAL_optimisation_postcondition( is_degenerate());
CGAL_postcondition( is_degenerate());
}
// constructor for three points

View File

@ -18,7 +18,7 @@
// includes
# include <CGAL/Cartesian/ConicCPA2.h>
# include <CGAL/Optimisation/assertions.h>
# include <CGAL/assertions.h>
namespace CGAL {
@ -235,7 +235,7 @@ class _Min_ellipse_2_adapterC2__Ellipse {
int tau_star = c.vol_derivative( dr, ds, dt, du, dv, dw);
return( CGAL::Bounded_side( CGAL_NTS sign( tau_star))); } }
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0) &&
CGAL_assertion( ( n_boundary_points >= 0) &&
( n_boundary_points <= 5) ); }
// keeps g++ happy
return( CGAL::Bounded_side( 0));
@ -298,7 +298,7 @@ class _Min_ellipse_2_adapterC2__Ellipse {
|| ( ( conic1 == e.conic2)
&& ( conic2 == e.conic1)));
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0)
CGAL_assertion( ( n_boundary_points >= 0)
&& ( n_boundary_points <= 5)); }
// keeps g++ happy
return( false);
@ -341,7 +341,7 @@ operator << ( std::ostream& os,
case CGAL::IO::BINARY:
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -405,7 +405,7 @@ operator >> ( std::istream& is,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::mode invalid!");
break; }

View File

@ -18,7 +18,7 @@
// includes
# include <CGAL/Homogeneous/ConicHPA2.h>
# include <CGAL/Optimisation/assertions.h>
# include <CGAL/assertions.h>
namespace CGAL {
@ -243,7 +243,7 @@ class _Min_ellipse_2_adapterH2__Ellipse {
int tau_star = c.vol_derivative( dr, ds, dt, du, dv, dw);
return( CGAL::Bounded_side( CGAL_NTS sign( tau_star))); } }
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0) &&
CGAL_assertion( ( n_boundary_points >= 0) &&
( n_boundary_points <= 5) ); }
// keeps g++ happy
return( CGAL::Bounded_side( 0));
@ -306,7 +306,7 @@ class _Min_ellipse_2_adapterH2__Ellipse {
|| ( ( conic1 == e.conic2)
&& ( conic2 == e.conic1)));
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0)
CGAL_assertion( ( n_boundary_points >= 0)
&& ( n_boundary_points <= 5)); }
// keeps g++ happy
return( false);
@ -349,7 +349,7 @@ operator << ( std::ostream& os,
case CGAL::IO::BINARY:
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -413,7 +413,7 @@ operator >> ( std::istream& is,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::mode invalid!");
break; }

View File

@ -60,7 +60,7 @@ operator << ( std::ostream& os,
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -89,7 +89,7 @@ operator >> ( std::istream& is, CGAL::Min_ellipse_2<Traits_>& min_ellipse)
break;
default:
CGAL_optimisation_assertion_msg( false, "CGAL::IO::mode invalid!");
CGAL_assertion_msg( false, "CGAL::IO::mode invalid!");
break; }
return( is);

View File

@ -17,7 +17,7 @@
#include <CGAL/Conic_2.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
#include <CGAL/Kernel/global_functions_2.h>
@ -131,7 +131,7 @@ class Optimisation_ellipse_2 {
set( const Point& p, const Point& q)
{
n_boundary_points = 2;
CGAL_optimisation_precondition(boundary_point1 == p); CGAL_USE(p);
CGAL_precondition(boundary_point1 == p); CGAL_USE(p);
boundary_point2 = q;
}
@ -139,20 +139,20 @@ class Optimisation_ellipse_2 {
set( const Point& p1, const Point& p2, const Point& p3)
{
n_boundary_points = 3;
CGAL_optimisation_precondition(boundary_point1 == p1);
CGAL_optimisation_precondition(boundary_point2 == p2);
CGAL_precondition(boundary_point1 == p1);
CGAL_precondition(boundary_point2 == p2);
boundary_point3 = p3;
helper_conic.set_ellipse( p1, p2, p3);
CGAL_optimisation_assertion(helper_conic.is_ellipse());
CGAL_assertion(helper_conic.is_ellipse());
}
void
set( const Point& p1, const Point& p2, const Point& p3, const Point& p4)
{
n_boundary_points = 4;
CGAL_optimisation_precondition(boundary_point1 == p1);
CGAL_optimisation_precondition(boundary_point2 == p2);
CGAL_optimisation_precondition(boundary_point3 == p3);
CGAL_precondition(boundary_point1 == p1);
CGAL_precondition(boundary_point2 == p2);
CGAL_precondition(boundary_point3 == p3);
boundary_point4 = p4;
Conic::set_two_linepairs( p1, p2, p3, p4, conic1, conic2);
@ -195,7 +195,7 @@ class Optimisation_ellipse_2 {
if (!helper_ellipse_set) {
helper_ellipse.set_ellipse( conic1, conic2);
helper_ellipse.analyse();
CGAL_optimisation_assertion (helper_ellipse.is_ellipse());
CGAL_assertion (helper_ellipse.is_ellipse());
helper_ellipse_set= true;
}
}
@ -211,14 +211,14 @@ class Optimisation_ellipse_2 {
// In that case, helper_conic is already correct,
// but in general, this optimization is NOT valid.
n_boundary_points = 5;
CGAL_optimisation_assertion(helper_conic.is_ellipse());
CGAL_assertion(helper_conic.is_ellipse());
// the following assertion is too strict if we run under
// double (which is sometimes the case, e.g. in demos)
// CGAL_optimisation_assertion(helper_conic.has_on_boundary(p5));
CGAL_optimisation_precondition(boundary_point1 == p1);
CGAL_optimisation_precondition(boundary_point2 == p2);
CGAL_optimisation_precondition(boundary_point3 == p3);
CGAL_optimisation_precondition(boundary_point4 == p4);
// CGAL_assertion(helper_conic.has_on_boundary(p5));
CGAL_precondition(boundary_point1 == p1);
CGAL_precondition(boundary_point2 == p2);
CGAL_precondition(boundary_point3 == p3);
CGAL_precondition(boundary_point4 == p4);
CGAL_USE(p1); CGAL_USE(p2); CGAL_USE(p3); CGAL_USE(p4);
boundary_point5 = p5;
}
@ -247,7 +247,7 @@ class Optimisation_ellipse_2 {
double &u, double &v, double &w) const
{
// just like double_conic, but we only get the coefficients
CGAL_optimisation_precondition( ! is_degenerate());
CGAL_precondition( ! is_degenerate());
if ( n_boundary_points == 4) {
set_e_values();
@ -297,7 +297,7 @@ class Optimisation_ellipse_2 {
|| ( ( conic1 == e.conic2)
&& ( conic2 == e.conic1)));
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0)
CGAL_assertion( ( n_boundary_points >= 0)
&& ( n_boundary_points <= 5)); }
// keeps g++ happy
return( false);
@ -343,7 +343,7 @@ class Optimisation_ellipse_2 {
helper_conic.vol_derivative( dr, ds, dt, du, dv, dw);
return( CGAL::Bounded_side( CGAL_NTS sign( tau_star))); } }
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0) &&
CGAL_assertion( ( n_boundary_points >= 0) &&
( n_boundary_points <= 5) ); }
// keeps g++ happy
return( CGAL::Bounded_side( 0));
@ -416,7 +416,7 @@ class Optimisation_ellipse_2 {
return (CGAL::ZERO == (c.vol_derivative(dr, ds, dt, du, dv, dw)));
}
default:
CGAL_optimisation_assertion( ( n_boundary_points >= 0) &&
CGAL_assertion( ( n_boundary_points >= 0) &&
( n_boundary_points <= 5) );
return false;
}

View File

@ -43,7 +43,7 @@ operator << ( std::ostream& os, const CGAL::Optimisation_ellipse_2<K_>& e)
case CGAL::IO::BINARY:
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( os) invalid!");
break; }
@ -106,7 +106,7 @@ operator >> ( std::istream& is, CGAL::Optimisation_ellipse_2<K_>& e)
break;
default:
CGAL_optimisation_assertion_msg( false,
CGAL_assertion_msg( false,
"CGAL::IO::get_mode( is) invalid!");
break; }

View File

@ -18,7 +18,7 @@
#include <CGAL/basic.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
#include <CGAL/Point_2.h>
#include <CGAL/Direction_2.h>
#include <CGAL/Polygon_2.h>
@ -303,36 +303,36 @@ public:
if (assign(tmp, tmpo)) {
*o++ = tmp;
} else {
CGAL_optimisation_assertion_code(bool test1 =)
CGAL_assertion_code(bool test1 =)
assign(tmpl, tmpo);
CGAL_optimisation_assertion(test1);
CGAL_assertion(test1);
*o++ = r.p1;
}
tmpo = isec(line(r.p3, r.d1), line(r.p2, r.d2));
if (assign(tmp, tmpo)) {
*o++ = tmp;
} else {
CGAL_optimisation_assertion_code(bool test1 =)
CGAL_assertion_code(bool test1 =)
assign(tmpl, tmpo);
CGAL_optimisation_assertion(test1);
CGAL_assertion(test1);
*o++ = r.p2;
}
tmpo = isec(line(r.p3, r.d1), line(r.p4, r.d2));
if (assign(tmp, tmpo)) {
*o++ = tmp;
} else {
CGAL_optimisation_assertion_code(bool test1 =)
CGAL_assertion_code(bool test1 =)
assign(tmpl, tmpo);
CGAL_optimisation_assertion(test1);
CGAL_assertion(test1);
*o++ = r.p3;
}
tmpo = isec(line(r.p1, r.d1), line(r.p4, r.d2));
if (assign(tmp, tmpo)) {
*o++ = tmp;
} else {
CGAL_optimisation_assertion_code(bool test1 =)
CGAL_assertion_code(bool test1 =)
assign(tmpl, tmpo);
CGAL_optimisation_assertion(test1);
CGAL_assertion(test1);
*o++ = r.p3;
}
return o;

View File

@ -26,7 +26,7 @@
# include <CGAL/basic.h>
# include <CGAL/Optimisation/assertions.h>
# include <CGAL/assertions.h>
# include <CGAL/Optimisation/basic.h>
@ -110,7 +110,7 @@ public:
#endif
if (points.size()>0) {
d = tco.access_dimension_d_object() (points.front());
CGAL_optimisation_precondition ((d>=0) && all_points_have_dim(d));
CGAL_precondition ((d>=0) && all_points_have_dim(d));
ms_basis.get_sphere(Rep_tag()).set_size (d);
pivot_ms();
}
@ -137,7 +137,7 @@ public:
#endif
if (points.size()>0) {
d = tco.access_dimension_d_object() (points.front());
CGAL_optimisation_precondition ((d>=0) && all_points_have_dim(d));
CGAL_precondition ((d>=0) && all_points_have_dim(d));
ms_basis.get_sphere(Rep_tag()).set_size (d);
pivot_ms();
}
@ -211,13 +211,13 @@ public:
Point center () const
{
CGAL_optimisation_precondition (!is_empty());
CGAL_precondition (!is_empty());
return ms_basis.get_sphere(Rep_tag()).center();
}
FT squared_radius () const
{
CGAL_optimisation_precondition (!is_empty());
CGAL_precondition (!is_empty());
return ms_basis.get_sphere(Rep_tag()).squared_radius();
}
@ -227,7 +227,7 @@ public:
if (d == -1)
return ON_UNBOUNDED_SIDE;
else {
CGAL_optimisation_precondition
CGAL_precondition
(d == tco.access_dimension_d_object()(p));
return (Bounded_side
(-CGAL::sign (ms_basis.get_sphere(Rep_tag()).excess (p))));
@ -239,7 +239,7 @@ public:
if (d == -1)
return false;
else {
CGAL_optimisation_precondition
CGAL_precondition
(d == tco.access_dimension_d_object()(p));
return (CGAL_NTS is_negative (ms_basis.get_sphere(Rep_tag()).excess (p)));
}
@ -250,7 +250,7 @@ public:
if (d == -1)
return true;
else {
CGAL_optimisation_precondition
CGAL_precondition
(d == tco.access_dimension_d_object()(p));
return (CGAL_NTS is_positive (ms_basis.get_sphere(Rep_tag()).excess (p)));
}
@ -261,7 +261,7 @@ public:
if (d == -1)
return false;
else {
CGAL_optimisation_precondition
CGAL_precondition
(d == tco.access_dimension_d_object()(p));
return (CGAL_NTS is_zero (ms_basis.get_sphere(Rep_tag()).excess (p)));
}
@ -296,7 +296,7 @@ public:
support_end = points.begin();
if (points.size()>0) {
d = tco.access_dimension_d_object() (points.front());
CGAL_optimisation_precondition ((d>=0) && all_points_have_dim (d));
CGAL_precondition ((d>=0) && all_points_have_dim (d));
ms_basis.get_sphere(Rep_tag()).set_size (d);
pivot_ms();
} else {
@ -310,7 +310,7 @@ public:
if (has_on_unbounded_side (p)) {
if (is_empty()) {
d = tco.access_dimension_d_object() (p);
CGAL_optimisation_precondition (d>=0);
CGAL_precondition (d>=0);
ms_basis.get_sphere(Rep_tag()).set_size (d);
}
// ensure precondition of pivot_ms

View File

@ -62,7 +62,7 @@ operator << ( std::ostream& os, const Min_sphere_d<Traits>& min_sphere)
break;
default:
CGAL_optimisation_assertion_msg
CGAL_assertion_msg
( false, "IO::get_mode( os) invalid!");
break; }
@ -93,7 +93,7 @@ operator >> ( std::istream& is, Min_sphere_d<Traits>& min_sphere)
} break;
default:
CGAL_optimisation_assertion_msg( false, "IO::mode invalid!");
CGAL_assertion_msg( false, "IO::mode invalid!");
break;
}

View File

@ -42,7 +42,7 @@ class Optimisation_sphere_d<Cartesian_tag, FT, RT, PT, Traits>;
#include <CGAL/Optimisation/basic.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
namespace CGAL {
@ -188,7 +188,7 @@ class Optimisation_sphere_d<Cartesian_tag, FT, RT, PT, Traits>;
// compute z
FT z = FT_(2)*v_basis[m+1] - prod(v,x,m+1);
CGAL_optimisation_assertion (!CGAL_NTS is_zero (z));
CGAL_assertion (!CGAL_NTS is_zero (z));
FT inv_z = FT_(1)/z;
// set up A^{-1}_{B^m}
@ -461,7 +461,7 @@ class Optimisation_sphere_d<Cartesian_tag, FT, RT, PT, Traits>;
// compute \tilde{z}
RT old_denom = denom[m-1];
RT z = old_denom*RT_(2)*sqr_q_m - prod(v,x,m+1);
CGAL_optimisation_assertion (!CGAL_NTS is_zero (z));
CGAL_assertion (!CGAL_NTS is_zero (z));
// set up \tilde{A}^{-1}_{B^m}
RT** M = inv[m-1]; // \tilde{A}^{-1}_B, old matrix
@ -503,7 +503,7 @@ class Optimisation_sphere_d<Cartesian_tag, FT, RT, PT, Traits>;
// get h_p
RT h_p = *(i++);
CGAL_optimisation_precondition (!CGAL_NTS is_zero (h_p));
CGAL_precondition (!CGAL_NTS is_zero (h_p));
// compute (h_p h D)^2 (c-p)^2
RT sqr_dist(RT(0));

View File

@ -42,7 +42,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
{
// That constant is embedded in an inline static function, to
// workaround a bug of g++>=4.1
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// g++ does not like const floating expression when -frounding-math
// is used.
static double result() {
@ -55,7 +55,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
{
// That constant is embedded in an inline static function, to
// workaround a bug of g++>=4.1
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// g++ does not like const floating expression when -frounding-math
// is used.
static float result() {
@ -68,7 +68,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
{
// That constant is embedded in an inline static function, to
// workaround a bug of g++>=4.1
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// g++ does not like const floating expression when -frounding-math
// is used.
static double result() {
@ -81,7 +81,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
{
// That constant is embedded in an inline static function, to
// workaround a bug of g++>=4.1
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36912
// g++ does not like const floating expression when -frounding-math
// is used.
static float result() {

View File

@ -20,7 +20,7 @@
#include <CGAL/Iso_rectangle_2.h>
#include <CGAL/basic_constructions_2.h>
#include <CGAL/pierce_rectangles_2.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
namespace CGAL {
@ -228,21 +228,21 @@ struct Rectangular_p_center_matrix_search_traits_2 {
bool operator()(FT v)
{
CGAL_optimisation_assertion(ld.size() == ld_size);
CGAL_assertion(ld.size() == ld_size);
ld.r = v / FT(2);
bool ok;
pf(ld, Wastebasket< Point_2 >(), ok);
CGAL_optimisation_assertion(ld.size() == ld_size);
CGAL_assertion(ld.size() == ld_size);
return ok;
}
template < class OutputIterator >
OutputIterator operator()(FT v, OutputIterator o, bool& ok)
{
CGAL_optimisation_assertion(ld.size() == ld_size);
CGAL_assertion(ld.size() == ld_size);
ld.r = v / FT(2);
OutputIterator n = pf(ld, o, ok);
CGAL_optimisation_assertion(ld.size() == ld_size);
CGAL_assertion(ld.size() == ld_size);
return n; //pf(ld, o, ok);
}
@ -250,7 +250,7 @@ protected:
// data members:
LD ld;
PiercingFunction pf;
CGAL_optimisation_assertion_code(typename LD::size_type ld_size;)
CGAL_assertion_code(typename LD::size_type ld_size;)
// copying this would be too inefficient
Rectangular_p_center_matrix_search_traits_2(

View File

@ -18,7 +18,7 @@
#include <CGAL/basic.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
#include <iterator>
#include <functional>
@ -346,8 +346,8 @@ min_rectangle_2(
{
typedef Optimisation::Min_quadrilateral_traits_wrapper<BTraits> Traits;
Traits t(bt);
CGAL_optimisation_expensive_precondition(is_convex_2(f, l, t));
CGAL_optimisation_expensive_precondition(
CGAL_expensive_precondition(is_convex_2(f, l, t));
CGAL_expensive_precondition(
orientation_2(f, l, t) == COUNTERCLOCKWISE);
// check for trivial cases
@ -395,7 +395,7 @@ min_rectangle_2(
int yet_to_finish = 0;
for (int i1 = 0; i1 < 4; ++i1) {
CGAL_optimisation_assertion(limit[i1] != l);
CGAL_assertion(limit[i1] != l);
if (curr[i1] != limit[i1])
++yet_to_finish;
}
@ -448,7 +448,7 @@ min_parallelogram_2(ForwardIterator f,
{
typedef Optimisation::Min_quadrilateral_traits_wrapper<BTraits> Traits;
Traits t(bt);
CGAL_optimisation_expensive_precondition(is_convex_2(f, l, t));
CGAL_expensive_precondition(is_convex_2(f, l, t));
// types from the traits class
typedef typename Traits::Direction_2 Direction_2;
@ -630,7 +630,7 @@ min_strip_2(ForwardIterator f,
{
typedef Optimisation::Min_quadrilateral_traits_wrapper<BTraits> Traits;
Traits t(bt);
CGAL_optimisation_expensive_precondition(is_convex_2(f, l, t));
CGAL_expensive_precondition(is_convex_2(f, l, t));
// types from the traits class
typedef typename Traits::Direction_2 Direction_2;

View File

@ -16,7 +16,7 @@
#include <CGAL/license/Bounding_volumes.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
#include <CGAL/circulator.h>
#include <CGAL/algorithm.h>
#include <algorithm>
@ -75,7 +75,7 @@ struct Loc_domain {
void
update(int j, Citerator i)
{
CGAL_optimisation_precondition(j >= 0 && j < 4);
CGAL_precondition(j >= 0 && j < 4);
if (j < 2)
if (j == 0) {
if (traits.less_x_2_object()(*i, minx)) minx = *i;
@ -106,9 +106,9 @@ struct Loc_domain {
maxy(pts.front()),
traits(t)
{
CGAL_optimisation_precondition(b != e);
CGAL_precondition(b != e);
Iterator i = pts.begin();
CGAL_optimisation_assertion(i != pts.end());
CGAL_assertion(i != pts.end());
while (++i != pts.end()) {
if (traits.less_x_2_object()(*i, minx)) minx = *i;
if (traits.less_x_2_object()(maxx, *i)) maxx = *i;
@ -124,7 +124,7 @@ struct Loc_domain {
operator[](int i) const
// return corner points (0 <-> bottom-left, 1 <-> bottom-right)
{
CGAL_optimisation_precondition(i >= 0 && i < 4);
CGAL_precondition(i >= 0 && i < 4);
if (i == 0)
return traits.construct_point_2_above_right_implicit_point_2_object()(
minx, miny, r);
@ -142,7 +142,7 @@ struct Loc_domain {
extreme(int i) const
// return extreme points (0 <-> left, 1 <-> bottom)
{
CGAL_optimisation_precondition(i >= 0 && i < 4);
CGAL_precondition(i >= 0 && i < 4);
if (i > 1) return i == 2 ? maxx : maxy;
return i == 0 ? minx : miny;
}
@ -151,7 +151,7 @@ struct Loc_domain {
extreme(int i)
// return extreme points (0 <-> left, 1 <-> bottom)
{
CGAL_optimisation_precondition(i >= 0 && i < 4);
CGAL_precondition(i >= 0 && i < 4);
if (i > 1) return i == 2 ? maxx : maxy;
return i == 0 ? minx : miny;
}
@ -177,13 +177,13 @@ struct Loc_domain {
void
check() const {
CGAL_optimisation_expensive_assertion_code(
CGAL_expensive_assertion_code(
Iterator i = pts.begin();
do {
CGAL_optimisation_assertion(!traits.less_x_2_object()(*i, minx));
CGAL_optimisation_assertion(!traits.less_x_2_object()(maxx, *i));
CGAL_optimisation_assertion(!traits.less_y_2_object()(*i, miny));
CGAL_optimisation_assertion(!traits.less_y_2_object()(maxy, *i));
CGAL_assertion(!traits.less_x_2_object()(*i, minx));
CGAL_assertion(!traits.less_x_2_object()(maxx, *i));
CGAL_assertion(!traits.less_y_2_object()(*i, miny));
CGAL_assertion(!traits.less_y_2_object()(maxy, *i));
} while (++i != end);
)
}
@ -463,7 +463,7 @@ inline OutputIterator
two_cover_points(
InputIC f, InputIC l, OutputIterator o, bool& ok, const Traits& t)
{
CGAL_optimisation_precondition(f != l);
CGAL_precondition(f != l);
// compute location domain:
Loc_domain< Traits > d(f, l, t);
@ -475,7 +475,7 @@ inline OutputIterator
three_cover_points(
InputIC f, InputIC l, OutputIterator o, bool& ok, const Traits& t)
{
CGAL_optimisation_precondition(f != l);
CGAL_precondition(f != l);
// compute location domain:
Loc_domain< Traits > d(f, l, t);
@ -487,7 +487,7 @@ inline OutputIterator
four_cover_points(
InputIC f, InputIC l, OutputIterator o, bool& ok, const Traits& t)
{
CGAL_optimisation_precondition(f != l);
CGAL_precondition(f != l);
// compute location domain:
Loc_domain< Traits > d(f, l, t);
@ -562,7 +562,7 @@ three_cover_points(
using std::less;
using std::iter_swap;
CGAL_optimisation_precondition(!d.empty());
CGAL_precondition(!d.empty());
// typedefs:
typedef typename Traits::Point_2 Point_2;
@ -583,7 +583,7 @@ three_cover_points(
// are all points already covered?
if (i == d.end()) {
CGAL_optimisation_assertion(k == 0);
CGAL_assertion(k == 0);
*o++ = d[0];
ok = true;
return o;
@ -620,11 +620,11 @@ three_cover_points(
// check disjoint for two-pierceability:
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
save_end == find_if(d.end(), save_end,
[&d, &dist, &corner](const Point_2& p)
{ return d.r < dist(corner, p); }));
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
d.end() == find_if(d.begin(), d.end(),
[&d,&dist, &corner](const Point_2& p)
{ return d.r >= dist(corner, p); }));
@ -721,7 +721,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok)
// are all points already covered?
if (i == d.end()) {
CGAL_optimisation_assertion(k == 0);
CGAL_assertion(k == 0);
*o++ = d[0];
ok = true;
return o;
@ -758,11 +758,11 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok)
// check disjoint for two-pierceability:
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
save_end == find_if(d.end(), save_end,
[&d,&dist,&corner](const Point_2& p)
{ return d.r < dist(corner, p); }));
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
d.end() == find_if(d.begin(), d.end(),
[&d,&dist,&corner](const Point_2& p)
{ return d.r >= dist(corner, p); }));

View File

@ -17,7 +17,7 @@
#include <CGAL/basic.h>
#include <CGAL/Optimisation/assertions.h>
#include <CGAL/assertions.h>
#include <CGAL/algorithm.h>
#include <CGAL/Rectangular_p_center_traits_2.h>
#include <algorithm>
@ -965,7 +965,7 @@ rectangular_3_center_2_type2(
(Q_r_empty || op.compute_y_distance(q_r, Q_r) <= op.delta()(*m))) {
boost::function1<bool,FT>
greater_delta_m = boost::bind(less< FT >(), op.delta()(*m));
CGAL_optimisation_assertion_code(RandomAccessIterator iii =)
CGAL_assertion_code(RandomAccessIterator iii =)
find_if(e,
l,
boost::bind(logical_and< bool >(),
@ -973,7 +973,7 @@ rectangular_3_center_2_type2(
boost::bind(op.distance(), q_t, _1)),
boost::bind(greater_delta_m,
boost::bind(op.distance(), q_r, _1))));
CGAL_optimisation_assertion(iii == l);
CGAL_assertion(iii == l);
}
// check whether the points in [f,s) are covered
{
@ -985,7 +985,7 @@ rectangular_3_center_2_type2(
boost::bind(le_delta_m, boost::bind(op.distance(), q_t, _1)));
iii = partition(iii, s,
boost::bind(le_delta_m, boost::bind(op.distance(), q_r, _1)));
CGAL_optimisation_assertion(iii == s);
CGAL_assertion(iii == s);
}
#endif // CGAL_3COVER_CHECK
@ -1052,7 +1052,7 @@ rectangular_3_center_2_type2(
}
// step (e) [not enough points in G]
CGAL_optimisation_assertion(b1 - (m + 1) >= 5 * cutoff);
CGAL_assertion(b1 - (m + 1) >= 5 * cutoff);
// compute the four cutting lines for R
std::nth_element(m + 1, m + 1 + cutoff, b1, less_x_2);
@ -1113,7 +1113,7 @@ rectangular_3_center_2_type2(
// now s_b corresponds to the first moment in [s, m+1)
// where q_t and q_r cover B
CGAL_optimisation_assertion_code(bool loopcheck = false;)
CGAL_assertion_code(bool loopcheck = false;)
CGAL_3CENTER_REPEAT_CHECK:
// place q_t and q_r
q_t = op.place_x_square(q_t_afap, r, op.delta()(*s_b));
@ -1142,9 +1142,9 @@ CGAL_3CENTER_REPEAT_CHECK:
// in degenerate situations it can happen that the number of
// points in R is too small => decrease radius and check again
--s_b;
CGAL_optimisation_assertion(!loopcheck);
CGAL_optimisation_assertion(s != s_b);
CGAL_optimisation_assertion_code(loopcheck = true;)
CGAL_assertion(!loopcheck);
CGAL_assertion(s != s_b);
CGAL_assertion_code(loopcheck = true;)
goto CGAL_3CENTER_REPEAT_CHECK;
}
s = b1;
@ -1166,7 +1166,7 @@ CGAL_3CENTER_REPEAT_CHECK:
// we still have a covering
if (s_b == s) {
CGAL_optimisation_expensive_assertion_code(
CGAL_expensive_assertion_code(
std::vector< Point > tmppts(f, l);
RandomAccessIterator ii =
partition(tmppts.begin(), tmppts.end(),
@ -1174,9 +1174,9 @@ CGAL_3CENTER_REPEAT_CHECK:
IP tmppos = min_max_element(ii, tmppts.end(),
op.compare_x(), op.compare_y());
)
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
!op.compare_x()(*tmppos.first, q_t));
CGAL_optimisation_expensive_assertion(
CGAL_expensive_assertion(
!op.compare_y()(q_r, *tmppos.second));
// we are done
@ -1219,7 +1219,7 @@ CGAL_3CENTER_REPEAT_CHECK:
[&op, s_b](const Point& p){ return op.delta()(*s_b) != op.delta()(p); });
rho_max = op.delta()(*s_b);
q_t_at_rho_max = q_t, q_r_at_rho_max = q_r;
CGAL_optimisation_assertion(op.delta()(*next) < op.delta()(*s_b));
CGAL_assertion(op.delta()(*next) < op.delta()(*s_b));
q_t_afap = op.update_x_square(q_t_afap, *s_b);
q_r_afap = op.update_y_square(q_r_afap, *s_b);
q_t = op.place_x_square(q_t_afap, r, op.delta()(*next));
@ -1255,7 +1255,7 @@ CGAL_3CENTER_REPEAT_CHECK:
}
CGAL_optimisation_assertion(b3 - b1 >= cutoff);
CGAL_assertion(b3 - b1 >= cutoff);
e = b1;
// adjust Q_t
if (b1 != b2) {
@ -1299,7 +1299,7 @@ CGAL_3CENTER_REPEAT_CHECK:
rho_max = max BOOST_PREVENT_MACRO_SUBSTITUTION (op.compute_x_distance(q_t, Q_t),
op.compute_y_distance(q_r, Q_r));
#ifndef CGAL_3COVER_NO_CHECK_OPTIMUM_FIRST
CGAL_optimisation_assertion(rho_max <= rad);
CGAL_assertion(rho_max <= rad);
#endif // ! CGAL_3COVER_NO_CHECK_OPTIMUM_FIRST
rad = rho_max;
*o++ = op.construct_corner_square(r, rad / FT(2));
@ -1307,7 +1307,7 @@ CGAL_3CENTER_REPEAT_CHECK:
*o++ = op.construct_y_square(q_r, rad / FT(2));
return o;
}
CGAL_optimisation_assertion(s != e);
CGAL_assertion(s != e);
// find the first diameter where covering is possible
for (;;) {
@ -1324,7 +1324,7 @@ CGAL_3CENTER_REPEAT_CHECK:
// try the next possible diameter value
FT try_rho = op.delta()(*t);
CGAL_optimisation_assertion(t == s || try_rho < rho_max);
CGAL_assertion(t == s || try_rho < rho_max);
q_t = op.place_x_square(q_t_afap, r, try_rho);
q_r = op.place_y_square(q_r_afap, r, try_rho);
@ -1370,8 +1370,8 @@ CGAL_3CENTER_REPEAT_CHECK:
// - q_r_at_rho_max is the corr. position of q_r.
// try rho_min
CGAL_optimisation_assertion(rho_min <= rho_max);
CGAL_optimisation_assertion(rho_min >= 0);
CGAL_assertion(rho_min <= rho_max);
CGAL_assertion(rho_min >= 0);
FT rad_2 = q_t_q_r_cover_at_rho_min;
if (s_at_rho_min != e_at_rho_min) {
auto mydist = [&q_t_at_rho_min, &q_r_at_rho_min, &op](const Point& p)
@ -1384,7 +1384,7 @@ CGAL_3CENTER_REPEAT_CHECK:
[&mydist](const Point& p1, const Point& p2)
{ return mydist(p1) < mydist(p2); })));
}
CGAL_optimisation_assertion(rad_2 == 0 || rad_2 > rho_min);
CGAL_assertion(rad_2 == 0 || rad_2 > rho_min);
// if a covering with rho == 0 is possible,
// it will be catched in the type1 functions
@ -1397,7 +1397,7 @@ CGAL_3CENTER_REPEAT_CHECK:
q_t = q_t_at_rho_min, q_r = q_r_at_rho_min;
#ifndef CGAL_3COVER_NO_CHECK_OPTIMUM_FIRST
CGAL_optimisation_assertion(rad_2 <= rad);
CGAL_assertion(rad_2 <= rad);
#endif // ! CGAL_3COVER_NO_CHECK_OPTIMUM_FIRST
rad = rad_2;
*o++ = op.construct_corner_square(r, rad / FT(2));
@ -1414,7 +1414,7 @@ rectangular_3_center_2(
typename Traits::FT& r,
Traits& t)
{
CGAL_optimisation_precondition(f != l);
CGAL_precondition(f != l);
typedef typename Traits::FT FT;
typedef typename Traits::Point_2 Point;
typedef typename Traits::Iso_rectangle_2 Rectangle;

View File

@ -72,8 +72,8 @@ public:
Value
operator()( int r, int c) const
{
CGAL_optimisation_precondition( r >= 0 && r < number_of_rows());
CGAL_optimisation_precondition( c >= 0 && c < number_of_columns());
CGAL_precondition( r >= 0 && r < number_of_rows());
CGAL_precondition( c >= 0 && c < number_of_columns());
return Base::operator()( r, number_of_columns() - 1 - c);
}
};
@ -145,7 +145,7 @@ rectangular_p_center_2_binary_search(
// --------------
//
{
CGAL_optimisation_precondition( f != l);
CGAL_precondition( f != l);
// typedefs:
typedef typename Traits::FT FT;
@ -171,7 +171,7 @@ rectangular_p_center_2_binary_search(
c_diffs.push_back( CGAL_NTS abs( i->x() - j->x()));
c_diffs.push_back( CGAL_NTS abs( i->y() - j->y()));
}
CGAL_optimisation_assertion(
CGAL_assertion(
c_diffs.size() == pierce_it.number_of_points() *
(pierce_it.number_of_points() - 1));
@ -195,12 +195,12 @@ rectangular_p_center_2_binary_search(
b = c + 1;
}
} // while ( e > b)
CGAL_optimisation_assertion( e == b);
CGAL_assertion( e == b);
// return the result:
r = c_diffs[e];
OutputIterator o_return( pierce_it( r, o, ok));
CGAL_optimisation_assertion( ok);
CGAL_assertion( ok);
return o_return;
} // rectangular_p_center_2_binary_search( ... )
@ -221,7 +221,7 @@ rectangular_p_center_2_matrix_search(
const MatrixOperator& mop)
{
std::size_t number_of_points( iterator_distance( f, l));
CGAL_optimisation_precondition( number_of_points > 0);
CGAL_precondition( number_of_points > 0);
using std::minus;
using std::sort;
@ -296,7 +296,7 @@ rectangular_p_center_2_matrix_search(
// return result:
OutputIterator o_return(pierce_it(r, o, ok));
CGAL_optimisation_assertion(ok);
CGAL_assertion(ok);
return o_return;
} // P_center_matrix_search
@ -341,7 +341,7 @@ rectangular_p_center_matrix_search_2(
FT& r,
int p)
{
CGAL_optimisation_precondition(p >= 2 && p < 5);
CGAL_precondition(p >= 2 && p < 5);
typename std::iterator_traits<ForwardIterator>::value_type::R t;
if (p == 2)
return rectangular_p_center_2_matrix_search(
@ -401,7 +401,7 @@ rectangular_p_center_2(ForwardIterator f,
int p,
Traits& t)
{
CGAL_optimisation_precondition(p >= 2 && p < 5);
CGAL_precondition(p >= 2 && p < 5);
r=0;
if ( !internal::is_distance_greater_than_p(f,l,p) ) return std::copy(f,l,o);
@ -422,7 +422,7 @@ rectangular_p_center_2(ForwardIterator f,
FT& r,
int p)
{
CGAL_optimisation_precondition(p >= 2 && p < 5);
CGAL_precondition(p >= 2 && p < 5);
typedef typename
std::iterator_traits< ForwardIterator >::value_type::R R;
Rectangular_p_center_default_traits_2< R > t;

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -23,7 +23,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$
@ -1102,7 +1102,7 @@ std::istream& BigFloatRep :: operator >>(std::istream& i) {
if (c == '.')
d = 1;
// Chen Li: fix a bug -- the sign of exponent can not happen before
// the character "e" appears! It must follow the "e' actually.
// the character "e" appears! It must follow the "e" actually.
// if (e || c == '-' || c == '+') s = 1;
if (e)
s = 1;

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -15,7 +15,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -15,7 +15,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -17,7 +17,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -14,7 +14,7 @@
* Chen Li <chenli@cs.nyu.edu>
* Zilin Du <zilin@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -11,7 +11,7 @@
* Zilin Du <zilin@cs.nyu.edu>
* Chee Yap <yap@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -18,7 +18,7 @@
* Sylvain Pion <pion@cs.nyu.edu>
* Vikram Sharma<sharma@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$

View File

@ -18,7 +18,7 @@
* Sylvain Pion <pion@cs.nyu.edu>
* Vikram Sharma<sharma@cs.nyu.edu>
*
* WWW URL: http://cs.nyu.edu/exact/
* WWW URL: https://cs.nyu.edu/exact/
* Email: exact@cs.nyu.edu
*
* $URL$
@ -1340,7 +1340,7 @@ inline int ExprRep::getExactSign() {
}
// Chee, 7/17/02: degreeBound() function is now
// taken out of "computeExactFlags()
// taken out of "computeExactFlags()"
inline int ExprRep::getSign() {
if (ffVal.isOK())
return ffVal.sign();

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