mirror of https://github.com/CGAL/cgal
Fixes after review by Monique and Olivier
This commit is contained in:
parent
f93ac02346
commit
d78735364b
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999, 2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999,2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
|
||||||
|
|
@ -4092,7 +4092,7 @@ public:
|
||||||
const Weighted_point_3 & s,
|
const Weighted_point_3 & s,
|
||||||
const Weighted_point_3 & t) const
|
const Weighted_point_3 & t) const
|
||||||
{
|
{
|
||||||
return power_testC3(p.x(), p.y(), p.z(), p.weight(),
|
return power_side_of_power_sphereC3(p.x(), p.y(), p.z(), p.weight(),
|
||||||
q.x(), q.y(), q.z(), q.weight(),
|
q.x(), q.y(), q.z(), q.weight(),
|
||||||
r.x(), r.y(), r.z(), r.weight(),
|
r.x(), r.y(), r.z(), r.weight(),
|
||||||
s.x(), s.y(), s.z(), s.weight(),
|
s.x(), s.y(), s.z(), s.weight(),
|
||||||
|
|
@ -4104,7 +4104,7 @@ public:
|
||||||
const Weighted_point_3 & r,
|
const Weighted_point_3 & r,
|
||||||
const Weighted_point_3 & s) const
|
const Weighted_point_3 & s) const
|
||||||
{
|
{
|
||||||
return power_testC3(p.x(), p.y(), p.z(), p.weight(),
|
return power_side_of_power_sphereC3(p.x(), p.y(), p.z(), p.weight(),
|
||||||
q.x(), q.y(), q.z(), q.weight(),
|
q.x(), q.y(), q.z(), q.weight(),
|
||||||
r.x(), r.y(), r.z(), r.weight(),
|
r.x(), r.y(), r.z(), r.weight(),
|
||||||
s.x(), s.y(), s.z(), s.weight());
|
s.x(), s.y(), s.z(), s.weight());
|
||||||
|
|
@ -4114,7 +4114,7 @@ public:
|
||||||
const Weighted_point_3 & q,
|
const Weighted_point_3 & q,
|
||||||
const Weighted_point_3 & r) const
|
const Weighted_point_3 & r) const
|
||||||
{
|
{
|
||||||
return power_testC3(p.x(), p.y(), p.z(), p.weight(),
|
return power_side_of_power_sphereC3(p.x(), p.y(), p.z(), p.weight(),
|
||||||
q.x(), q.y(), q.z(), q.weight(),
|
q.x(), q.y(), q.z(), q.weight(),
|
||||||
r.x(), r.y(), r.z(), r.weight());
|
r.x(), r.y(), r.z(), r.weight());
|
||||||
}
|
}
|
||||||
|
|
@ -4122,7 +4122,7 @@ public:
|
||||||
Oriented_side operator() ( const Weighted_point_3 & p,
|
Oriented_side operator() ( const Weighted_point_3 & p,
|
||||||
const Weighted_point_3 & q) const
|
const Weighted_point_3 & q) const
|
||||||
{
|
{
|
||||||
return power_testC3(p.weight(),q.weight());
|
return power_side_of_power_sphereC3(p.weight(),q.weight());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4142,7 +4142,7 @@ public:
|
||||||
const Weighted_point_2 & t) const
|
const Weighted_point_2 & t) const
|
||||||
{
|
{
|
||||||
//CGAL_kernel_precondition( ! collinear(p, q, r) );
|
//CGAL_kernel_precondition( ! collinear(p, q, r) );
|
||||||
return power_testC2(p.x(), p.y(), p.weight(),
|
return power_side_of_power_circleC2(p.x(), p.y(), p.weight(),
|
||||||
q.x(), q.y(), q.weight(),
|
q.x(), q.y(), q.weight(),
|
||||||
r.x(), r.y(), r.weight(),
|
r.x(), r.y(), r.weight(),
|
||||||
t.x(), t.y(), t.weight());
|
t.x(), t.y(), t.weight());
|
||||||
|
|
@ -4154,7 +4154,7 @@ public:
|
||||||
{
|
{
|
||||||
//CGAL_kernel_precondition( collinear(p, q, r) );
|
//CGAL_kernel_precondition( collinear(p, q, r) );
|
||||||
//CGAL_kernel_precondition( p.point() != q.point() );
|
//CGAL_kernel_precondition( p.point() != q.point() );
|
||||||
return power_testC2(p.point().x(), p.y(), p.weight(),
|
return power_side_of_power_circleC2(p.point().x(), p.y(), p.weight(),
|
||||||
q.x(), q.y(), q.weight(),
|
q.x(), q.y(), q.weight(),
|
||||||
t.x(), t.y(), t.weight());
|
t.x(), t.y(), t.weight());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2000
|
// Copyright (c) 2000, 2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Herve Bronnimann (Herve.Bronnimann@sophia.inria.fr)
|
// Author(s) : Herve Bronnimann, Sylvain Pion, Olivier Devillers
|
||||||
// Sylvain Pion
|
//
|
||||||
|
|
||||||
#ifndef CGAL_PREDICATES_KERNEL_FTC2_H
|
#ifndef CGAL_PREDICATES_KERNEL_FTC2_H
|
||||||
#define CGAL_PREDICATES_KERNEL_FTC2_H
|
#define CGAL_PREDICATES_KERNEL_FTC2_H
|
||||||
|
|
@ -651,7 +651,7 @@ compare_power_distanceC2(const FT& px, const FT& py, const FT& pwt,
|
||||||
|
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC2( const FT &px, const FT &py, const FT &pwt,
|
power_side_of_power_sphereC2( const FT &px, const FT &py, const FT &pwt,
|
||||||
const FT &qx, const FT &qy, const FT &qwt,
|
const FT &qx, const FT &qy, const FT &qwt,
|
||||||
const FT &rx, const FT &ry, const FT &rwt,
|
const FT &rx, const FT &ry, const FT &rwt,
|
||||||
const FT &tx, const FT &ty, const FT &twt)
|
const FT &tx, const FT &ty, const FT &twt)
|
||||||
|
|
@ -677,11 +677,10 @@ power_testC2( const FT &px, const FT &py, const FT &pwt,
|
||||||
|
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC2( const FT &px, const FT &py, const FT &pwt,
|
power_side_of_power_sphereC2( const FT &px, const FT &py, const FT &pwt,
|
||||||
const FT &qx, const FT &qy, const FT &qwt,
|
const FT &qx, const FT &qy, const FT &qwt,
|
||||||
const FT &tx, const FT &ty, const FT &twt)
|
const FT &tx, const FT &ty, const FT &twt)
|
||||||
{
|
{
|
||||||
std::cerr << px << " " << py << " " << pwt << std::endl;
|
|
||||||
// Same translation as above.
|
// Same translation as above.
|
||||||
FT dpx = px - tx;
|
FT dpx = px - tx;
|
||||||
FT dpy = py - ty;
|
FT dpy = py - ty;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2000
|
// Copyright (c) 2000, 2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
@ -20,7 +20,8 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Herve Bronnimann, Sylvain Pion
|
// Author(s) : Herve Bronnimann, Sylvain Pion, Oliver Devillers, Mariette Yvinec
|
||||||
|
|
||||||
|
|
||||||
#ifndef CGAL_PREDICATES_KERNEL_FTC3_H
|
#ifndef CGAL_PREDICATES_KERNEL_FTC3_H
|
||||||
#define CGAL_PREDICATES_KERNEL_FTC3_H
|
#define CGAL_PREDICATES_KERNEL_FTC3_H
|
||||||
|
|
@ -559,7 +560,7 @@ has_smaller_signed_dist_to_planeC3(
|
||||||
// where column [P] = transpose[px,py,pz,p^2 -wp,1]
|
// where column [P] = transpose[px,py,pz,p^2 -wp,1]
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
power_side_of_power_sphereC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
||||||
const FT &rx, const FT &ry, const FT &rz, const FT &rwt,
|
const FT &rx, const FT &ry, const FT &rz, const FT &rwt,
|
||||||
const FT &sx, const FT &sy, const FT &sz, const FT &swt,
|
const FT &sx, const FT &sy, const FT &sz, const FT &swt,
|
||||||
|
|
@ -596,7 +597,7 @@ power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
|
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
power_side_of_power_sphereC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
||||||
const FT &rx, const FT &ry, const FT &rz, const FT &rwt,
|
const FT &rx, const FT &ry, const FT &rz, const FT &rwt,
|
||||||
const FT &tx, const FT &ty, const FT &tz, const FT &twt)
|
const FT &tx, const FT &ty, const FT &tz, const FT &twt)
|
||||||
|
|
@ -646,7 +647,7 @@ power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
|
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
power_side_of_power_sphereC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
const FT &qx, const FT &qy, const FT &qz, const FT &qwt,
|
||||||
const FT &tx, const FT &ty, const FT &tz, const FT &twt)
|
const FT &tx, const FT &ty, const FT &tz, const FT &twt)
|
||||||
{
|
{
|
||||||
|
|
@ -680,7 +681,7 @@ power_testC3( const FT &px, const FT &py, const FT &pz, const FT &pwt,
|
||||||
|
|
||||||
template <class FT>
|
template <class FT>
|
||||||
Oriented_side
|
Oriented_side
|
||||||
power_testC3(const FT &pwt, const FT &qwt)
|
power_side_of_power_sphereC3(const FT &pwt, const FT &qwt)
|
||||||
{
|
{
|
||||||
return CGAL_NTS compare(qwt, pwt);
|
return CGAL_NTS compare(qwt, pwt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999,2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999,2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999,2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Stefan Schirra
|
// Author(s) : Stefan Schirra, Olivier Devillers, Mariette Yvinec
|
||||||
|
|
||||||
|
|
||||||
#ifndef CGAL_PREDICATES_ON_POINTSH2_H
|
#ifndef CGAL_PREDICATES_ON_POINTSH2_H
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 1999,2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Stefan Schirra
|
// Author(s) : Stefan Schirra, Olivier Devillers, Mariette Yvinec
|
||||||
|
|
||||||
|
|
||||||
#ifndef CGAL_PREDICATES_ON_POINTSH3_H
|
#ifndef CGAL_PREDICATES_ON_POINTSH3_H
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ introduces a weighted point with coordinates `x`, `y`, and weight 0.
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
returns the weight of the weighted point.
|
returns the point of the weighted point.
|
||||||
*/
|
*/
|
||||||
Point_2<Kernel> point() const;
|
Point_2<Kernel> point() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8741,6 +8741,9 @@ Oriented_side operator() ( Wconst Kernel::eighted_point_2& p,
|
||||||
\ingroup PkgKernel23ConceptsFunctionObjects
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
||||||
\cgalConcept
|
\cgalConcept
|
||||||
|
|
||||||
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
||||||
|
\sa `ComputePowerProduct_3` for the definition of power distance.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class PowerSideOfPowerSphere_3 {
|
class PowerSideOfPowerSphere_3 {
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Andreas Fabri
|
// Author(s) : Mariette Yvinec, Sylvain Pion
|
||||||
|
|
||||||
#ifndef CGAL_WEIGHTED_POINT_2_H
|
#ifndef CGAL_WEIGHTED_POINT_2_H
|
||||||
#define CGAL_WEIGHTED_POINT_2_H
|
#define CGAL_WEIGHTED_POINT_2_H
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 1999
|
// Copyright (c) 2016
|
||||||
// Utrecht University (The Netherlands),
|
// Utrecht University (The Netherlands),
|
||||||
// ETH Zurich (Switzerland),
|
// ETH Zurich (Switzerland),
|
||||||
// INRIA Sophia-Antipolis (France),
|
// INRIA Sophia-Antipolis (France),
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Author(s) : Andreas Fabri, Stefan Schirra
|
// Author(s) : Mariette Yvinec, Sylvain Pion
|
||||||
|
|
||||||
#ifndef CGAL_WEIGHTED_POINT_3_H
|
#ifndef CGAL_WEIGHTED_POINT_3_H
|
||||||
#define CGAL_WEIGHTED_POINT_3_H
|
#define CGAL_WEIGHTED_POINT_3_H
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,16 @@ and uses the type `K::Weighted_point_3` for weighted points`.
|
||||||
|
|
||||||
\deprecated The template parameter `Weight` is deprecated. Users who need this feature must use a CGAL version prior to 4.9.
|
\deprecated The template parameter `Weight` is deprecated. Users who need this feature must use a CGAL version prior to 4.9.
|
||||||
|
|
||||||
The class is a model of the concept `RegularTriangulationTraits_3`
|
The class is a model of the concept `RegularTriangulationTraits_3`.
|
||||||
but it also contains predicates and constructors on weighted points
|
|
||||||
that are not required in the
|
It also contains some additional predicates and constructors on weighted points
|
||||||
concept `RegularTriangulationTraits_3`.
|
that are not required in the concept `RegularTriangulationTraits_3`,
|
||||||
|
and hence documented here.
|
||||||
|
|
||||||
Note that filtered predicates are automatically used if the
|
Note that filtered predicates are automatically used if the
|
||||||
Boolean `Has_filtered_predicates` in the kernel provided as template parameter
|
Boolean `Has_filtered_predicates` in the kernel provided as template parameter
|
||||||
of that class is set to `true`.
|
of that class is set to `true`. This is the case for the predefined kernels
|
||||||
|
\ref kernel_predef.
|
||||||
|
|
||||||
\cgalModels `RegularTriangulationTraits_3`
|
\cgalModels `RegularTriangulationTraits_3`
|
||||||
|
|
||||||
|
|
@ -58,17 +60,6 @@ The type for points.
|
||||||
/// \name Types for Predicate Functors
|
/// \name Types for Predicate Functors
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
|
||||||
A predicate type for power test. Belongs to the
|
|
||||||
`RegularTriangulationTraits_3` concept.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Power_side_of_power_sphere_3;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
A predicate type to compare power distance. Belongs to the
|
|
||||||
`RegularTriangulationTraits_3` concept.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Compare_power_distance_3;
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A predicate type. The operator() takes weighted point(s) as arguments,
|
A predicate type. The operator() takes weighted point(s) as arguments,
|
||||||
|
|
@ -126,19 +117,6 @@ typedef unspecified_type Side_of_bounded_orthogonal_sphere_3;
|
||||||
/// \name Types for Constructor Functors
|
/// \name Types for Constructor Functors
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
|
||||||
A constructor type. The operator() constructs the bare point
|
|
||||||
which is the center of the smallest orthogonal sphere to the input
|
|
||||||
weighted points.
|
|
||||||
|
|
||||||
`Bare_point operator() ( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r, Weighted_point_3 s);`
|
|
||||||
|
|
||||||
`Bare_point operator() ( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r);`
|
|
||||||
|
|
||||||
`Bare_point operator() ( Weighted_point_3 p, Weighted_point_3 q);`
|
|
||||||
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Construct_weighted_circumcenter_3;
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A functor type. The operator() computes the power distance between its
|
A functor type. The operator() computes the power distance between its
|
||||||
|
|
@ -184,16 +162,6 @@ for a given last point should be needed.
|
||||||
/// \name Operations
|
/// \name Operations
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
|
||||||
|
|
||||||
*/
|
|
||||||
Power_side_of_power_sphere_3 power_side_of_power_sphere_3_object();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
|
|
||||||
*/
|
|
||||||
Compare_power_distance_3
|
|
||||||
compare_power_distance_3_object();
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
|
|
@ -214,12 +182,6 @@ Side_of_bounded_orthogonal_sphere_3
|
||||||
side_of_bounded_orthogonal_sphere_3_object();
|
side_of_bounded_orthogonal_sphere_3_object();
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
|
|
||||||
*/
|
|
||||||
Construct_weighted_circumcenter_3
|
|
||||||
construct_weighted_circumcenter_3_object();
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -117,8 +117,7 @@ segment with endpoints `p` and `q`.
|
||||||
|
|
||||||
`Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q)`,
|
`Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q)`,
|
||||||
|
|
||||||
which is the same for equal points, that is when `p` and `q`
|
which is the same for equal bare points, then it returns the comparison of the weights
|
||||||
have equal coordinates, then it returns the comparison of the weights
|
|
||||||
(`ON_POSITIVE_SIDE` when `q` is heavier than `p`).
|
(`ON_POSITIVE_SIDE` when `q` is heavier than `p`).
|
||||||
\pre `p` and `q` have equal bare points.
|
\pre `p` and `q` have equal bare points.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue