checkMesh - concave faces definition
1 Attachment(s)
The utility checkMesh determines the presence of concave faces by calling the function checkFaceAngles(). The code of this function is attached (OF-2.1.x). Here is the relevant code section of checkGeometry.C
Code:
if (allGeometry) Code:
// Check normal Code:
if ((edgeNormal & faceNormal) < SMALL) faceNormal is the normalized face normal vector. So its magnitude is one and the vector is perpendicular to the face. edgeNormal is also a normalized vector. edgeNormal was generated by calculating the cross-product of two consecutive edges of the face. As an edge connects two points, an edge can always be represented by a vector pointing from one point to the other point. However, as all edges of the face lie within a plane to which the faceNormal is prependicular. The cross-product of two edges yields always a vector parallel to the faceNormal. In fact it can be parallel or anti-parallel. The condition Code:
((edgeNormal & faceNormal) < SMALL) So, the condition is false for the parallel case and false for the anti-parallel case. How can this condition detect a concave cell? What I figured out is that the following is a concave cell, meaning that the edges delimiting the face make a bend inwards. I can't see that the condition behind which the line nConcave++; is located is able to detect this. o------o | xxxx/ | xxx/ | xxo | xxx\ o-----o What am I missing, or am I somewhere wrong? |
All times are GMT -4. The time now is 23:17. |