Mapping sticks onto a surface + force analysis + overlapping volume

Hi everyone. I am currently working on a design that has to do with surface mapping. Below is a sketch illustrating my idea.

The end design will look like the blue part of the above photo but in a 3-dimensional sense. So the idea is to map wooden sticks on the normals of a sphere surface, and only take a square part of it (top down) to create a hairy stick surface with circular curves on both ends of the blue part.

Currently, i am still playtesting with the size of the sphere (e.g. CB and AB), also experimenting how to join the wooden sticks together in real life (probably gonna use epoxy resin). As a result, I would like to get a parametric model of the design so I can adjust easily later on. Currently, I have the below questions and I hope I may find the answers here and put them together later.

  1. Firstly is to do with the square surface of the sphere. Currently, when testing out the mapping in grasshopper, I first have to create a fixed shape in rhino. The downside of this is, of course, the fact that I cant adjust the CB and AB easily, not to mention the inaccuracy in modelling. Is there a way I might get the square shape (from top) surface of a sphere, and adjust the radius of the sphere and CB easily?

  2. For some reasons I just couldn’t do the mapping using my grasshopper. Probably not because of the inaccuracy of the rhino model. I have tried using divide surface, iso trim and evaluate but none of them worked. What would be the best way to map the normals (with adjustable domains UV) on such a surface?

  1. In fact, the design i am working on is a rocking chair. the person will be sitting on the upper blue surface of the above photo. But since I probably wont be sitting on the centre of normal (nor my butt is a point), is there a way to do force/ pressure analysis using plugin like karamba? E.g. how the force will be concentrated as the person swings to the front or back so as to determine the proper length of the wooden stick. (I know this sounds extra but i really wanna get a glimpse of how karamba would work, so as a practice of using the extracted data).

  1. Since the sitting surface should form a smooth surface, it is expected to have a lot of overlapping volume between the sticks. Is there a way for grasshopper to find identify them? kinda like bad edge detecting in rhino?

Thanks so much and I hope to hear from you soon.

1 Like

No def attached (=> BAD boy, always attach something, even a stupid thingy)

Anyway no harm done: is this what you are after? (at least with regard the mapping).

Using Lunchbox for the base rectangles (not actually required, mind) (17.7 KB)

1 Like

i certainly did not expect this QAQ but thanks so much!!!

Its very close to what i was imagining, except the sticks should be uniform in terms of width throughout the entire stick. Currently, the size of the sticks increases as it radiates outwards. It is not entirely mapping a block of sticks on a sphere surface, more like mapping sticks to the normals of a sphere.

a very inaccurate drawing but both tips of the sticks have the same size, and they all have the same length

and these sticks will be mapped to a surface like below (i also notice that the current file converges a bit approaching one side?)

But still thanks so much i am definitely glad to know about this technique about mapping a block of solid to a surface!!!

Get this version if stick width … er … is paramount for the mankind. We map the rectangles (and the centers at the same time) and then we extrude the curves along a vector (center - sphere center) and the random (or not) amplitude.

BTW: Cap is slow (the mapping of the resulting Brep in fact). Avoid until the last phase. Play with this seed slider and observe the difference in response.

BTW: You can do a boolen diff (sphere VS the capped sticks) and get a sphere with pockets waiting for the sticks (or any Brep other than a Sphere). That way the assemply could be peanuts (provided that you 3d print the Sphere/Brep: expensive IF the size is big).

BTW: I have a C# that does freaky things on that matter (made for some fellow user a million years ago) but I guess you are not in the programming bandwagon (some other time). (21.5 KB)

1 Like

I actually happen to do C++ and java haha
Okey I am gonna digest all these tomorrow gonna sleep for now

but before i go, i wanna ask is the current mapping completely dependent on the sphere surface? as in does it work like control point mapped to control point and thus whenever the sphere scales up, the sticks do so too? wondering if it is possible to make them independent of each other so lets say if i increase the size of the sphere, the stick would become less “sparse” like in the photo without also scaling up the size.

Thanks so much for all the tutorial QAQ

Here’s the thing of things (beats even the sliced bread as the biggest thing ever known to man): (22.5 KB)
Map_boxes_to_Sphere_V1B.3dm (330.0 KB)

In plain English: The uncertain chair (for fellas who suffer from some sort of … er… something),

For reasons of cyber security the file name is wrong (there’s no Sphere anymore - life sucks) but I do hope that you understand the big issue here (if we sell that thing > zillions in our pockets). The red thing is hold in place via anti-gravity (another world’s first).

1 Like

playtesting with 4mm wood sticks hehe

the thingy at the bottom will be removed eventually
still figuring out a way to pull the sticks tgt, probably gonna use epoxy resin with the real one

If this is actually some chair forget wood (use carbon tubes: WOW and cheap these days). Forget epoxy as well (use a system/base/something with “pockets” [torsional/bending forces et al]).

Since you walk the walk in coding (go from C++ to C# ASAP) get this as well: (136.4 KB)
Map_boxes_to_Sphere_V1C.3dm (1.0 MB)

Rhino file contains the first client for the uncertain chair (many would follow): we can share the dollars as follows: 90% (me), 10% (you).

Added a few lines of C# about how to make the red target Brep the stick holder (as I said: 3d printing is required for that). (129.4 KB)

1 Like

And this is what you actually need (map only the grid, then define proper planes and finally do the extrusions with exactly the W/H sizes required). (140.5 KB)

More and more C# stuff is replacing components in order to encourage you to start walking the proper walk.

i just woke up and saw these QAQ
now rushing out for studio review i promise i will get back in a bit!!!

Finally got time to read thru all the files once and ended up with the following questions. But before that thank you so much for all your patient and kind guidance I really really appreciate that QAQ:

1. Currently, for all the arrays/ lists, we first specify the value of x and y (width of the rectangle) and then the number of in x and y (column and rows). But when they got surface-morph all it remains is just the number of column and rows. How can I make it to keep the width of the rectangle (in the real-life case the size of the wood stick)? E.g. I want an array of 4 times 4 (16 in total) of 4cm x 4cm x 40 cm sticks. Currently, the size of the rectangle is dependent on the size of the surface it is pointing to.

2. I see now the sticks in the objective c coding grasshopper file now reacts the way it radiates out according to the size of the degree of curvature of the surface (which is what I want as shown in the pic above). However, since I will be mapping using a sphere with its size being adjustable (basically I wish to adjust the degree of curvature in a given portion using a sphere) instead of a specified surface). Is it possible to program it like this with the sticks all start generating at the bottom centre of the sphere and slowly radiate out?

Case 1 Input:
Size of the rectangle (x and y): 4 x 4
Length of extrusion: 20
X count: 1
Y count: 1
Size of sphere: 20

Case 1 Output:

Case 2 Input:
Size of the rectangle (x and y): 2 x 2
Length of extrusion: 20
X count: 2
Y count: 2
Size of sphere: 20

Case 2 Output:

Case 3 Input:
Size of the rectangle (x and y): 2 x 2
Length of extrusion: 20
X count: 2
Y count: 2
Size of sphere: 40

Case 3 output:

Case 2 vs Case 3:

The files i am now playing with:
C# (17.5 KB) (16.4 KB)
C# Version.3dm (135.0 KB)

Basically i need to hook the sphere part of the original grasshopper file with the new C# files up lmao
Once again thank you so much and it really helped me a lot in understanding mapping in grasshopper (for the C# part ummm i guess i need some more time to digest)

Well … what about V1F? Only the opening F1 race [goooo Lewis take no prisoners - have you seen his barely believable Q3 time?] delayed the thing.

  1. First what is this thing? Is it an object with some usage (like a freaky chair) or an Academic idea of some sort? If the former FIRST you need a robust and realistic way to hold the sticks in place (no glue) … meaning …er … an insersion depth to some kind of base AND some real-life offset between them.

  2. Since V1E is the way to go and since you can control the vacancy (so to speak) in the grid your only issue is a way to correspond real offset distances between the sticks. But … before making a long story longer … you don’t need Morph for that only some elementary trigonometry. (provided that a Sphere is around: but this yields pathetic results aesthetically speaking).

Moral: where’s the V1F? (after the race AND if Lewis delivers, he he).

  2. it is actually a chair that i am going to build as for how i am gonna connect them tgt i am thinking about either 1. a living hinge or 2. epoxy resin (which my tutor recommends cuz he wants me to try it out)

sth like the hinge part will be as an addon of the 4*4 sticks (lets say)
As for whether it is sth i wanna build to sit or academic research i think its both combined, the only requirement is that I can only use wood sticks (and glue nails or epoxy etc)



Well … I’m helping someone who doesn’t know who’s Lewis? That’s more or less beyond imagination (this means that you don’t know who’s Valentino as well?).

My friend is a F1 fan and he is laughing so hard next to me
C# (20.1 KB)
C# Version.3dm (258.2 KB)

hmmmm currently it converges towards the centre instead of radiating out the centre (I see why there are 3 domains tho)

Take a break (and study F1/MotoGP matters ASAP):

  1. Use some grid points.
  2. Use a sphere that engulfs the grid.
  3. Find ccx Points from each Ray (from: sphere center, direction: grid point - sphere center).
  4. Do some trigonometry to control the grid on the sphere (in relation to grid x/y distances as in 1).
  5. Use some stuff as found in V1E for the planes/sticks (which stuff? it’s the price to pay for NOT knowing the greatest racer of our generation [and maybe ever]).
1 Like

Here comes the pain: C# only > no components > God help us > the price to pay for your criminal ingorance … blah, blah. (123.6 KB)

But I’m a good person (if you buy this you can buy anything): Instead of using spherical coordinates and other freaky things I used Transformations and RayShoot ccx events.

Moral: life sucks.

1 Like

In my dream last night u sent me emails scolding me lmao
Last night before i go to sleep i lofted a surface (sphere that engulfs the grid) and it seems to be working ok, like okay but not perfect
Lemme read ur file first thanks!!!

It’s all your fault you know > Mercedes had a software “glitch” > Lewis lost 5 SECONDS (an eternity in F1) > Adios Amigos > Vettel won.

Result: V1F is on ice until the next race (life sucks).