Quick tutorial - How to make an helix or spiral curve  1-20  21-39

Next
 From:  Schbeurd
277.1 
There's been some discussions on how to create spiral/helix in this forum.
It thought it would be a good idea to write a quick tutorial on how to do this using the new array function.

The tutorial (PDF format) is intended for beginners and was some kind of "training" for me so i'd like to know what you think of it. Is it useful ? Would you like to see more ? As english is not my native language, do not hesitate to report faults. Feedback, comments, suggestions for improvement are welcome...

Also enclosed is a .3DM example file

Hope you'll enjoy it...

Schbeurd

  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:  Michael Gibson
277.2 In reply to 277.1 
Very clear and very nicely done, Bernard! Great use of graphic screenshots to make it easy to follow.

Your English is extremely good! Your sentence structure is especially good because you keep your sentences not too long and keep to the point - this greatly increases clarity. The only phrasing I found just a little bit odd was "these are just indicative values" - maybe "sample values" ? Also "Desactivate" -> "Deactivate". Anyway, even these are not really an issue since they did not at all cloud your communication.


One quick note on the pick-in-3D-view versus pick-in-ortho-view issue (where picking in the ortho view projects it to make it planar). This is controlled by the "Project to plane in ortho views" setting, which you can set in Object snap options - right now it is under the Object snap button, go to the little pop-up menu and chose "Option snap options" at the top of that menu. (Sooner or later I'm going to move all these into a single options dialog).

I'm still not really sure if the default for this should be on or off. Having it on makes it easy to draw planar shapes in the top/front/right views, but harder to snap on to 3D points...

- Michael
  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:  tyglik
277.3 In reply to 277.1 
Hi,

I think you spent your time "beneficially" !
It would be even easier to create a helix or spiral if Michael improved the ThroughsPoints command so
the curve would have been built from a selected points (the analogy of Rhino's _CurveThroughPt command).

I use another way how to create (pseudo) helix or spiral, although it sometimes fails due to "inappropriate" position of lines for lofting.




Petr
  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:  jbshorty
277.4 
Hi. Nice explanation Schbeurd!... One thing to note that a "curve through points" done in this way will have slightly different curvature at the ends. this would be more noticable if using less points than your example. So it can be helpful to make the spiral one point longer than needed on each end, and then trim away the excess...

jonah
  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:  Schbeurd
277.5 
Hi Folks,

Thanks for your comments and additional info ! I will make slight changes to the document and upload a new version when I find some time... ;-)

@ Petr : Interesting technique ! An advantage is that you can easily extract more than one curve at a time by using a polyline (for example) as starting curve. Certainly something I will use in the future...

Schbeurd
  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:  Frenchy Pilou (PILOU)
277.6 

@Schbeurd
Cool tut but seems you love difficulties :)
Why not make that : same start but with only 3 points with the Circular array function
Take the Free Line "through point" (through the 3 previous points of course :)
And now take this new line and apply again the circular function
Et voila :)

  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:  Michael Gibson
277.7 In reply to 277.6 
Pilou wrote:
> And now take this new line and apply again the circular function

The only problem with this method would be that the tangents would not likely align with each other perfectly from piece to piece, so the curve would not be completely smooth at those segment joins.

That's one nice part about building the entire thing in one curve command - that way you can be certain that it it is definitely all smooth.

- Michael
  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:  Frenchy Pilou (PILOU)
277.8 In reply to 277.7 
Damned, I have not try, so I will make an essay for see this little inconvenient :)
  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:  Schbeurd
277.9 In reply to 277.8 
Frenchy,

Could you post screenshots and test files explaining your method ? I don't really understand how you would do this...

Cya
  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:  jbshorty
277.10 In reply to 277.9 
Hi. Like i'd mentioned earlier, and then Michael also reconfirmed a "curve through points" will have different tangency at it's ends than it has along it's inner points. So using the 3-point method will not work because the resulting curve is really not an arc. It would be a parabola...

jonah
  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:  Frenchy Pilou (PILOU)
277.11 

Well now I must make something :)
@Schbeurd
But if my method is false your is also false !
Have you made some close up along the curve?

  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:  Schbeurd
277.12 In reply to 277.11 
>> But if my method is false your is also false !
Have you made some close up along the curve?

Apparently yes, for the ends of the curve... See message 277.4 by Jonah.
Probably less noticeable as I use a lot of points. And there's a workaround that Jonah also explains...

It may be important for the final object depending if you're look for engineer precision or "visually satisfying" appearance ;-)
  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:  jbshorty
277.13 
For a G1 fit between each spiral segment, you have to add 2 points to the ends of each spiral. So it goes like this:

1. Make array of points as Schbeurd explains (someday you will have to tell me the correct way of pronouncing this nickname)... for this example, let's say there are 8 points in the array :

2. Select points 2 & 3, then copy from position of point 1 to poistion of point 8.

3. Select points 6 & 7, then copy from position of point 8 to poistion of point 1.

4. Now draw your curve through all the points.

5. Select curve, and trim excess curve length using original points # 1 and 8.

If you make multiple copies of this curve, and align them end to end to end, they will have G1 continuity... I analyzed in Rhino, and it doesn't matter if you make 2, 3, or 4 extra points the result will still be G1. But if only using one extra point at each end will result in G0 continuity.

shorty...
  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:  Frenchy Pilou (PILOU)
277.14 

My method a little arranged :D
Same begin as Schbeurd :)
Array circular function: One Point, A Center, 1 as step vertical, 90 ° to fill, 3 repetitions,
And now Ladys and Gentleman the trick : take the Arc by 3 points :)
Draw it by the 3 previous point
Now the step became 2 (2*1) (because the 3 points Start , Middle, End)
Select the Arc
Just apply the formula *<:O)
Nb of repetition N ---> (N-1) * 90° angle to fill
Example : 20 Repetitions --> 19 * 90° = 1710° to fill, always step 2 (2*1)

 

Example following of that: seems perfect :)
@Shchbeurd : I am not sure that your method should be good without hand

EDITED: 8 Jan 2007 by PILOU

Attachments:

  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:  Michael Gibson
277.15 In reply to 277.14 
It's a nice close approximation.

But note that each 3 point arc that you draw is a planar curve, so the resulting shape has each 90 degree chunk in a separate plane - this is slightly different than a true helix which has a more gradual progression through 3D space instead of in planar pieces.

It looks very nice though, and the end tangents are very close between pieces - looks like only about 0.1 degrees deviation.

- Michael
  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:  Frenchy Pilou (PILOU)
277.16 In reply to 277.15 

Damned I was too optimistic :D
So an automatic system is always to find :)

I must make 80 Clickty-clac Zoom of the Mouse Wheel before to see a divergence between 2 arc segments !
Is it compatible with your estimation of 0.1 degre deviation?

EDITED: 8 Jan 2007 by PILOU

  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:  jbshorty
277.17 In reply to 277.14 
Hi. I tried the 3-point arc method before i made my last post. It doesn't work as a true spiral. Look closely at the arcs. When you rotate around the view, it looks "wobbly". The curves are all G1, but they don't have correct incline in the Z-axis. Follow this test, and see the result:

1) make the point spiral array

2) draw a 3-point arc. everything seems to be OK.

3) now draw a 3-point circle through the same points as the arc

You will see the path of 3-point arc will follow the exact path of the 3-point circle. And the path does not follow the spiral point array... now draw the curve through points, using all points in the spiral array. Zoom in and compare the 3-point arc to the drawn curve, you will see the "wobble"...

jonah
  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:  Michael Gibson
277.18 In reply to 277.16 
> I must make 80 Clickty-clac Zoom of the Mouse Wheel before to see a
> divergence between 2 arc segments !
> Is it compatible with your estimation of 0.1 degre deviation?

Well, when you're zooming in on the endpoint you're looking at positional deviation - that is going to be very tight, by the time you zoom in 80 steps you're seeing a very small deviation that is much, much smaller than the tolerance, so that part is very accurate.

I was talking about tangent deviation, though - this is the differences between the end tangent directions at each segment. This is a little easier to see - you can draw a tangent line off of each segment (hide the neighboring one to make sure your snap is on one particular segment), and then you can zoom in to see if there is a gap between these tangent lines. The gap is small (0.1 degrees in this case), but you should see it with only a little bit of zooming, especially if you draw the lines a bit longer.

- Michael
  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:  Frenchy Pilou (PILOU)
277.19 
Well, well...
Can you put an "real helix" beside my "false helix"
of course with same dimension :)
Attachments:

  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:  Michael Gibson
277.20 In reply to 277.19 
> Can you put an "real helix" beside my "false helix"

I've attached here a helix created from Rhino - I think it is approximated to a true helix within 0.01 units. (A NURBS curve cannot actually have a 100% exact shape of a helix unlike a circle, it has to be approximated to some tolerance).

Your curve is very, very close - your curve has a maximum deviation of 0.04 units from this one.

- Michael
Attachments:

  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-20  21-39