The mail goal of this vignette is to show that there are homeomorphisms An ⟷ ∂Zn ⟷ S2n Where An is a space of arcs and ∂Zn is the boundary of a polar zonoid. Both of these spaces are defined below.
In this User Guide we start with very general zonoids, and after two sections specialize to the polar zonoid.
For this package we only consider zonoids defined by generating functions in L1(S1), where the unit circle S1 has the usual Lesbesgue measure. I do not know whether more exotic zonoids exist. For a very good survey of the theory of zonoids, see [1].
Let w1,w2,...,wm be absolutely integrable functions from S1 to R, i.e. each wi∈L1(S1). For θ∈S1, let w(θ):=(w1(θ),...,wm(θ))∈Rn. The letter w denotes “weight”.
Define the zonoid Zw by Zw:={∫Vw(θ)dθ | V⊆S1} = {∫S11V(θ)w(θ)dθ | V⊆S1}
where V varies over all measurable subsets of S1. The function 1V is the indicator function of V. The functions w1(θ),...,wm(θ) are the generating functions of Zw, and w(θ) is the generating function.
The function w(θ) induces a vector measure on the circle: μw(V):=∫Vw(θ)dθ. This measure is atom free. The measure viewpoint gives a simpler alternative definition: Zw:={μw(V) | V⊆S1}
This is the classical definition of a general zonoid, except with μw replaced by an arbitrary atom free vector measure μ. Given a zonoid Zμ which is the range of μ, the measure μ is not unique. It was shown in [6] that two zonoids are equal if and only if the total measures of the corresponding spaces are equal, and certain induced measures on the projective space RPn−1 are equal. This was reproved in [1]. By a classical theorem of Lyapunov, a zonoid is convex and closed, see Theorem 5.5 of [7].
The generating function w is far from unique; for most w, with very few exceptions, it is easy to find many w′≠w for which Zw′=Zw.
Now let Q∞ be the set of measurable functions on S1 whose essential range is in [0,1]. In fancier terms, Q∞ is the non-negative part of the unit ball in L∞(S1). The indicator functions 1V are in Q∞; in fact Q∞ is like a cube and the indicator functions 1V are the vertices of that cube. It is an amazing fact that, in equation (1), if the vertices 1V are replaced by arbitrary f∈Q∞ the resulting set does not get any larger ! Therefore we also have: Zw={∫S1f(θ)w(θ)dθ | f∈Q∞}
This is another classic theorem of Lyapunov; for the proof, see Theorem 5.5 in [7]. In control theory this amazing fact is related to the “bang-bang principle”.
SIDE NOTE: The previous concepts actually have a physical application in colorimetry. The variable θ is wavelength. The function f is reflectance, which must be between 0 and 1. The functions w1(θ),w2(θ),w3(θ) are responsivities for short, medium, and long wavelength bands. Zw is the object color solid. In reference [5], which is a scientific book on colorimetry, the theorem of Lyapunov and the “bang-bang principle” are mentioned in Chapter 7 Notes 4 and 5, page 321. The first bang is 0, and the second bang is 1.
We want to derive an expression similar to (2), but for ∂Zw instead of Zw.
Let c=(c1,...,cm) be a fixed non-zero vector and consider maximizing the inner product of ⟨c,z⟩ over all z∈Zw. By (2) any such z is μw(V) for some V⊂S1 and we have: ⟨c,μw(V)⟩ = ⟨c,∫Vw(θ)dθ⟩ = ∫V⟨c,w(θ)⟩dθ = ∫Vc1w1(θ)+...+cmwm(θ)dθ This expression is clearly maximized when V is the set of θ where the combination c1w1(θ)+...+cmwm(θ) is non-negative. Denote this set by: Vc:={θ | c1w1(θ)+...+cmwm(θ)≥0} Since the maximum of the inner product must be taken on ∂Zw, choosing this Vc means that μw(Vc)∈∂Zw. Note that Vc might be empty, and it might be the entire circle.
To proceed further, we require from now on that w has this simplifying property:
Property S. Every non-trivial linear combination c1w1(θ)+...+cmwm(θ) is non-zero for almost all θ.
Think of this property as a very strong form of linear independence. Not only is the linear combination non-zero on a set of positive measure, it is non-zero at almost every point.
As a consequence of Property S, the inner product with c is uniquely maximized by μw(Vc). In other words, if V≠Vc then ⟨c,μw(V)⟩<⟨c,μw(Vc)⟩. In the terminology of convex bodies, every face of Zw is single point.
Now define Vw := {Vc | c≠0} = {Vc | c∈S2n} Vw is a family of subsets of S1 that depends only on w. The last equality is true because multiplying c by a positive scalar does not change Vc. We make Vw into a topological space by identify Vc with its indicator function 1Vc⊂L1(S1). So we can think of Vw as a subset of L1(S1) and let Vw inherit the topology from the bigger space.
Theorem A: If w has Property S, then the map Vw→∂Zw given by Vc↦μw(Vc), is a homeomorphism.
Proof: The map Vc↦μw(Vc)=∫Vcwdθ is clearly continuous. Recall that by Property S, if V≠Vc, then ⟨c,μw(V)⟩<⟨c,μw(Vc)⟩.
First the surjective part. Let b∈∂Zw. Since b∈Zw, b=μw(V) for some V⊂S1. Since Zw is convex, there is a supporting hyperplane of Zw at b with non-zero outward-pointing normal c. if V≠Vc, then ⟨c,b⟩ = ⟨c,μw(V)⟩<⟨c,μw(Vc)⟩. But point b maximizes the inner product with c. This is a contradiction and so V=Vc and b=μw(Vc).
Now the injective part. Let Vc,Vc′∈Vw. If Vc′≠Vc, then ⟨c,μ(Vc′)⟩<⟨c,μ(Vc)⟩ and so μ(Vc′)≠μ(Vc). ◻
Without Property S, the conclusion of the theorem is definitely false. For example, if the range of w is finite, i.e. if w is a simple function, then Vw is finite too. But ∂Zw is obviously not. In this case the zonoid is a zonotope - a zonoid which is also a polytope. Many equivalent conditions for zonotopes are discussed by Bolker in Theorem 3.3 of [1]. The image of the map in the theorem is simply the vertices of ∂Zw. We hope to discuss polar zonotopes in a future version of this package.
We summarize with an expression for ∂Zw. If w has Property S, then ∂Zw={∫Vcw(θ)dθ | c≠0} = {μw(Vc) | Vc∈Vw} Compare this expression with (2). In that expression for Zw, V ranges over all V⊂S1, but for ∂Zw only the sets Vc are used.
Given a particular generating function w, the first step in describing ∂Zw is to describe the family Vw of subsets of S1. In the next section we do this for a particularly simple and special w.
We are finally ready to define the polar zonoid. Fix n≥1 and let w(θ) be given by the m=2n+1 functions: w(θ):=(cosθ,sinθ,cos2θ,sin2θ,...,cosnθ,sinnθ,1) These m functions are a basis for the trigonometric polynomials of order n. From now on in this vignette, w means this particular function.
We call the generated zonoid the polar zonoid of order n in R2n+1 and denote it by Zn. To describe ∂Zn, by (5) and (8) we must describe the sets Va,b:={θ | a1cosθ+b1sinθ +... +ancosnθ+bnsinnθ+a0≥0} where not all ai and bi are 0. Note we have switched from ci to ai and bi because this is the classical notation for trigonometric polynomials. We also put the constant term last instead of first, because we think of the last coordinate as “vertical” and the others as “horizontal”.
For later use, we state without proof that the product of two trigonometric polynomials of order n1 and n2 is a trigonometric polynomial of order n1+n2.
NOTE: The term polar zonoid was chosen because it is a generalization of the polar zonohedron, see [3]. Warning: In other contexts, i.e. the theory of convex bodies, the term “polar zonoid” is short for “polar of a zonoid”, which is an entirely different concept.
It is well-known that the trignometric polynomials have most 2n roots, see Chapter X, Theorem 1.7 in [8]. Thus Property S is trivially true, and the previous Theorem applies. Since the trigonometric polynomials are continuous, we can conclude that each set Va,b is the union of n or fewer arcs (possibly no arcs at all) in the circle, or the entire circle.
Conversely, given any n disjoint closed arcs, there is a trigonometric polynomial of order n whose roots are the 2n endpoints of those arcs, and is non-negative on those arcs.
We conclude that for the above w of trigonometric functions: Vw= the space of n or fewer pairwise disjoint closed arcs in the circle S1
We investigate families of arcs in the next section.
Definition: An is the space of n or fewer pairwise disjoint closed arcs in the circle S1.
An is the same as Vw in the previous section, and from now on we use this new notation.
For example, here are 2 plots of arcs on the circle, the left with 1 arc and the right with 3 arcs.
oldpar = par( mfrow=c(1,2) , omi=c(0.1,0.1,0.1,0.1), mai=c(0.45,0.5,0.1,0) )
arcmat = matrix( c(1.5,2.9), nrow=1, ncol=2, byrow=TRUE )
plotarcs( arcmat, main=NA )
arcmat = matrix( c(1.5,2, pi,0.5, 5,pi/4 ), nrow=3, ncol=2, byrow=TRUE )
plotarcs( arcmat, main=NA ) ; par( oldpar )
Figure 3.0 examples of collections of pairwise disjoint arcs
Both of these represent points in A3. The left plot also represents a point in A1. We define A0 to be the set of 2 improper arcs: the empty arc, and the full circle.
We have proper inclusions: A0⊂A1⊂A2⊂A3⊂A4 ...
We make An into a topological space by identify a set of disjoint arcs V with its indicator function 1V⊂L1(S1). We think of An as a subset of this L1 and let An inherit the topology from the bigger space.
In more detail, An is a metric space with metric defined as follows. Let V and W be sets of arcs in An, so V,W⊂S1. Define the metric d(V,W):=∫S1|1V−1W|dθ.
The metric can be viewed in another way; the symmetric difference of
V and W is also a collection of arcs, and d(V,W) is the total length of the arcs in
this symmetric difference. The corresponding functions in the package
are arcsdistance()
and arcssymmdiff()
. With
this choice of metric, an arc of length 0 is considered to be the same
as the empty arc, but it is allowed in the software.
There is a useful relationship between the uniqueness of supporting hyperplanes and the number of arcs.
Theorem: For V∈An, V has exactly n arcs if and only if the supporting hyperplane of Zn at μw(V) is unique.
Proof: Suppose V∈An has exactly n arcs, i.e. that V∈An−An−1. Let T(θ) be the trigonometric polynomial of order n with roots at the 2n endpoints, and orientation that matches V. Then all the roots of T(θ) of simple which means that T(θ) is unique up to a positive multiple. The coefficients of T(θ) are the normal to supporting hyperplane and this implies that the hyperplane is unique.
Suppose that V∈An has exactly n′ arcs with n′<n. The corresponding polynomial T(θ) has order n′ with 2n′ roots. Take a trignometric polynomial Tδ(θ) of order n−n′ that is everywhere positive and not constant. This is easy - just take all ai and bi small and non-zero for i>0, and a0 sufficiently large. Then the product of T(θ) and Tδ(θ) is order n and has exactly the same arcs. The coefficients of the product are a normal vector in a different direction and thus there is another supporting hyperplane. ◻.
The theorem says that if a point in ∂Zn is the image of a point in An−An−1, then ∂Zn is smooth at that point. But if it is the image of a point in An−1, then ∂Zn has a “crease” there.
For example, when n=1, ∂Z1 is homeomorphic to S2 and it has cusps at 2 “poles” corresponding to the 2 points in A0. An approximation of it is illustrated in this figure:
plot( zonohedra::polarzonohedron( 25, height=2*pi ), type='f', falpha=1 )
rgl::arc3d( 1.005*c(2,0,pi), 1.005*c(0,2,pi), center=c(0,0,pi), base=c(0,1), color='red', lwd=3 )
rgl::rglwidget( webgl=TRUE )
polar zonohedron with 25 generators [this is an interactive WebGL widget, try it !]
polar zonohedron with 25 generators    [this is an interactive WebGL widget, try it !]
From Theorem A there is a homeomorphism An→∂Zn. For n=1, the description of it is fairly easy. For n=1 there is a single arc in the circle. The center of the arc maps to the “longitude” of the boundary ∂Z1, and the length of the arc maps to the “latitude”. Length=0 (the empty arc) goes to the black cusp (0,0,0) at the “south pole” and Length=2π (the full circle) goes to the white cusp (0,0,2π) at the “north pole”. Semicircles, where Length=π, go to the red “equator”. This is a plot of a polar zonohedron, with M=25 generators, that approximates the true polar zonoid. As M→∞, the polar zonohedron converges to the polar zonoid, in the Hausdorff metric. This is shown at the end of [3]. The surface is the surface of revolution of the curve 2sin(z/2).
SIDE NOTE: These investigations were largely inspired by a colorimetry paper by P. Centore [2], which started me thinking about the space A2.
From Theorem A we have a homemomorphism: An→∂Zn given by V↦∫Vw(θ)dθ and w(θ) is given by (9). The goal of this section is to compute simple expressions for this mapping.
Let all arcs be oriented in the counter-clockwise direction. Take a
single arc starting at θ0 and
with length L, and denote it by
[θ0,θ0+L]. For
simplicity, compute the map for only 3 coordinate functions of w(θ): (coskθ,sinkθ,1). [θ0,θ0+L]↦(∫θ0+Lθ0coskθdθ,∫θ0+Lθ0sinkθdθ,∫θ0+Lθ01dθ)↦((sin(k(θ0+L))−sin(kθ0))/k),(−cos(k(θ0+L))+cos(kθ0))/k),L) Expressions like these are used in the function
boundaryfromarcs()
.
It is far simpler to change the first 2 coordinates to complex numbers: [θ0,θ0+L]↦(∫θ0+Lθ0eikθdθ,∫θ0+Lθ01dθ)↦((eik(θ0+L)−eikθ0)/(ik),L) We leave it to the reader to check that the real and complex expressions are equivalent.
Now take the complex number representation a little further. Let the same arc start at u and go counterclockwise to v with length L, where u and v are complex points on the unit circle. So that u=eiθ0 and v=ei(θ0+L)=eiθ0eiL. Now denote the same arc by [u,v]. Making these substitutions gives: [u,v]↦(vk−ukik,L) If we have a disjoint union of 2 arcs V=[u1,v1]⊔[u2,v2] with lengths l1 and l2, then we take the sum. [u1,v1]⊔[u2,v2]↦((vk1−uk1)+(vk2−uk2)ik,l1+l2)
If we denote the other coordinates on the right side by zk as in: [u1,v1]⊔[u2,v2]↦(z1,...,zn,l1+l2) then we identify points on the right side with
points in R2n+1, and we
have: zk=(vk1−uk1)+(vk2−uk2)ikk=1,...,n The generalization to more than 2 disjoint arcs
is straightforward. These equations are used extensively in the
functions boundaryfromsphere()
and
arcsfromboundary()
, see the Implicitization vignette.
Zn is a convex body so it is
homeomorphic to the ball B2n+1,
and its boundary is homeomorphic to S2n. An explict map is
trivial to construct. The center of Zn is c=(0,...0,π) in the interior of Zn. For b∈∂Zn use the projection onto the unit sphere
centered at c: b↦(b−c)/||b−c||∈S2n. This is computed in the function
spherefromboundary()
.
The inverse S2n→∂Zn is much harder since now we are given a ray based at c and must compute where that ray
intersects ∂Zn. This is
computed iteratively in boundaryfromsphere()
and depends on
an implicit function for ∂Zn, for details see the Implicitization vignette. This
function is only implemented for n
= 1, 2, and 3.
The space of arcs An has a natural involution γ, which is the complementation operation, given by γ(V)=Cl(S1−V). The closure Cl is only necessary to create closed arcs. Note that if V has k disjoint closed arcs, then so does γ(V). This involution is conjugate to the antipodal map on S2n under the composition An→∂Zn→S2n. These properties are discussed further in the Real Projective Spaces and 3x3 Rotation Matrices vignette.
Logging is performed using the package logger, see
[4]. This is a powerful package that
allows a separate configuration for logging from within
polarzonoid, and that is what I have done. During
package loading, the logging threshold is changed from INFO
to WARN
. To change it back again, one can execute:
log_threshold( INFO, namespace="polarzonoid" )
The layout callback functions is customized; it adds the name of the
calling function to the message. To install your own layout function,
you can execute:
log_layout( <your function>, namespace="polarzonoid" )
The appender callback functions is also customized; it comes to an
immediate stop if the message level is ERROR
or
FATAL
. To return to the default behavior, you can
execute:
log_appender( appender_console, namespace="polarzonoid" )
The formatter callback function is forced to be
formatter_sprintf()
; this should not be changed.
R version 4.5.0 (2025-04-11 ucrt) Platform: x86_64-w64-mingw32/x64 Running under: Windows 11 x64 (build 26100) Matrix products: default LAPACK version 3.12.1 locale: [1] LC_COLLATE=C [2] LC_CTYPE=English_United States.utf8 [3] LC_MONETARY=English_United States.utf8 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.utf8 time zone: America/Los_Angeles tzcode source: internal attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] zonohedra_0.4-0 rgl_1.3.18 gifski_1.32.0-2 flextable_0.9.7 [5] polarzonoid_0.1-2 loaded via a namespace (and not attached): [1] katex_1.5.0 jsonlite_2.0.0 compiler_4.5.0 [4] equatags_0.2.1 Rcpp_1.0.14 zip_2.3.3 [7] xml2_1.3.8 jquerylib_0.1.4 fontquiver_0.2.1 [10] systemfonts_1.2.3 textshaping_1.0.1 uuid_1.2-1 [13] yaml_2.3.10 fastmap_1.2.0 R6_2.6.1 [16] microbenchmark_1.5.0 gdtools_0.4.2 curl_6.2.2 [19] knitr_1.50 htmlwidgets_1.6.4 logger_0.4.0 [22] openssl_2.3.2 bslib_0.9.0 rlang_1.1.6 [25] V8_6.0.3 cachem_1.1.0 xfun_0.52 [28] sass_0.4.10 cli_3.6.5 magrittr_2.0.3 [31] digest_0.6.37 grid_4.5.0 base64enc_0.1-3 [34] askpass_1.2.1 lifecycle_1.0.4 evaluate_1.0.3 [37] glue_1.8.0 data.table_1.17.2 fontLiberation_0.1.0 [40] officer_0.6.8 ragg_1.4.0 xslt_1.5.1 [43] fontBitstreamVera_0.1.1 rmarkdown_2.29 tools_4.5.0 [46] htmltools_0.5.8.1