"\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0456\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430 (\u0430\u043D\u0433\u043B. Cyrus \u2014 Beck) \u2014 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0432\u0456\u0434\u0441\u0456\u043A\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0440\u0456\u0437\u043A\u0456\u0432 \u0434\u043E\u0432\u0456\u043B\u044C\u043D\u0438\u043C \u043E\u043F\u0443\u043A\u043B\u0438\u043C \u0431\u0430\u0433\u0430\u0442\u043E\u043A\u0443\u0442\u043D\u0438\u043A\u043E\u043C. \u0411\u0443\u0432 \u0437\u0430\u043F\u0440\u043E\u043F\u043E\u043D\u043E\u0432\u0430\u043D\u0438\u0439 \u044F\u043A \u0435\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u0456\u0448\u0430 \u0437\u0430\u043C\u0456\u043D\u0430 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0443 \u041A\u043E\u0435\u043D\u0430 \u2014 \u0421\u0430\u0437\u0435\u0440\u043B\u0435\u043D\u0434\u0430, \u044F\u043A\u0438\u0439 \u0432\u0438\u043A\u043E\u043D\u0443\u0454 \u0432\u0456\u0434\u0441\u0456\u043A\u0430\u043D\u043D\u044F \u0437\u0430 \u043A\u0456\u043B\u044C\u043A\u0430 \u0456\u0442\u0435\u0440\u0430\u0446\u0456\u0439."@uk . . . "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0438\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430"@ru . . . . . . . "El algoritmo de Cyrus-Beck es un algoritmo de recorte de l\u00EDneas y pol\u00EDgonos convexos. De forma similar al algoritmo de Cohen-Sutherland tambi\u00E9n utiliza aristas extendidas. Se puede adaptar muy f\u00E1cilmente entre rayos y pol\u00EDgonos convexos o segmentos y pol\u00EDgonos convexos. Implementaci\u00F3n del algoritmo de Cyrus-Beck en C#"@es . "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0438\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430 (\u0430\u043D\u0433\u043B. Cyrus \u2014 Beck) \u2014 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043E\u0442\u0441\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0440\u0435\u0437\u043A\u043E\u0432 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u044B\u043C \u0432\u044B\u043F\u0443\u043A\u043B\u044B\u043C \u043C\u043D\u043E\u0433\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A\u043E\u043C.\u0411\u044B\u043B \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043E\u043B\u0435\u0435 \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0437\u0430\u043C\u0435\u043D\u044B \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0430 \u041A\u043E\u044D\u043D\u0430 \u2014 \u0421\u0430\u0437\u0435\u0440\u043B\u0435\u043D\u0434\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043E\u0442\u0441\u0435\u0447\u0435\u043D\u0438\u0435 \u0437\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439."@ru . . . "29724524"^^ . . "Algoritmo de Cyrus-Beck"@es . . . . . . . "El algoritmo de Cyrus-Beck es un algoritmo de recorte de l\u00EDneas y pol\u00EDgonos convexos. De forma similar al algoritmo de Cohen-Sutherland tambi\u00E9n utiliza aristas extendidas. Se puede adaptar muy f\u00E1cilmente entre rayos y pol\u00EDgonos convexos o segmentos y pol\u00EDgonos convexos. Implementaci\u00F3n del algoritmo de Cyrus-Beck en C# internal sealed class CyrusBeckClipping : IClippingAlgorithm { private List _clipArea = new List; private List _normals = new List; public IEnumerable GetBoundingPolygon { return _clipArea; } public void SetBoundingRectangle(Vector2 start, Vector2 end) { _clipArea.Clear; _clipArea.Add(start); _clipArea.Add(new Vector2(end.X, start.Y)); _clipArea.Add(end); _clipArea.Add(new Vector2(start.X, end.Y)); computeNormals; } public void SetBoundingPolygon(IEnumerable points) { _clipArea.Clear; _clipArea.AddRange(points); computeNormals; } private void computeNormals { _normals.Clear; for (int i = 0; i < _clipArea.Count - 1; i++) { Vector2 direction = _clipArea[i + 1] - _clipArea[i]; direction.Normalize; _normals.Add(new Vector2(-direction.Y, direction.X)); } { Vector2 direction = _clipArea[0] - _clipArea[_clipArea.Count - 1]; direction.Normalize; _normals.Add(new Vector2(-direction.Y, direction.X)); } } public bool ClipLine(ref Line line) { Vector2 P = line.End - line.Start; float tMinimum = 0, tMaximum = 1; const float epsilon = 0.0001f; for (int i = 0; i < _clipArea.Count; i++) { Vector2 F = _clipArea[i]; Vector2 N = _normals[i]; Vector2 Q = line.Start - F; float Pn = Vector2.DotProduct(P, N); float Qn = Vector2.DotProduct(Q, N); if (Pn < epsilon && Pn > -epsilon) { if (Qn < 0) return false; } else { float computedT = -Qn / Pn; if (Pn < 0) { if (computedT < tMinimum) return false; if (computedT < tMaximum) tMaximum = computedT; } else { if (computedT > tMaximum) return false; if (computedT > tMinimum) tMinimum = computedT; } } } if (tMinimum < tMaximum) { if (tMaximum < 1) line.End = line.Start + tMaximum * P; if (tMinimum > 0) line.Start = line.Start + tMinimum * P; } else return false; return true; } public ClippingCapabilities Capabilities { get { return ClippingCapabilities.ConvexWindow | ClippingCapabilities.RectangleWindow; } } public override string ToString { return \"Cyrus-Beck algorithm\"; }}// This code was implemented by Grishul Eugeny as part of preparation// to exam in ITMO university \n* Datos: Q5201169"@es . . . "1100467542"^^ . "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0438\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430 (\u0430\u043D\u0433\u043B. Cyrus \u2014 Beck) \u2014 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043E\u0442\u0441\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0440\u0435\u0437\u043A\u043E\u0432 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u044B\u043C \u0432\u044B\u043F\u0443\u043A\u043B\u044B\u043C \u043C\u043D\u043E\u0433\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A\u043E\u043C.\u0411\u044B\u043B \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043E\u043B\u0435\u0435 \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0437\u0430\u043C\u0435\u043D\u044B \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0430 \u041A\u043E\u044D\u043D\u0430 \u2014 \u0421\u0430\u0437\u0435\u0440\u043B\u0435\u043D\u0434\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043E\u0442\u0441\u0435\u0447\u0435\u043D\u0438\u0435 \u0437\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439."@ru . "In computer graphics, the Cyrus\u2013Beck algorithm is a generalized algorithm for line clipping. It was designed to be more efficient than the Cohen\u2013Sutherland algorithm, which uses repetitive clipping. Cyrus\u2013Beck is a general algorithm and can be used with a convex polygon clipping window, unlike Cohen-Sutherland, which can be used only on a rectangular clipping area. Here the parametric equation of a line in the view plane is where . Now to find the intersection point with the clipping window, we calculate the value of the dot product. Let be a point on the clipping plane . Calculate : \n* if < 0, vector pointed towards interior; \n* if = 0, vector pointed parallel to plane containing ; \n* if > 0, vector pointed away from interior. Here stands for normal of the current clipping plane (pointed away from interior). By this we select the point of intersection of line and clipping window where (dot product is 0) and hence clip the line."@en . . . . . . "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0456\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430"@uk . . . . "Cyrus\u2013Beck algorithm"@en . . . "In computer graphics, the Cyrus\u2013Beck algorithm is a generalized algorithm for line clipping. It was designed to be more efficient than the Cohen\u2013Sutherland algorithm, which uses repetitive clipping. Cyrus\u2013Beck is a general algorithm and can be used with a convex polygon clipping window, unlike Cohen-Sutherland, which can be used only on a rectangular clipping area. Here the parametric equation of a line in the view plane is where . Now to find the intersection point with the clipping window, we calculate the value of the dot product. Let be a point on the clipping plane . Calculate :"@en . "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u041A\u0456\u0440\u0443\u0441\u0430 \u2014 \u0411\u0435\u043A\u0430 (\u0430\u043D\u0433\u043B. Cyrus \u2014 Beck) \u2014 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0432\u0456\u0434\u0441\u0456\u043A\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0440\u0456\u0437\u043A\u0456\u0432 \u0434\u043E\u0432\u0456\u043B\u044C\u043D\u0438\u043C \u043E\u043F\u0443\u043A\u043B\u0438\u043C \u0431\u0430\u0433\u0430\u0442\u043E\u043A\u0443\u0442\u043D\u0438\u043A\u043E\u043C. \u0411\u0443\u0432 \u0437\u0430\u043F\u0440\u043E\u043F\u043E\u043D\u043E\u0432\u0430\u043D\u0438\u0439 \u044F\u043A \u0435\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u0456\u0448\u0430 \u0437\u0430\u043C\u0456\u043D\u0430 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0443 \u041A\u043E\u0435\u043D\u0430 \u2014 \u0421\u0430\u0437\u0435\u0440\u043B\u0435\u043D\u0434\u0430, \u044F\u043A\u0438\u0439 \u0432\u0438\u043A\u043E\u043D\u0443\u0454 \u0432\u0456\u0434\u0441\u0456\u043A\u0430\u043D\u043D\u044F \u0437\u0430 \u043A\u0456\u043B\u044C\u043A\u0430 \u0456\u0442\u0435\u0440\u0430\u0446\u0456\u0439."@uk . . . . . . . . "2425"^^ . . . . . . . . .