2
$\begingroup$

I'm using Mathematica 11, don't have access to new functions in Geodesate.

Edited to clarify my question

What I aim to do, it is to extract the angles and length of edges of a polyhedron (also in the case of geodesic polyhedrons, where edges are not regular).

Example:

PolyhedronData["Icosidodecahedron", "Net"]

I want to extract the angles and length of edges of the "planar" map.

enter image description here

How could I manipulate this object?

As second step, I want to extract the same properties for a geodesic polyhedron [GP]:

https://en.wikipedia.org/wiki/Geodesic_polyhedron

So for example, consider this GP:

Graphics3D[
 First[PolyhedronOperations`Geodesate[
   PolyhedronData["GreatRhombicosidodecahedron"] , 2]],
 SphericalRegion -> True, Boxed -> False, ViewAngle -> Pi/8
 ]

While a regular polyhedron has edges lentgh constant:

PolyhedronData["GreatRhombicosidodecahedron"]

enter image description here

a geodesic polyhedron obtained from regular polygons may not have regular edges - better said, it can have more than one class of regular edges, see in the pictures a class of edges common to equilateral triangles and squares, a class of isoscele triangles within the squares and another class within of isoscele within the octagon:

enter image description here

How could I use the GraphicsComplex object to extract the "Net" of it?

Example:

PolyhedronData[First[PolyhedronOperations`Geodesate[PolyhedronData[
    "GreatRhombicosidodecahedron"] , 2], "Net"]]

enter image description here

I am looking for a way to get the "Net" of a geodesic polyhedron, and to extract the length of its edges and angle between them.


$\endgroup$

1 Answer 1

3
$\begingroup$

By construction all polygons are regular. So, edge lengths are all 1:

pnet = PolyhedronData["Icosidodecahedron", "Net"];

MinMax @ Cases[Normal[pnet], p_Polygon :> (N[RegionMeasure[Line @ #]] & /@ 
     Partition[p[[1]], 2, 1, 1]), All]

{1., 1.}

Angles can be obtained using PolygonAngle:

DeleteDuplicates @ Cases[Normal[pnet], p_Polygon :> N @ PolygonAngle[p], All]

{{1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}, {1.88496, 1.88496, 1.88496, 1.88496, 1.88496}, {1.0472, 1.0472, 1.0472}}

You can do something similar working with "NetGraph" (instead of "Net"):

ng = PolyhedronData["Icosidodecahedron", "NetGraph"];

enter image description here

Get neighbors, edge lengths, and angles for each vertex:

f = {#, AdjacencyList[ng, #], ## & @@ 
    Transpose[({ArcLength[Line@N@#], VectorAngle @@ N[#]} &@
         PropertyValue[{ng, #}, VertexCoordinates]) & /@ 
      Thread[{#, AdjacencyList[ng, #]}]]} &;

vertex = 5;
f @ vertex

{5, {1, 3, 10}, {1., 1., 1.}, {0.407294, 0.00766817, 0.327627}}

$\endgroup$
1
  • $\begingroup$ hi @kglr thank you for dedicating time to the question: I updated it for clarity. Your answer is valid for regular polyhedron, but I want to calculate the length of edges also for geodesic ones. I wish I could extract the NetGraph for geodesic polyhedrons, I cannot having a PolyhedronData error. As example, in my question, I tried PolyhedronData[First[PolyhedronOperationsGeodesate[PolyhedronData[ "GreatRhombicosidodecahedron"] , 2], "Net"]] ` $\endgroup$
    – user305883
    Sep 22, 2019 at 9:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.