Flatten curved surface?
 1-5  6-25  26-30

Previous
Next
 From:  Dan (LICHENROCK)
3042.26 
Hi folks,
This is what I have so far with regard to “flattening” a cylindrical surface. The multitude of illustrations and the detailed step-by-step are for the sake of any newcomers to MoI. I create a form according to the method described above. In this example I wanted to use a form with a dramatic curve which changes direction:
I move to the side all surfaces except the one containing the original generating curve (the one I extruded in order to create the surface in the above description). :

I draw a line of any length along the Y axis. Then, using the Curve Length script from <http://kyticka.webzdarma.cz/3d/moi/#CurveLength>, (Thank you Burrman and whoever wrote this awesome script!) I pick up the length of the original curve. Selecting the straight line just drawn on the Y axis, I edit the length in the upper right of the UI,

and position it with one endpoint on the origin (no reason for this move, just for the sake of it):

I then draw a point on the endpoint of the original curve and another on the corresponding endpoint of the straight line of the same length.
Next I select the point on the endpoint of the curve and array it along the curve. For this example I chose 15 as the item count in the Array Along Curve dialog. And I do the same with the straight line. This marks the curve and the line with 15 points of correspondence.
In Front View I draw a series of line segments, snapping one end on each point along the curve, and parallel to the X axis, snapping to the point of intersection on the edge of the surface:

I move the surface back to its position on the form and position 3D View to easily see the each line drawn along the curve and its corresponding position along the straight line.

Then one by one I select each line and move it to its corresponding position on the straight line:


Next I draw a curve using Freeform Curve / Through points, snapping in succession on the endpoints of the line segments as shown:
I select the top and bottom segment and this new curve and Mirror them along the Y axis:

And the result here:

should be a close enough approximation of the flattened surface I was going for and would be used to create a template for cutting a shape out of flat stock. As I see it, the points, intersections and endpoints are all true. The only approximation is with the curve through points. Then again, How many smooth curves can be drawn through 15 points? If I needed greater accuracy I could use 150 points of correspondence. The whole process doesn't take very long at all. As it is, once the sawdust starts flying and I’m straining to see the cutline through badly scratched safety goggles, tiny fractions of a millimeter are not going to matter.
I think I will be able to develop a similar method to “flatten” a surface derived from the surface of a cone.
By the way, Michael, earlier in this thread you described the Perp/Perp snap and the Tan/Tan snap. Incredible! I will be using these all the time. Thanks!
- Dan

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
3042.27 In reply to 3042.26 
Dan,
What I think I found was that the curve length is not equating to the height of the unfolded surface. For instance, you unfilded your curve length and made it planar, but what nis the length of the new curve created with the through points tools? This is where I was stuck. If you could "clip that original piece" out of the vase from a paper model, that curve length of the edge would be the same laid flat, wouldnt it?

If you refer to the model I posted in this thread:

http://moi3d.com/forum/index.php?webtag=MOI&msg=3042.11

You'll find a surface in there marked as Rhino. This surface is the result of rhino unfolding it. The resultant height of the unfolded surface is different than the curve length extracted. When I created my surface using the original curve length to unfold it, I ended up with an edge curve much longer than the original edge curve, which when trying to bend it back up, doesnt work.

I want to revisit this, as I went through a thread with Michael before regarding unfolding and was given the tools. I just need to figure out how to apply them in a different type model. It involves converting our numbers to Radians for the unfolding. THis number conversion will be critical to the unfolding process. However, My example I did was done with a cone and it may prove beyond me to do with a curved surface like this.

MoI has added expressions for doing the Cone Unfold now which will help with conversion, but we must know the math. View this thread to refer to the expressions using a simple cone for unfolding it quickly using MoI. The million dollar question will be if you can apply it to the Vase!

http://moi3d.com/forum/index.php?webtag=MOI&msg=2558.1
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dan (LICHENROCK)
3042.28 In reply to 3042.27 
Burrman,
I had looked at your post in which you included results from Rhino's UnrollSrf command.
(MoI's edge = 18.7470243394886 / Rhino's unrolled edge = 18.7500218509622) I guess I looked at that and decided it was close enough for me. But I don’t want to imply that I don’t appreciate people who strive for more precision.
In the model which I posted earlier, I used 15 points of correspondence: The results were:
38.1236928 for the edge of the solid and
38.1219458 for the curve derived by the Curve Through Points method.
In the next model using the same form, I simply increased the number of points of correspondence to 30:
The results were closer:
38.1236928 for the edge of the solid and
38.1235415 for the curve derived by the Curve Through Points method.
I also laid the first curve (derived from 15 points) over the second curve (derived from 30 points) and zoomed in close to examine to amount of divergence. I snapped a few lines from various points on one line to the other resulting in lengths of:
0.006009, 0.0005429, 0.0010549
I would assume that if one increased the number of points of correspondence towards infinity (a true curve) the length of the derived curve would approach the true length of the curved surface’s edge. That gets into calculus which makes my head hurt.
Those tools describing the relationship of length to radians to degrees are interesting. I will have to examine them when I get a chance. To be honest I never understood why there should be another way of measuring angles besides degrees. I dismissed radians without really trying to understand their practical use. Thanks
- Dan
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
3042.29 In reply to 3042.28 
Dan, Those results are close enough for me too. I will explore your post more later. I laid the curves length out flat as you did and my surfaces curve edge came out in the 20's. Way off.

Since yours came out so close, I will explore and digress to what you've done there.

Thanks for getting back to me.

By pointing out the difference in the Rhino edge and the original, really miniscule, I was just pointing out that it is not an exacting thing, from what I have read and tried to learn on it. Your results are great too. I was assuming since you laid your line straight as did I that your curve would be way off like mine. But NOOOoooo. Mucho gracias for the post!
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  BurrMan
3042.30 In reply to 3042.29 
Here's a script Michael put together that you can run while in any of the curve,arc or line commands that will show the length in realtime.


script: /* Show length of current curve being drawn */ try { moi.ui.commandUI.setInterval( 'var crvs = moi.geometryDatabase.getObjects().getCurves(); var len = 0.0; if ( crvs.length > 0 ) { len = crvs.item(crvs.length-1).getLength(); } if ( !window["_crvdistlabel"] ) { document.body.insertAdjacentHTML( "beforeEnd", "
" ); } _crvdistlabel.innerText = len.toFixed(4);', 250 ); } catch(e) {}


Start any of the commands, like arc or freeform or line, and pick your first point. Then hit the script and a label displaying the length will appear in the active command window. I wanted to ask for this label to be an editable field (Click and change the value) like the other EditSize boxes and such, but it just didnt seem that prominent of a function. I can get it other way's. I would be the guy who puts 10,000 tools on the front end. :O
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All

 

 
 
Show messages:  1-5  6-25  26-30