Knuth's Algorithm X: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>David Eppstein
Undid revision 495265887 by خالد حسني (talk) If you're going to change wikiformatting to TeX, do it right: this change lost all the brackets in the sets.
 
this check breaks the algorithm when performed before the no-columns check; the non-deterministic choice already handles the case with no rows
 
Line 1: Line 1:
{{unref|date=September 2013}}
The writer is called Wilber Pegues. To play lacross is one of the things she enjoys most. Distributing manufacturing is where my main earnings arrives from and it's something I truly appreciate. For a whilst I've been in Mississippi but now I'm contemplating other choices.<br><br>Also visit my website :: online psychic reading ([http://Www.Familysurvivalgroup.com/easy-methods-planting-looking-backyard/ Continued])
{{about|closed curves|the orientation of open curves|Differential geometry of curves#Tangent vectors}}
In [[mathematics]], a '''positively oriented curve''' is a planar [[simple closed curve]] (that is, a curve in the plane whose starting point is also the end point and which has no other self-intersections) such that when traveling on it one always has the curve interior to the left (and consequently, the curve exterior to the right). If in the above definition one interchanges left and right, one obtains a '''negatively oriented curve'''.
 
Crucial to this definition is the fact that every simple closed curve admits a well-defined interior; that follows from the [[Jordan curve theorem]].
 
All simple closed curves can be classified as negatively oriented ([[clockwise]]), positively oriented ([[counterclockwise]]), or [[orientability|non-orientable]].  The [[Inner/Outer labeling|inner loop]] of a beltway road in the United States (or other countries where people drive on the right side of the road) would be an example of a negatively oriented (clockwise) curve.  A [[circle]] oriented [[counterclockwise]] is an example of a positively oriented curve. The same circle oriented clockwise would be a negatively oriented curve.
 
The concept of ''orientation'' of a curve is just a particular case of the notion of [[orientation (mathematics)|orientation]] of a [[manifold]] (that is, besides orientation of a curve one may also speak of orientation of a [[surface]], [[hypersurface]], etc.). Here, the interior and the exterior of a curve both inherit the usual orientation of the plane. The positive orientation on the curve is then the orientation it inherits as the boundary of its interior; the negative orientation is inherited from the exterior.
 
== Orientation of a simple polygon ==
 
[[Image:determining orientation.png|right|Selecting reference points.]]
 
In two dimensions, given an ordered set of three or more connected vertices (points) (such as in [[Connect the dots|connect-the-dots]]) which forms a [[simple polygon]], the orientation of the resulting [[polygon]] is directly related to the [[Angle#Positive and negative angles|sign of the angle]] at any [[Vertex (geometry)|vertex]] of the [[convex hull]] of the polygon, for example, of the angle ABC in the picture. In computations, the sign of the smaller angle formed by a pair of vectors is typically determined by the sign of the [[cross  product]] of the vectors. The latter one may be calculated  as the sign of the [[determinant]] of their orientation matrix. In the particular case when the two vectors are defined by two [[line segment]]s with common endpoint, such as the sides BA and BC of the angle ABC in our example, the orientation matrix may be defined as follows:
:<math>\mathbf{O} = \begin{bmatrix}
 
1 & x_{A} & y_{A} \\
1 & x_{B} & y_{B} \\
1 & x_{C} & y_{C}\end{bmatrix}.</math>
 
A formula for its determinant may be obtained, e.g., using the method of [[cofactor expansion]]:
:<math>\begin{align}
\det(O) &= 1\begin{vmatrix}x_{B}&y_{B}\\x_{C}&y_{C}\end{vmatrix}
-x_{A}\begin{vmatrix}1&y_{B}\\1&y_{C}\end{vmatrix}
+y_{A}\begin{vmatrix}1&x_{B}\\1&x_{C}\end{vmatrix} \\
&= x_{B}y_{C}-y_{B}x_{C}-x_{A}y_{C}+x_{A}y_{B}+y_{A}x_{C}-y_{A}x_{B} \\
&= (x_{B}y_{C}+x_{A}y_{B}+y_{A}x_{C})-(y_{A}x_{B}+y_{B}x_{C}+x_{A}y_{C}).
\end{align}
</math>
 
If the determinant is negative, then the polygon is oriented clockwise.  If the determinant is positive, the polygon is oriented counterclockwise.  The determinant  is non-zero if points A, B, and C are non-[[collinear]].  In the above example, with points ordered A, B, C, etc., the determinant is negative, and therefore the polygon is clockwise.
 
===Practical considerations===
In practical applications, the following considerations are commonly taken into an account.
 
One does not need to construct the convex hull of a polygon to find a suitable vertex. A common choice is the vertex of the polygon with the smallest X-coordinate. If there are several of them, the one with the smallest Y-coordinate is picked. It is guaranteed to be the vertex of the convex hull of the polygon. Alternatively, the vertex with the smallest Y-coordinate among the ones with the largest X-coordinates or the vertex with the smallest X-coordinate among the ones with the largest Y-coordinates (or any other of 8 "smallest, largest" X/Y combinations) will do as well.  
 
If the orientation of a [[convex polygon]] is sought, then, of course, any vertex may be picked.
 
For numerical reasons, the following equivalent formula for the determinant is commonly used:
 
:<math>\begin{align}
\det(O) &= (x_B-x_A)(y_C-y_A)-(x_C-x_A)(y_B-y_A)
\end{align}
</math>
 
The latter formula has 4 multiplications less. What is more important in computer computations involved in most practical applications, such as [[computer graphics]] or [[CAD]], the absolute values of the multipliers  are usually smaller (e.g., when A, B, C are within the same [[quadrant (plane geometry)|quadrant]]), thus giving a smaller [[numerical error]] or, in the extreme cases, avoiding the [[arithmetic overflow]].
 
When it is not known in advance that the sequence of points defines a simple polygon, the following things must be kept in mind.
 
For a [[self-intersecting polygon]] ([[complex polygon]]) (or for any self-intersecting curve) there is no natural notion of the "interior", hence the orientation is not defined. At the same time, in [[geometry]] and [[computer graphics]] there are a number of concepts to replace the notion of the "interior" for closed non-simple curves; see, e.g., "[[flood fill]]" and "[[winding number]]".
 
In "mild" cases of self-intersection ([[degenerate polygon]]s), when three consecutive points are allowed be on the same [[straight line]] and form a zero-degree angle, the concept of "interior" still makes sense, but an extra care must be taken in selection of the tested angle.  In the given example, imagine point A to lie on segment BC. In this situation the angle ABC and its determinant will be 0, hence useless. A solution is to test consecutive corners along the polygon (BCD, DEF,...) until a non-sero determinant is found (unless all points lie on the same [[straight line]]). (Notice that the points C, D, E are on the same line and form a 180-degree angle with zero determinant.)
 
== Local concavity ==
Once the orientation of a polygon formed from an ordered set of vertices is known, the [[concave polygon|concavity]] of a local region of the polygon can be determined using a second orientation matrix.  This matrix is composed of three consecutive vertices which are being examined for concavity.  For example, in the polygon pictured above, if we wanted to know whether the sequence of points F-G-H is [[Concave set|concave]], [[Convex set|convex]], or collinear (flat), we construct the matrix
:<math>\mathbf{O} = \begin{bmatrix}
 
1 & x_{F} & y_{F} \\
1 & x_{G} & y_{G} \\
1 & x_{H} & y_{H}\end{bmatrix}.</math>
 
If the determinant of this matrix is 0, then the sequence is collinear - neither concave nor convex.  If the determinant has the same sign as that of the orientation matrix for the entire polygon, then the sequence is convex.  If the signs differ, then the sequence is concave.  In this example, the polygon is negatively oriented, but the determinant for the points F-G-H is positive, and so the sequence F-G-H is concave.
 
The following table illustrates rules for determining whether a sequence of points is convex, concave, or flat:
 
{| class="wikitable"
|-
! width="200"|
! Negatively oriented polygon (clockwise)
! Positively oriented polygon (counterclockwise)
|-
| determinant of orientation matrix for local points is negative
| convex sequence of points
| concave sequence of points
|-
| determinant of orientation matrix for local points is positive
| concave sequence of points
| convex sequence of points
|-
| determinant of orientation matrix for local points is 0
| collinear sequence of points
| collinear sequence of points
|}
 
==See also==
 
* [[Differential geometry of curves]]
* [[Orientability]]
* [[Convex hull]]
 
==References==
{{Reflist}}<!--added above External links/Sources by script-assisted edit-->
 
==External links==
* http://www.math.hmc.edu/faculty/gu/curves_and_surfaces/curves/_topology.html
* [http://mathworld.wolfram.com/CurveOrientation.html Curve orientation] at [[MathWorld]]
 
{{DEFAULTSORT:Curve Orientation}}
[[Category:Curves]]
[[Category:Orientation]]
[[Category:Polygons]]

Latest revision as of 03:52, 11 November 2014

The writer is called Wilber Pegues. To play lacross is one of the things she enjoys most. Distributing manufacturing is where my main earnings arrives from and it's something I truly appreciate. For a whilst I've been in Mississippi but now I'm contemplating other choices.

Also visit my website :: online psychic reading (Continued)