\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.10 - 2D and 3D Linear Geometry Kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Kernel::PowerSideOfOrientedPowerSphere_3 Concept Reference

Definition

See Also
CGAL::Weighted_point_3<Kernel>
ComputePowerProduct_3 for the definition of power distance.

Operations

A model of this concept must provide:

Oriented_side operator() (const Kernel::Weighted_point_3 &p, const Kernel::Weighted_point_3 &q, const Kernel::Weighted_point_3 &r, const Kernel::Weighted_point_3 &s, const Kernel::Weighted_point_3 &t) const
 Let \( {z(p,q,r,s)}^{(w)}\) be the power sphere of the weighted points \( (p,q,r,s)\). More...
 
Oriented_side operator() (const Kernel::Weighted_point_3 &p, const Kernel::Weighted_point_3 &q, const Kernel::Weighted_point_3 &r, const Kernel::Weighted_point_3 &t) const
 Analogous to the previous method, for coplanar points, with the power circle \( {z(p,q,r)}^{(w)}\). More...
 
Oriented_side operator() (const Kernel::Weighted_point_3 &p, const Kernel::Weighted_point_3 &q, const Kernel::Weighted_point_3 &t) const
 which is the same for collinear points, where \( {z(p,q)}^{(w)}\) is the power segment of p and q. More...
 
Oriented_side operator() (const Kernel::Weighted_point_3 &p, const Kernel::Weighted_point_3 &q) const
 which is the same for equal points, that is when p and q have equal coordinates, then it returns the comparison of the weights (ON_POSITIVE_SIDE when q is heavier than p). More...
 

Member Function Documentation

Oriented_side Kernel::PowerSideOfOrientedPowerSphere_3::operator() ( const Kernel::Weighted_point_3 p,
const Kernel::Weighted_point_3 q,
const Kernel::Weighted_point_3 r,
const Kernel::Weighted_point_3 s,
const Kernel::Weighted_point_3 t 
) const

Let \( {z(p,q,r,s)}^{(w)}\) be the power sphere of the weighted points \( (p,q,r,s)\).

Returns

  • ON_ORIENTED_BOUNDARY if t is orthogonal to \( {z(p,q,r,s)}^{(w)}\),
  • ON_NEGATIVE_SIDE if t lies outside the oriented sphere of center \( z(p,q,r,s)\) and radius \( \sqrt{ w_{z(p,q,r,s)}^2 + w_t^2 }\) (which is equivalent to \( \Pi({t}^{(w)},{z(p,q,r,s)}^{(w)} >0\))),
  • ON_POSITIVE_SIDE if t lies inside this oriented sphere.
Precondition
p, q, r, s are not coplanar.

If all the points have a weight equal to 0, then power_side_of_oriented_power_sphere_3(p,q,r,s,t) = side_of_oriented_sphere(p,q,r,s,t).

Oriented_side Kernel::PowerSideOfOrientedPowerSphere_3::operator() ( const Kernel::Weighted_point_3 p,
const Kernel::Weighted_point_3 q,
const Kernel::Weighted_point_3 r,
const Kernel::Weighted_point_3 t 
) const

Analogous to the previous method, for coplanar points, with the power circle \( {z(p,q,r)}^{(w)}\).

Precondition
p, q, r are not collinear.

If all the points have a weight equal to 0, then power_test_3(p,q,r,t) = side_of_oriented_circle(p,q,r,t).

Oriented_side Kernel::PowerSideOfOrientedPowerSphere_3::operator() ( const Kernel::Weighted_point_3 p,
const Kernel::Weighted_point_3 q,
const Kernel::Weighted_point_3 t 
) const

which is the same for collinear points, where \( {z(p,q)}^{(w)}\) is the power segment of p and q.

Precondition
p and q have different bare points.

If all points have a weight equal to 0, then power_side_of_oriented_power_sphere_3(p,q,t) gives the same answer as the kernel predicate s(p,q).has_on(t) would give, where s(p,q) denotes the segment with endpoints p and q.

Oriented_side Kernel::PowerSideOfOrientedPowerSphere_3::operator() ( const Kernel::Weighted_point_3 p,
const Kernel::Weighted_point_3 q 
) const

which is the same for equal points, that is when p and q have equal coordinates, then it returns the comparison of the weights (ON_POSITIVE_SIDE when q is heavier than p).

Precondition
p and q have equal bare points.