# Euclidean approach to mesh offsetting

Peter, I am familiar with data trees (although from what I see, to a much - much lower degree than you) and I go from brickwall to brickwall, nevertheless its the mathematical clarity in these forms that I’m looking for. Once you have that you usually can find a way to translate it to machine language.

Anyway I’m continuing with my baby steps! I’ve managed to create this basic 9 cell fixed thickness shell and it has given me some insight into how the knots behave. Now I’m searching how the transformations ‘flow’ from one cell to another. (that’s the biggest challenge from what I see)

who knows what I’ll come up with… maybe nothing. But at least when you catch too many boots you learn not to go fishing at that spot again!

BTW: Only the Lord (the Merciless) knows the ideal spots for fishing where waters are dark, agitated and no fish is around (killing for fun other Eco-system members is NOT allowed by The Lord (but you are free to kill humans, or encouraged to do it]).

I’ll post later the dihedrals thingy (3 dimensions Tree: first = index of mesh in mesh List, 2nd = index of face, 3rd = index of adjacent edge (or face: - that’s a user option). In order to use it you MUST be 110% capable to manage anything in trees with many dimensions.

In the mean time:

1. A mesh normal is the aggregate of the unitized edge directions (where edge the adjacent to any given vertex - that’s a classic VE/VV connectivity).
2. A mesh faceNormal on the other hand is … er … the obvious. The related connectivity tree is EXACTLY like a FF Tree, so we use that for Normal connectivity.
3. For a given faceNormal we loop into the adjacent faces Normals (FF connectivity) AND we find the common edge as well (that requires List intersections). That &^&^ edge is critical (see below).
4. Imagine a plane defined at edge.PointAt(0.5) with direction edge.Direction. That defines a zDir. But where the plane is heading? That’s the 1M question.
5. We compute the cross product (face Normal, adjacent Face Normal). If the dot product of that with zDir is < 0 we flip the plane. Google time (I suspect): cross/dot products and other freaky similar stuff.
6. We compute the dihedral: double angle = Vector3d.VectorAngle(faceNormal, adjFaceNormal, plane); Calculation complies to the right hand rule and thus …I do hope that you get the gist of step 5.

Now if you do some sketches having all these in mind you can easily understand what’s happening. For instance: what’s the difference between convex/concave face/face topologies?

Of course you can thicken any mesh (tri mesh, avoid quads) and get pieces with equal thickness … but how exactly to do it? what means projecting a point in a plane? how to manage clash situations? (remember: ANY mesh). how to cut the pieces with variable dihedrals? (making auto layouts, that is for orthodox CNC) and most importantly what about the espresso/cigars required?

Answers: The Lord, District 9, North Pole.

In the mean time: the lesson of the day: what is planarity? is a chimera? is it just (note: I’m speaking for AEC stuff) another idea/trend like an I-Pad with 66 cores? can you do it in real-life AND not spend a gazillion of dollars without any reason? what I.M.Pei had to say about all this contemporary blob fever? what about form follows function?

Get this ancient Kangaroo2 thingy (newer K2 builds may require replacing the solver) and answer all your questions at once. Of course I have it in a far more modernized version (only one C# , less is more) but … well… ancient things are always better than modern things.

YAZ_kinda_demo_V1.3dm (172.0 KB)
YAZ_kinda_demo_V2A.gh (145.6 KB)

Very impressive stuff! I’m glad I made this post! I spent most of my night yesterday educating myself about vertex/edge/plane offseting! nevertheless most of the papers I found are focused on approximation and/or fixed width beams.
So far I haven’t found a study with the attributes I’m looking for (not how you can make any surface this way but rather WHAT surfaces CAN be produced this way)
I am aware that many of my preconceptions are wrong. but that’s the process of learning, killing your misconceptions one by one…

Also Peter, you keep talking to me about approximating planarity… I am asking what you can do IF you take planarity as a given. Which are the attributes of the surfaces that can be constructed this way… (Not by approximation but in the strict, Platonic sense) I’m still in the process of reading all these books I’ve found. Once I understand I will post whatever I find to save any other newbies like me from their misconceptions!

Get this (no cross/dot stuff implemented on purpose) and think: what could be the algorithm in order to find the right dihedral? (play with the flip stuff as well). Meaning: how we could declare a face/face relation as convex/concave? (in relation to what?).

Mesh_dihedrals_DemoEntryLevel_V1.gh (119.3 KB)

BTW: Planarity (quads and higher) is a given only in Planet Utopia (and/or Zorg). Don’t been trapped in that rabbit hole (many entries, no exit). In the V2 of the attached def we’ll see some stuff on that matter.

BTW: You may wonder why I use C# in most of my replies whilst you don’t know that thing. Well … the reason is that the 99% remaining for doing some real-life stuff (after the diherdal part [1%]) i.e. how to interactively modify “topics” (vertices) on your blob (any blob) in order to avoid clash situations (and how to keep track on everything that you have done)…

BTW: There’s no truth out there. Everything is fabricated either by you (bad) or others (worst).

Task for the w/e (forget the offset mesh: too easy, get the long way home):

Alias T for Thickness.

1. Create a very simple open mesh.
2. Create the VF connectivity tree (Vertex to Face).
3. Compute the normals (aggregate … blah, blah).
4. Get the vertices
5a. Unitize each normal and multiply by T. Move vertices (4) - vertex + vector - and make the offset face. That does the thicken def that I’ve posted already here. The white line in the sketch.
5b. Let’s talk about the green line: for each vertex get the adjacent faces (via VF as in 2) and find the intersection of a line (from vertex and direction the normal) VS an offset mesh face plane (T) . Compare the ccx points. Are equal ? (within tolerance). If they are why we are talking about face/face dihedrals? Because they describe the taper angle, that is. If is too small … it’s realistically impossible to do any piece in real-life .

See this simple sketch (some abstract section) for distinguishing 5a from 5b

In the mean time found 10 more minutes for some changes on the ticken tri mesh List thingy

TriMesh_thickenWithHoles_V2.3dm (245.1 KB)
TriMesh_thickenWithHoles_V2.gh (136.8 KB)

1. result: controls if one mesh or pieces are made
2. tMode: controls if equal thickness things are made (base to top: planar, distance T)…
3. Planarity Check: gets the diagonals per face and per tapered sides (if result = pieces) and performs the classic planarity check (min diag distance) according the planarTol value (remember: we are not in MIT, we are sharks after dollars). For instance see this check on the demo data:

Now … if for that random (not relaxed via MeshMachine) blob thing 80% of the pieces have planar tapered sides (within 2 cm tolerance = absolutely nothing in big things [no glass] and real-life) … should you spend your time chasing chimeras AND the truth out there ? Not in a billion years (otherwise apply at MIT ASAP).

Even If I geared K2 for some simulation/“relaxation” on that matter (not that difficult, in fact I have stuff that does that but is rather slow) it could be 100% Academic since the main issue here is that you can’t do the tapered task by hand … meaning that if CNC/3D printing is on duty … why bother talking in the first place???

Moral: Life’s short, abandon ship, do some WOW stuff (and get the dollars).

In the mean time let’s play with some strictly internal stuff (not for public eyes, that is).

See this? Reds are not planar tapered sides (base/top faces are not on display for clarity):

See that? Greens are planar tapered sides. How this is made? Who knows? (and who cares?). He he:

And some other stuff as well (production layouts and some detail [plywood frames]):

And doing a production layout without the planar fix part (non planar stuff is rejected).

man, you still don’t get me! can you pls answer me the following question?
(which is the subset that meets the demands and what are the prequisites)

All of your answers are like “squaring the circle” your approach is that you can approximate it with astronomically close proximity. My question is ‘what is the ABSOLUTE’ solution.
(and so far, I am convinced that there is an absolute solution)

But if this:

can being “reformed” (with a physics engine you silly, he he) to that:

What makes you believe that I can’t get you? (The Lord knows what you want before even you think of it). But … the question is: since you are a fellow Greek (and the Lord helps Greeks) what I’m trying to tell you?

Option A: It’s just a mind trap > avoid.
Option B: Addressable … but not with things/means that you can handle > avoid.

Note: We are engineers > there’s no absolute (only the Absolute Vodka qualifies). Even thinking or searching for that > it’s a crime > bad boy > prison for life.

since we bring Greekness into the matter (although math has no country, it is absolute and eternal) I will answer you with the last passage of Ithaka (the poem):

“And if you find her poor, Ithaka hasn’t fooled you.
now that you became wise with so much experience
you should have already understood what Ithakas mean”

my delusional (?) trip has already brought me a lot of insight into how planes behave. What if I don’t find the answer I’m looking for? what you call a rabit hole I call the trip to ithaka!

Still I am convinced my intuition is right: with approximation you can only have an solution to any given problem at hand but you cannot have imergence…

See that freaky fella over there ?: he spend all of his time trying to solve the following puzzle: given a gazillion of atoms (of thin air) in a room > make clusters with co-planar atoms (where 0 is 0.00000000000000000000000000000001)…

See that other fella over here ? He writes some lines (well … maybe some “more”) then gets a Coffee Lake CPU (cores aplenty) on some X299 mobo and squeezes the start button.

Moral: Ithaka can fool you some times (in fact most of times)

I doubt it will be me, but at some point some guy is going to give you a simple formula and your code lines will be reduced to the equivalent of just a cupful of coffee (ideally, frape!)

That’s impossible. Why?

Well … is like claiming that you can outline (theoretically) the ideal fuel injection map (+ the paraphernalia: correction tables et all) for a given thermal engine

Since non rational conditions vary constantly (engine wear, circuit glitches, sensor health, fuel quality, air quality etc etc) the only thing that you can do is to write down the code that adapts to all that (and pray).

Exactly what’s happening in the rectangle with the hole thingy as above: Instead of trying to create rules (fruitless and restrictive = the art of pointless since these days ANY form should being solvable [triangles, mind, not quads]) you dismiss ANY rule, set sky as the limit and approach the problem the physics engine way (should I call it: a self learning process?): tiny changes to this node (in relation with the others etc) applied a gazillion times yield a big thing that can been made by not flexible THICK and HEAVY plywood “stripes” ( that make self supporting triangular “frames”) … and that is 0 planarity for me (and should be OK for you as well).

This fundamental difference is all what computers serve (but I hate computers, he he). Anyway … before AI arrives to the masses (the end of days).

Moral: free your mind, forget determinism .

And this … well … it’s a classic thingy on that matter by Daniel using K1 (a bit old but still …classy). Daniel is to Kangaroo what David is to GH. Torsion free means “planar” (green), mind. Spot that changes in the geometry happen (that’s obvious anyway) but who cares? and who should? (nobody who understands a thing or two about the true essence of computers [and physics engines])

Insofar I hesitated to post it because you are searching things the entirely wrong way (by actually forgetting what computers are) … but … well … you know Greeks … never give up etc etc, he he.

torsionfree.gh (25.3 KB)

1 Like

emergence…

evanescence most likely (but who’s counting?).

BTW: a cat who become a Buddhist monk spots a freezing baby sparrow . ASAP puts the bird deep into some horse #%@##. Baby is happy: warm/safe et all. The next day a dog who become a Buddhist monk spots the bird. Thinks: WTF > let’s give the poor bird some clean air. But a hawk (who failed to become a Buddhist monk) spots the bird and does what hawks do.

Moral: obvious

Added the freaky part: Is it truth out there ?

torsionfree_withPlanarityCalcs_V1.gh (131.1 KB)
:

btw, we disagree strongly on the approach but I bow to your knowledge and the gold you posting!

You are trapped in an ominous pendulum: Only the Lord (the Merciless King of SardineLand) can save you.

Salvation:Sign the paper (Imagine what the rest of my defs (~10+K) do). Sell soul > get slavery > be a happy bunny

just_sign.pdf (35.4 KB)