algorithmic modeling for Rhino

I am making a 3D panel by moving 1 corner of a quad in the Z and then creasing it along the diagonal.  What I am trying to figure out is the relationship between the height and the crease angle between the two triangle faces.  

I want to do this so that I can limit the crease angles to something regular (90, 105, 120, etc.)  

I can calculate all edge lengths and using right triangles but cant seem to figure out the crease angle.  Any insight would be appreciated.


Views: 641

Replies to This Discussion

Yep makes total sense.  I came to a similar conclusion and decided to "cheat" by running the panel through kangaroo after they are made to snap the crease angle to the nearest 10 degree increment.  

Wasn't really a code question. More of a generic trig/theory question.

This is a coding forum.  Solutions are typically done in code.

Is this how to measure the angle?  The two surfaces are disabled in the purple group because they are irrelevant.  Not sure I should post the code though, since you didn't bother...


Thanks Joseph.  That is indeed a way to find the crease angle.  I appreciate your advice but as I pointed out I wasn't really looking for a specific code in my original question,  just more of a general strategy.  I already have a code that creates the panel and measures the angle afterward.  I was looking for a way to create the panel with a target crease angle.  Therefore it would be necessary to know the relationship of the crease angle to height from a bottom up approach rather than a top down approach.  I appreciate your help but I settled on solution to optimize the geometry after its created using kangaroo.  

Here is a way to choose a different vertex:


yeah that's the correct angle, but I believe he's trying to specify the crease angle instead of the height of the vertex.

Just in case anybody was curious about my solution. Here is the relevant snippet from mycode.  Tried to remove as many dependencies as possible but definitely need weaverbird and K2.  Might be a tree sloth component in there somewhere... 


A couple of years ago...

I wrote a general purpose "Domain Search Solver" using Anemone - nested loops that split the original domain by 'Dom Divs' (5..20 suggested) and iterate until a specified precision is reached. Works well!

The version I use today might have evolved a little since then, I don't remember.  But I wired it to the code I posted above and bingo!  Works like a champ on your question.  Set the desired angle and it varies the Z-height until a solution is found (if possible) - quickly; ~5 seconds:

but as I pointed out I wasn't really looking for a specific code in my original question,  just more of a general strategy

This is a specific code solution so I won't bother posting it.






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service