Square to Circle: Normals first created 16/09/06 - last modified 19/09/06 Page Author: Ty Harness
The Square TO Round (STOR) now has the ability to list out the normal vectors for each face and calculate the angle between adjacent face normals. If you need to learn more about working with vectors then I highly recommend Stroud[1,2]. The square to circle is just a sequence of triangles with 3 points or vertices to describe each face. The normal of a triangle face can be determined using the vector cross product. We'll just take a look at 2 adjacent faces to start with.

$N_1 = b_v x a_v$ and $N_2 = c_v x b_v$
text here
Figure 1 - A typical square to circle 200 square to 100 circle with 12 divisions and no offset - we'll use this geometry as a test model.

Because their are 2 normals for each face: one facing inwards and the other outwards we need to introduce a technique to ensure all the normals calculated are consistent. So the directions of the vectors $a_v$ , $b_v$ and $c_v$ are crucial for obtaining that consistency.

$ a_v = vec(B0) = P(0) -P(B) $

$b_v = vec(B1) = P(1) -P(B) $

$c_v = vec(B2) = P(2) -P(B) $

Zheng and Chen [3] explain in order to calculate consistent normals for adjacent faces then the common edge (B1) must be of the opposite sign (direction). Because I do not necessarily to store the faces with the correct winding order I can check and reverse the winding order as needed before calculating the normal.

$N_1 = b_v x a_v$ and $N_2 = c_v x b_v$

The unit normal:
$N = N/|N|$

It's relatively easy to apply those equations in the STOR application and it's just a case of house-keeping. Version 1.032 allows you list out the normals.
text here
Figure 2 - Listing out the face normals

Using the test geometry we can see the k component of the vector is positive which makes sense with out model geometry and the big triangles East, North ,West and South have the appropriate 0 component.

Now we know 2 adjacent normals we can find the angle between them using the vector dot product:

$ cos(phi) = (N_1 dot N_2) / (|N_1|*|N_2|) $

text here
Figure 3 - Listing out the angle between adjacent face normals

Of course the numerical answers are difficult to visualize and interpret so for full version users you can export a 3D DXF with the normal drawn onto the model from each of the face's centroid. This helps confirm the that the normals are consistent and hence all the angles between the normals will be reported in a consistent manner.

text here text here
Figure 4 - a) Normals from our test geometry and a more complex square to circle transformer

In this age of computer numerical control (CNC) you can program a press brake with a sequence of backstop positions and bend angles.

text here
Figure 5 - Kingsland press brake with programmable sequence of backstop positions and bends.

Figure 5 shows a Kingsland press where the angle is not programmed but the depth at which the top blade is braked. The type of blade and vee tooling determine the actual angle of the bend. Typically you're going to be air bending for a square to circle so when the blade is raised a certain amount of spring back occurs, it's just a case of experimenting with the press brake to find the final depth of the blade. With thin plate downwards of 2 mm thick then you can get away with a bit of over bending and dress up the job with a mallet, but for 3 mm thick plate and up you need to think more accurately with the bend angle.

(1) Stroud, K.A., Engineering Mathematics, Macmillan, 3rd., London: (1987), .
(2) Stroud, K.A., Further Engineering Mathematics, Macmillan, 2nd., London: (1987), .
(3) Zheng, C., Chen. T,, ""Efficient Feature Extraction For 2D/3D Objects In Mesh Representation"", http://amp.ece.cmu.edu/, , Dept. Electrical & Computer Eng. Carnegie Mellon University PA, USA: (), .

ASCII to MathML used in this page: ASCIItoMathML homepage