mirror of https://github.com/CGAL/cgal
parent
7a512655f1
commit
12cde5b685
|
|
@ -5,7 +5,7 @@ namespace CGAL {
|
||||||
\ingroup PkgBoundingVolumesRef
|
\ingroup PkgBoundingVolumesRef
|
||||||
|
|
||||||
An object of the class `Min_ellipse_2` is the unique ellipse of smallest area
|
An object of the class `Min_ellipse_2` is the unique ellipse of smallest area
|
||||||
enclosing a finite (multi)set of points in two-dimensional euclidean
|
enclosing a finite (multi)set of points in two-dimensional Euclidean
|
||||||
space \f$ \E^2\f$. For a point set \f$ P\f$ we denote by \f$ me(P)\f$ the smallest
|
space \f$ \E^2\f$. For a point set \f$ P\f$ we denote by \f$ me(P)\f$ the smallest
|
||||||
ellipse that contains all points of \f$ P\f$. Note that \f$ me(P)\f$ can be
|
ellipse that contains all points of \f$ P\f$. Note that \f$ me(P)\f$ can be
|
||||||
degenerate,
|
degenerate,
|
||||||
|
|
|
||||||
|
|
@ -4493,7 +4493,7 @@ cell neighborhood in $O(m)$ time."
|
||||||
, month = nov
|
, month = nov
|
||||||
, year = 1988
|
, year = 1988
|
||||||
, pages = "75--80"
|
, pages = "75--80"
|
||||||
, keywords = "weighted euclidean metric, Voronoi partitions, Voronoi diagrams, geometrical problems, point set"
|
, keywords = "weighted Euclidean metric, Voronoi partitions, Voronoi diagrams, geometrical problems, point set"
|
||||||
, update = "93.05 schwarzkopf"
|
, update = "93.05 schwarzkopf"
|
||||||
, annote = "Multiplicative weights in $n$ dimensions. Incremental
|
, annote = "Multiplicative weights in $n$ dimensions. Incremental
|
||||||
algorithm"
|
algorithm"
|
||||||
|
|
@ -20463,7 +20463,7 @@ $O(n^2)$ in the plane."
|
||||||
}
|
}
|
||||||
|
|
||||||
@article{bg-sfche-89
|
@article{bg-sfche-89
|
||||||
, title = "On the space-filling curve heuristic for the euclidean traveling salesman problem"
|
, title = "On the space-filling curve heuristic for the Euclidean traveling salesman problem"
|
||||||
, author = "D. Bertsimas and M. Grigni"
|
, author = "D. Bertsimas and M. Grigni"
|
||||||
, journal = "Operations Research Letters"
|
, journal = "Operations Research Letters"
|
||||||
, year = 1989
|
, year = 1989
|
||||||
|
|
@ -21005,7 +21005,7 @@ $O(n^2)$ in the plane."
|
||||||
, update = "98.11 bibrelex, 98.03 mitchell"
|
, update = "98.11 bibrelex, 98.03 mitchell"
|
||||||
, abstract = "Let $\cal P$ be a finite arrangement of non-overlapping open
|
, abstract = "Let $\cal P$ be a finite arrangement of non-overlapping open
|
||||||
cubes with side-lengths not exceeding 1 in the $3$-dimensional
|
cubes with side-lengths not exceeding 1 in the $3$-dimensional
|
||||||
euclidean space. Let $S$ and $T$ be two points lying outside
|
Euclidean space. Let $S$ and $T$ be two points lying outside
|
||||||
the open cubes. Assume one needs to find a short path emanating
|
the open cubes. Assume one needs to find a short path emanating
|
||||||
from $S$ and terminating at $T$ avoiding the cubes of $\cal P$
|
from $S$ and terminating at $T$ avoiding the cubes of $\cal P$
|
||||||
under the restriction that the cubes are not known prior to the search.
|
under the restriction that the cubes are not known prior to the search.
|
||||||
|
|
@ -31216,7 +31216,7 @@ determinants."
|
||||||
, volume = 5
|
, volume = 5
|
||||||
, year = 1995
|
, year = 1995
|
||||||
, pages = "125--144"
|
, pages = "125--144"
|
||||||
, keywords = "spanners, geometric graphs, greedy algorithm, transformational method, sparse spanners, euclidean graphs"
|
, keywords = "spanners, geometric graphs, greedy algorithm, transformational method, sparse spanners, Euclidean graphs"
|
||||||
, succeeds = "cdns-nsrgs-92"
|
, succeeds = "cdns-nsrgs-92"
|
||||||
, update = "96.09 devillers"
|
, update = "96.09 devillers"
|
||||||
}
|
}
|
||||||
|
|
@ -44361,7 +44361,7 @@ information is available. In some cases, it is possible to improve the
|
||||||
expected randomized complexity of algorithms from $O(n\log n)$ to
|
expected randomized complexity of algorithms from $O(n\log n)$ to
|
||||||
$O(n\log^{\star} n)$. This technique applies in the following
|
$O(n\log^{\star} n)$. This technique applies in the following
|
||||||
applications~: triangulation of a simple polygon, skeleton of a simple
|
applications~: triangulation of a simple polygon, skeleton of a simple
|
||||||
polygon, Delaunay triangulation of points knowing the EMST (euclidean
|
polygon, Delaunay triangulation of points knowing the EMST (Euclidean
|
||||||
minimum spanning tree)."
|
minimum spanning tree)."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -137480,7 +137480,7 @@ depth."
|
||||||
, number = 3
|
, number = 3
|
||||||
, year = 1991
|
, year = 1991
|
||||||
, pages = "221--230"
|
, pages = "221--230"
|
||||||
, keywords = "constrained relative neighborhood graphs (crng), constrained gabriel graphs (cgg), euclidean plane, Delaunay triangulation"
|
, keywords = "constrained relative neighborhood graphs (crng), constrained gabriel graphs (cgg), Euclidean plane, Delaunay triangulation"
|
||||||
, update = "93.09 rote"
|
, update = "93.09 rote"
|
||||||
, annote = "CRNG and CGG are subgraphs of CDT."
|
, annote = "CRNG and CGG are subgraphs of CDT."
|
||||||
, abstract = "The original relative neighborhood graph (RNG) and
|
, abstract = "The original relative neighborhood graph (RNG) and
|
||||||
|
|
@ -149747,7 +149747,7 @@ code."
|
||||||
|
|
||||||
@book{y-snegi-79
|
@book{y-snegi-79
|
||||||
, author = "I. M. Yaglom"
|
, author = "I. M. Yaglom"
|
||||||
, title = "A simple non-euclidean geometry and its physical basis"
|
, title = "A simple non-Euclidean geometry and its physical basis"
|
||||||
, publisher = "Springer-Verlag"
|
, publisher = "Springer-Verlag"
|
||||||
, year = 1979
|
, year = 1979
|
||||||
, update = "98.03 bibrelex"
|
, update = "98.03 bibrelex"
|
||||||
|
|
|
||||||
|
|
@ -475,7 +475,7 @@ void ManipulatedFrame::wheelEvent(QWheelEvent *const event,
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/*! Returns "pseudo-distance" from (x,y) to ball of radius size.
|
/*! Returns "pseudo-distance" from (x,y) to ball of radius size.
|
||||||
\arg for a point inside the ball, it is proportional to the euclidean distance
|
\arg for a point inside the ball, it is proportional to the Euclidean distance
|
||||||
to the ball \arg for a point outside the ball, it is proportional to the inverse
|
to the ball \arg for a point outside the ball, it is proportional to the inverse
|
||||||
of this distance (tends to zero) on the ball, the function is continuous. */
|
of this distance (tends to zero) on the ball, the function is continuous. */
|
||||||
static qreal projectOnBall(qreal x, qreal y) {
|
static qreal projectOnBall(qreal x, qreal y) {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ remove variant for supporting circle or line of bisector
|
||||||
call it only when we know that it is a circle
|
call it only when we know that it is a circle
|
||||||
it will simplify the code of Construct_hyperbolic_bisector_2 at least in some cases
|
it will simplify the code of Construct_hyperbolic_bisector_2 at least in some cases
|
||||||
|
|
||||||
test bisectors dual functions in special cases of euclidean line segments
|
test bisectors dual functions in special cases of Euclidean line segments
|
||||||
|
|
||||||
** Hyperbolic_random_points_in_disc
|
** Hyperbolic_random_points_in_disc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -532,8 +532,8 @@ private:
|
||||||
Ransac::Parameters op;
|
Ransac::Parameters op;
|
||||||
op.probability = dialog.search_probability(); // probability to miss the largest primitive on each iteration.
|
op.probability = dialog.search_probability(); // probability to miss the largest primitive on each iteration.
|
||||||
op.min_points = dialog.min_points(); // Only extract shapes with a minimum number of points.
|
op.min_points = dialog.min_points(); // Only extract shapes with a minimum number of points.
|
||||||
op.epsilon = dialog.epsilon(); // maximum euclidean distance between point and shape.
|
op.epsilon = dialog.epsilon(); // maximum Euclidean distance between point and shape.
|
||||||
op.cluster_epsilon = dialog.cluster_epsilon(); // maximum euclidean distance between points to be clustered.
|
op.cluster_epsilon = dialog.cluster_epsilon(); // maximum Euclidean distance between points to be clustered.
|
||||||
op.normal_threshold = std::cos(CGAL_PI * dialog.normal_tolerance() / 180.); // normal_threshold < dot(surface_normal, point_normal);
|
op.normal_threshold = std::cos(CGAL_PI * dialog.normal_tolerance() / 180.); // normal_threshold < dot(surface_normal, point_normal);
|
||||||
|
|
||||||
CGAL::Random rand(static_cast<unsigned int>(time(nullptr)));
|
CGAL::Random rand(static_cast<unsigned int>(time(nullptr)));
|
||||||
|
|
|
||||||
|
|
@ -397,7 +397,7 @@ template <class pNT> class Polynomial :
|
||||||
If |Number_type_traits<NT>::Has_gcd == Tag_true| then the division is
|
If |Number_type_traits<NT>::Has_gcd == Tag_true| then the division is
|
||||||
done by \emph{pseudo division} based on a |gcd| operation of |NT|. If
|
done by \emph{pseudo division} based on a |gcd| operation of |NT|. If
|
||||||
|Number_type_traits<NT>::Has_gcd == Tag_false| then the division is done
|
|Number_type_traits<NT>::Has_gcd == Tag_false| then the division is done
|
||||||
by \emph{euclidean division} based on the division operation of the
|
by \emph{Euclidean division} based on the division operation of the
|
||||||
field |NT|.
|
field |NT|.
|
||||||
|
|
||||||
\textbf{Note} that |NT=int| quickly leads to overflow
|
\textbf{Note} that |NT=int| quickly leads to overflow
|
||||||
|
|
@ -718,7 +718,7 @@ class Polynomial<int> :
|
||||||
If |Number_type_traits<int>::Has_gcd == Tag_true| then the division is
|
If |Number_type_traits<int>::Has_gcd == Tag_true| then the division is
|
||||||
done by \emph{pseudo division} based on a |gcd| operation of |int|. If
|
done by \emph{pseudo division} based on a |gcd| operation of |int|. If
|
||||||
|Number_type_traits<int>::Has_gcd == Tag_false| then the division is done
|
|Number_type_traits<int>::Has_gcd == Tag_false| then the division is done
|
||||||
by \emph{euclidean division} based on the division operation of the
|
by \emph{Euclidean division} based on the division operation of the
|
||||||
field |int|.
|
field |int|.
|
||||||
|
|
||||||
\textbf{Note} that |int=int| quickly leads to overflow
|
\textbf{Note} that |int=int| quickly leads to overflow
|
||||||
|
|
@ -1018,7 +1018,7 @@ determines the sign for the limit process $x \rightarrow \infty$.
|
||||||
If |Number_type_traits<double>::Has_gcd == Tag_true| then the division is
|
If |Number_type_traits<double>::Has_gcd == Tag_true| then the division is
|
||||||
done by \emph{pseudo division} based on a |gcd| operation of |double|. If
|
done by \emph{pseudo division} based on a |gcd| operation of |double|. If
|
||||||
|Number_type_traits<double>::Has_gcd == Tag_false| then the division is done
|
|Number_type_traits<double>::Has_gcd == Tag_false| then the division is done
|
||||||
by \emph{euclidean division} based on the division operation of the
|
by \emph{Euclidean division} based on the division operation of the
|
||||||
field |double|.
|
field |double|.
|
||||||
|
|
||||||
\textbf{Note} that |double=int| quickly leads to overflow
|
\textbf{Note} that |double=int| quickly leads to overflow
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ template <class NT>
|
||||||
double double_ceil(const NT &x){
|
double double_ceil(const NT &x){
|
||||||
using FT = Fraction_traits<NT>;
|
using FT = Fraction_traits<NT>;
|
||||||
if constexpr(FT::Is_fraction::value){
|
if constexpr(FT::Is_fraction::value){
|
||||||
// If NT is a fraction, the ceil value is the result of the euclidean division of the numerator and the denominator.
|
// If NT is a fraction, the ceil value is the result of the Euclidean division of the numerator and the denominator.
|
||||||
typename FT::Numerator_type num, r, e;
|
typename FT::Numerator_type num, r, e;
|
||||||
typename FT::Denominator_type denom;
|
typename FT::Denominator_type denom;
|
||||||
typename FT::Decompose()(x,num,denom);
|
typename FT::Decompose()(x,num,denom);
|
||||||
|
|
|
||||||
|
|
@ -402,7 +402,7 @@ Polynomial<NT> gcdex_(
|
||||||
*
|
*
|
||||||
* CGALially, computation is performed ``denominator-free'' if
|
* CGALially, computation is performed ``denominator-free'' if
|
||||||
* supported by the coefficient type via \c CGAL::Fraction_traits
|
* supported by the coefficient type via \c CGAL::Fraction_traits
|
||||||
* (using \c pseudo_gcdex() ), otherwise the euclidean remainder
|
* (using \c pseudo_gcdex() ), otherwise the Euclidean remainder
|
||||||
* sequence is used.
|
* sequence is used.
|
||||||
*
|
*
|
||||||
* \pre \c NT must be a \c Field.
|
* \pre \c NT must be a \c Field.
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ Then
|
||||||
& & \sum_{i=r+1}^{n}x_{i} = 1 \\
|
& & \sum_{i=r+1}^{n}x_{i} = 1 \\
|
||||||
& & x \geq 0,
|
& & x \geq 0,
|
||||||
\end{eqnarray*}
|
\end{eqnarray*}
|
||||||
minimizes the square of the euclidean distance between $conv(P)$ and $conv(Q)$.
|
minimizes the square of the Euclidean distance between $conv(P)$ and $conv(Q)$.
|
||||||
\end{slide}
|
\end{slide}
|
||||||
|
|
||||||
\begin{note}
|
\begin{note}
|
||||||
|
|
@ -495,7 +495,7 @@ Then
|
||||||
& & \sum_{i=r+1}^{n}x_{i} = 1 \\
|
& & \sum_{i=r+1}^{n}x_{i} = 1 \\
|
||||||
& & x \geq 0,
|
& & x \geq 0,
|
||||||
\end{eqnarray*}
|
\end{eqnarray*}
|
||||||
minimizes the square of the euclidean distance between $conv(P)$ and $conv(Q)$.
|
minimizes the square of the Euclidean distance between $conv(P)$ and $conv(Q)$.
|
||||||
Here, $D=C^{T}C$ is an
|
Here, $D=C^{T}C$ is an
|
||||||
$n \times n$-matrix, but its rank is only $d$.
|
$n \times n$-matrix, but its rank is only $d$.
|
||||||
\end{slide}
|
\end{slide}
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ provided by the vertex class. The degree of a vertex is not cached and cannot be
|
||||||
from the vertex, but you can calculate this number by manually counting the number of incident halfedges
|
from the vertex, but you can calculate this number by manually counting the number of incident halfedges
|
||||||
around the vertex.
|
around the vertex.
|
||||||
|
|
||||||
Each vertex stores a 2D point and a time, which is the euclidean distance from the vertex's point
|
Each vertex stores a 2D point and a time, which is the Euclidean distance from the vertex's point
|
||||||
to the lines supporting each of the defining contour edges of the vertex (the distance is
|
to the lines supporting each of the defining contour edges of the vertex (the distance is
|
||||||
the same to each line). Unless the polygon is convex, this distance is not equal to the edges,
|
the same to each line). Unless the polygon is convex, this distance is not equal to the edges,
|
||||||
as in the case of a Medial Axis, therefore, the time of a skeleton vertex does not correspond
|
as in the case of a Medial Axis, therefore, the time of a skeleton vertex does not correspond
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ computes the separation required between a polygon and the outer frame used to o
|
||||||
suitable for the computation of outer offset polygons at a given distance.
|
suitable for the computation of outer offset polygons at a given distance.
|
||||||
|
|
||||||
Given a non-degenerate strictly-simple 2D polygon whose vertices are passed
|
Given a non-degenerate strictly-simple 2D polygon whose vertices are passed
|
||||||
in the range [`first`,`beyond`), calculates the largest euclidean distance
|
in the range [`first`,`beyond`), calculates the largest Euclidean distance
|
||||||
`d` between each input vertex and its corresponding offset vertex at
|
`d` between each input vertex and its corresponding offset vertex at
|
||||||
a distance `offset`.
|
a distance `offset`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ It is necessary to place the frame sufficiently far away from the contour. If it
|
||||||
that the outward offset contour collides and merges with the inward offset frame, resulting in 1
|
that the outward offset contour collides and merges with the inward offset frame, resulting in 1
|
||||||
instead of 2 offset contours. However, the proper separation between the contour and the frame is
|
instead of 2 offset contours. However, the proper separation between the contour and the frame is
|
||||||
not directly given by the offset distance at which you want the offset contour. That distance
|
not directly given by the offset distance at which you want the offset contour. That distance
|
||||||
must be at least the desired offset plus the largest euclidean distance between an offset vertex
|
must be at least the desired offset plus the largest Euclidean distance between an offset vertex
|
||||||
and its original. This \cgal packages provides a helper function to compute the required separation:
|
and its original. This \cgal packages provides a helper function to compute the required separation:
|
||||||
`compute_outer_frame_margin()`.
|
`compute_outer_frame_margin()`.
|
||||||
\cgalAdvancedEnd
|
\cgalAdvancedEnd
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
The package Triangulation provides classes for manipulating triangulations in
|
The package Triangulation provides classes for manipulating triangulations in
|
||||||
euclidean spaces whose dimension can be specified at compile-time or at
|
Euclidean spaces whose dimension can be specified at compile-time or at
|
||||||
run-time. It also provides point location and a class for building Delaunay
|
run-time. It also provides point location and a class for building Delaunay
|
||||||
triangulation supporting both point insertion and removal.
|
triangulation supporting both point insertion and removal.
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ void DemoWindowItem::draw_edge(QPainter* painter, Point source, Point target)
|
||||||
|
|
||||||
// 1. Compute the center of the circle supporting the geodesic between src and tar
|
// 1. Compute the center of the circle supporting the geodesic between src and tar
|
||||||
|
|
||||||
// 1.a Inverse src and tar with respect to the unit circle and find the euclidean midpoints of the segments between respectively
|
// 1.a Inverse src and tar with respect to the unit circle and find the Euclidean midpoints of the segments between respectively
|
||||||
// src and its inversion, and tar and its inversion
|
// src and its inversion, and tar and its inversion
|
||||||
|
|
||||||
double src_norm_2 = src_x*src_x + src_y*src_y; // Can't be too close to zero because determinant was not
|
double src_norm_2 = src_x*src_x + src_y*src_y; // Can't be too close to zero because determinant was not
|
||||||
|
|
@ -128,7 +128,7 @@ void DemoWindowItem::draw_edge(QPainter* painter, Point source, Point target)
|
||||||
double tar_inv_x = tar_x / tar_norm_2;
|
double tar_inv_x = tar_x / tar_norm_2;
|
||||||
double tar_inv_y = tar_y / tar_norm_2;
|
double tar_inv_y = tar_y / tar_norm_2;
|
||||||
|
|
||||||
// coordinates of the euclidean midpoints of the segments [src, src_inv] and [tar, tar_inv]
|
// coordinates of the Euclidean midpoints of the segments [src, src_inv] and [tar, tar_inv]
|
||||||
double src_mid_x = (src_x + src_inv_x) / 2;
|
double src_mid_x = (src_x + src_inv_x) / 2;
|
||||||
double src_mid_y = (src_y + src_inv_y) / 2;
|
double src_mid_y = (src_y + src_inv_y) / 2;
|
||||||
double tar_mid_x = (tar_x + tar_inv_x) / 2;
|
double tar_mid_x = (tar_x + tar_inv_x) / 2;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue