Calculating area of spherical polygon with self-intersections on Gauss map

Good day,

Thank you for your time and taking an interest in this post.

I am trying to calculate the area of spherical polygon that exist on a unit sphere (gauss map). Thank you!
The problem:
the actual geometry is a loop of 4 quads (red) connected at the vertices, representing real material.
Between the red quads, there are blue quads which represent an absence of material/ negative space.
The red quads can deform relative to each other (in fashion of a 3D 4-bar linkage).

In my grasshopper definition, i have extracted the normals of both red and blue quads and mapped them to a gauss sphere. How do i calculate the enclosed area of spherical polygons, while noting there are self-intersections?

can the solution be generalized to allow change of the normal vectors (as the four-bar linkage deforms)?

Q&A gauss image spherical polyhedra area.gh (51.7 KB)

If you are familiar with code, for Spherical Polygon area see this - and modify accodringly the MATLAB>JAVA code posted:

BTW: lot’s of related literature around

Thanks Peter,

I’ll have to take a closer look at the documentation and probably rely on GHpython remote to call in the spherical geometry library.

Am i on the right track if

  1. I create a list of the spherical polygonal vertices that exists on the unit sphere into ‘points’.
  2. I then call a class of polygon1 = SphericalPolygon(points).
  3. i calculate area using area(SphericalPolygon).
  4. i need not worry about the intersections because the library takes care of it? does it apply signs to the areas? or is this the same as a convexhull? or is this something else?
    (edit: intersections occur for the spherical polygon on the Gauss map, not the quads)

thanks for your patience with the novice questions :slight_smile:

Best Regards,
Samson

Well (see Java code as above)… given the lat/long pair (per sphPt per polyline) and going from earth R to your R … you can get the area without the “need” of any class. I mean avoid killing the mosquito with the bazooka etc etc.

But wait: since you have the “facets” on hand (tri or quads) meaning an enumerable vertitces collection (List/Array) … what’s the intersection worry about? You just need to map a given collection (vertices) into spherical coords … like (C#):



… and then get the area (per collection).

That said, I could easily provide a complete demo on that matter … but my game is C# (and I don’t like Python - at all).

Best

Good day Peter,

Thanks for the xyz to lat/lon converter.

As for the self intersections, they occur on the spherical polygon (constructed from the 8normals of 4red+4blue faces) and not from the originating quad faces. As the quad faces reconfigure relative to each other, the 8 normals change in direction and cause the 8-sided spherical polygon to intersect in different places.

I intend to calculate the interior area of the spherical polygon(s) on the Gauss map [if that is the right way to determine a metric of curvature for the ring of quads].

Best Regards,
Samson

Good day Samson,

Well … having real-life in mind I’m curious for the “shrinking” linkage i.e. other than the one that connects the quads vertex to vertex (a classic spherical join I guess - but then there’s the usual topo limitations around). And obviously the stability of the combo requires some “cross” linkages more as well.

If I was you I would deal directly with the topology of the mechanism (so to speak) at rest vs a target one … instead of “indirectly” attempting to locate/manage clash events - and the likes - via the Gauss trans.

BTW: Are you trying to design a Martian robot? (if so change CAD platform and contact Elon ASAP).

Best

Hello Peter,

haha unfortunately the application is more mundane than a origami-based walker.
i’m just trying a different definition of ‘curvature’ contained per unit cell of this quad-based kirigami tessellation. I agree that it does behave as a spherical linkage as you have said. (Programming shape using kirigami tessellations | Nature Materials).

i take inspiration from this angular defect gadget, which takes the area of gauss image to determine a sense of discrete curvature. Hence, i’m quite interested on the idea of taking the area of the spherical polygon upon the gauss image. That being said, any tips? Thanks for engaging me on this post :slight_smile:


[Source: Calladine - Theory of shell structures, pg 141]

Best Regards,
Samson

Hmm … I’m rather after real-life stuff (AEC oriented) thus these kiri_something things are a bit out of my radar. For me designing realistic linkages (*) is a 100 times more interesting/challenging topic than the abstract folding concept itself.

But … wait … hope dies last … you can still contact Elon and get some millions (he is generous with anything helping his Mars plans). But in order to get the dollars you’ll need to change CAD platform ASAP ((*) NX/CATIA and the likes).

Well … the best tip is to try to get the gist of K2 (the most important GH “add-on” by a huge margin). See attached for an abstract rather basic folding demo … then modify it for your needs/goals. Then get rid of the pasta and contact Elon.

Origami_WithSomePasta_K2.gh (27.0 KB)

Moral: Mars is ours.

Hello all,

since i’m still interested to get the area of spherical polygon,
i’ve tried to tap on the spherical_polygon library via gh-python-remote.

rhino remote python for sphericalgeometry.gh (16.7 KB)
[do remember to point the gh-python-remote to your conda env]

However, i cant get the area to output due to a ‘IronPython.NewTypes.System.Object_1$1’ (see sArea)

still looking for help. thanks

Best regards,
Samson