src/classify/mfoutline.cpp
void FindDirectionChanges(MFOUTLINE Outline, float MinSlope, float MaxSlope) {
  MFEDGEPT *Current;
  MFEDGEPT *Last;
  MFOUTLINE EdgePoint;

  if (DegenerateOutline(Outline)) {
    return;
  }

  Last = PointAt(Outline);
  Outline = NextPointAfter(Outline);
  EdgePoint = Outline;
  do {
    Current = PointAt(EdgePoint);
    ComputeDirection(Last, Current, MinSlope, MaxSlope);

    Last = Current;
    EdgePoint = NextPointAfter(EdgePoint);
  } while (EdgePoint != Outline);

}
/*---------------------------------------------------------------------------*/
/**
 * This routine searches through the specified outline, computes
 * a slope for each vector in the outline, and marks each
 * vector as having one of the following directions:
 *   N, S, E, W, NE, NW, SE, SW
 * This information is then stored in the outline and the
 * outline is returned.
 * @param Outline   micro-feature outline to analyze
 * @param MinSlope  controls "snapping" of segments to horizontal
 * @param MaxSlope  controls "snapping" of segments to vertical
 */
This routine searches through the specified outline, computes
a slope for each vector in the outline, and marks each
vector as having one of the following directions:
N, S, E, W, NE, NW, SE, SW
This information is then stored in the outline and the
outline is returned.
@param Outline   micro-feature outline to analyze
@param MinSlope  controls "snapping" of segments to horizontal
@param MaxSlope  controls "snapping" of segments to vertical
This routine searches through the specified outline computes a slope for each vector in the outline and marks each vector as having one of the following directions : N S E W NE NW SE SW This information is then stored in the outline and the outline is returned . @param Outline micro - feature outline to analyze @param MinSlope controls " snapping " of segments to horizontal @param MaxSlope controls " snapping " of segments to vertical
void FindDirectionChanges(MFOUTLINE Outline, float MinSlope, float MaxSlope) {
  MFEDGEPT *Current;
  MFEDGEPT *Last;
  MFOUTLINE EdgePoint;
  if (DegenerateOutline(Outline)) {
    return;
  }
  Last = PointAt(Outline);
  Outline = NextPointAfter(Outline);
  EdgePoint = Outline;
  do {
    Current = PointAt(EdgePoint);
    ComputeDirection(Last, Current, MinSlope, MaxSlope);
    Last = Current;
    EdgePoint = NextPointAfter(EdgePoint);
  } while (EdgePoint != Outline);
}
void FindDirectionChanges ( MFOUTLINE Outline , float MinSlope , float MaxSlope ) { MFEDGEPT * Current ; MFEDGEPT * Last ; MFOUTLINE EdgePoint ; if ( DegenerateOutline ( Outline ) ) { return ; } Last = PointAt ( Outline ) ; Outline = NextPointAfter ( Outline ) ; EdgePoint = Outline ; do { Current = PointAt ( EdgePoint ) ; ComputeDirection ( Last , Current , MinSlope , MaxSlope ) ; Last = Current ; EdgePoint = NextPointAfter ( EdgePoint ) ; } while ( EdgePoint != Outline ) ; }
This routine searches through the specified outline, computes
 a slope for each vector in the outline, and marks each
 vector as having one of the following directions:
   N, S, E, W, NE, NW, SE, SW
 This information is then stored in the outline and the
 outline is returned.
This routine searches through the specified outline computes a slope for each vector in the outline and marks each vector as having one of the following directions : N S E W NE NW SE SW This information is then stored in the outline and the outline is returned .