
[Sponsors] 
January 31, 2006, 11:24 
Normal  Helical Surface

#1 
Guest
Posts: n/a

Want to know the equations for the unit normal on a helical surface (e.g., surface of a screw teeth). Thanks.


February 3, 2006, 03:53 
Re: Normal  Helical Surface

#2 
Guest
Posts: n/a

First, take a look at eqn.(11), the last equation in this posting. It might be the only thing you need. Think of u as the cylindrical radial coordinate, and v as the polar angular coordinate, and p as the pitch of the screw.
We use capital letters to denote vectors. Assume rectangular Cartesian coordinates x, y, z. Also, assume cylindrical polar coordinates r, t, z, such that the positive x axis (y = 0, x > 0) coincides with the r axis when the angular coordinate t is zero (t = 0, r > 0). Select the z axis as the axis of screw motion of the helix or helical surface. Define a helix as the curve traced by the screw motion of a base point (a generator point). Define a helical surface as the surface traced by the screw motion of a rigid base curve segment (or generator curve). This seems likely to be what you had in mind by the term "helical surface". A different type of "helical surface" might be one in which each point on the base curve "climbs" in the z direction at the same angle to the (x,y) plane. The analysis for such a surface would be different from but similar to the analysis that follows. Let p be the pitch of the helix. This means that any point on the generator advances by a distance p in the z direction for every complete turn (2*pi radian rotation, where pi = 4*arctan(1)) around the screw axis. A positive value of p will correspond to a righthanded screw motion if (x,y,z) is a righthanded coordinate system. We represent the helical surface parametrically. The base curve segment is parametrized by a parameter u belonging to the interval [u1, u2]. The screw motion is parametrized by a parameter v belonging to an infinite interval. The base curve is specified by you in the representation: x = x0(u); y = y0(u); z = z0(u)  (1) The representation is transformed to cylindrical polar coordinates r0(u), t0(u), z0(u) (or alternatively, you may find it more convenient to directly specify the base curve in cylindrical polar coordinates, skipping eqn.(1)): r = r0(u) = sqrt(x0^2 + y0^2); r0*cos(t0) = x0(u), r0*sin(t0) = y0(u); z = z0(u)  (2) Next, the rigid base curve is subject to a screw motion to generate the helical surface. The screw motion is most conveniently described in the cylindrical polar coordinates: r = rh(u,v) = r0(u); z = zh(u,v) = z0(u) + p*v/(2*pi); t = th(u,v) = t0(u) + v  (3) In order to avoid ambiguity about the quadrant of v, we use cos(th) = cos(t0)*cos(v)sin(t0)*sin(v) and sin(th) = sin(t0)*cos(v)+cos(t0)*sin(v)  (4) Next, the cylindrical polar representation of the helical surface is transformed to rectangular Cartesians: x = xh(u,v) = rh*cos(th); y = yh(u,v) = rh*sin(th); z = zh(u,v)  (5) Now, the position vector of any point (u,v) on the helical surface can be written as S(u,v) = xh(u,v)*I + yh(u,v)*J + zh(u,v)*K  (6) where I, J, K are the unit vectors along the x, y, z directions. Next, at any point (u,v) on the surface, the tangent plane can be characterized by two vectors: U = dS/du; V = dS/dv  (7) where the derivatives are partial derivatives. U is tangent to the surface in the direction of the helically transported image of the base curve, and V is tangent to the surface in the direction of the helix generated by the transported image of a point on the base curve. Next, a vector normal to the tangent plane and thus to the helical surface is obtained as the cross product of the previous two vectors: N = U x V  (8) This can be normalized to yield a unit normal vector: N1 = N / sqrt(dot(N,N))  (9) where dot() is the dot product or euclidean inner product of vectors. If the parametrization of the base curve is such that increasing u implies increasing r, then dot(N,K) > 0. Equations (1) through (9) can be programmed quite easily on a computer. Finally, as a special case, we mention the simplest helical surface in this coordinate representation, which is obtained by a base curve segment that coincides with a segment of the x axis. This case typifies the loadbearing surface of a screw thread, and it might be case that you are most interested in. For this case, x0(u) = u; y0(u) = 0; z0(u) = 0  (10) The expressions simplify in this case to give N = p/(2*pi)*(sin(v)*I  cos(v)*J) + u*K  (11) Note that eqn.(9) should be used to calculate a unit normal N1. For u > 0, eqn.(11) gives the outward pointing normal to the loadbearing upper surface, but for u < 0 it gives the inward pointing normal of the upper surface. This is a consequence of r decreasing for u increasing when u < 0, according to the parametrization in eqn.(10). To get the outward pointing normal for u < 0, multiply the normal N from eqn.(11) by 1. 

February 3, 2006, 10:09 
Re: Normal  Helical Surface

#3 
Guest
Posts: n/a

Ananda: Thank you very much for your posting. I am impressed by your detailed and methodical description. I guess this serves my purpose.
It may be of interest to you: The cfd problems that I am working on have polymer flow between rotating screw(s) and cylindrical barrel(s). I need surface normals to account for slip at the solid, moving and stationary, interfaces. Slip at solid interfaces is a common problem with many types of polymers. Best regards. 

February 3, 2006, 13:56 
Re: Normal  Helical Surface

#4 
Guest
Posts: n/a

Malik, glad the posting is helpful. Sounds like an interesting problem that you are working on. The special case in eqn.(11) of my posting should apply to your geometry. For the vertical part of the screw or the barrel surface, the general procedure can be used with the base curve:
x0(u) = rc; y0(u) = 0; z0(u) = u where rc is the inner radius of the barrel. Then follow the previous procedure to find N. But of course, the answer simplifies to what you would expect for the cylindrical surface, namely: N = rc*(cos(v)*I+sin(v)*J) 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
fuction for ddt(n) which n is normal surface vector  mrshb4  OpenFOAM  1  October 5, 2016 08:14 
Add additional boundary layers to complex stl surface  tobijingles  OpenFOAM Native Meshers: snappyHexMesh and Others  1  October 26, 2011 10:45 
boundaries with gmshToFoam  ouafa  Open Source Meshers: Gmsh, Netgen, CGNS, ...  7  May 21, 2010 12:43 
How do I compute the normal vector to a surface with FEM  Vasilis  Main CFD Forum  3  July 31, 2009 07:59 
CFX4.3 build analysis form  Chie Min  CFX  5  July 12, 2001 23:19 