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.
Here is one way to solve it geometrically. You give it a specific fold angle and will output the geometry you are after. It is a little messy, but it should do the trick.
And since I'm (maybe presumptuously) assuming you are going to be making a grid of these things, here is a way to do that.
Interesting solution. I should have specified my grid is skewed though so it doesn't seem to work. I've internalized example geometry. I'm assuming this is because each face is not exactly half of the crease angle when bisected with a perpendicular frame. I'm wondering if it would be easier to treat it as two tetrahedra to be able to specify height.
Posting code and/or geometry ALWAYS goes a very long way toward clarifying a question and making it easier for others to respond without wasting time.
Internalized here but this is just Brian's script with a skewed base like my diagram. Wasn't really a code question. More of a generic trig/theory question.
Cool, so it looks like you got it working with the skewed geometry right?
Edit: ah i see it doesn't work, or at least the angle you put it isn't what you get out
Not sure how to get there from first principles...
I think the problem is that with skewed geometry, you don't have enough information to outright solve the trig. You basically have a scalene triangle with an angle and an opposite side known.
You can make it an optimization problem, where you have grasshopper try a bunch of solutions and pick the one that gives you an angle closest to what you want.
Does that make sense?
here would be my solution to that
A brute force optimization method would make sense.