Point[] GetHull(VectorShape shape, Matrix matrix, int delta) { var vector = shape.Data; //vector.Transform(matrix); //return vector.PolygonHull(delta, true); var oldHull = vector.Hull(delta, true); matrix.Transform(oldHull); return(GDIConverter.Convert(oldHull)); }
void IReceiver.Perform() { var points = new Set <Xwt.Point>(); var matrix = new Matrix(this.Camera.Matrix); var layout = this.Layout(); if (Data != null && Data.Requests.Count != 0) { foreach (var command in Data.Requests) { if (command != null && command.Subject != null) { if (command.Subject.Shape != null) { var hull = command.Subject.Shape.Hull(tolerance, true); points.AddRange(hull); } if (command is StateChangeCommand <IVisual> ) { var hull = layout.GetDataHull( command.Subject, ((StateChangeCommand <IVisual>)command).Parameter.One, tolerance, true); points.AddRange(hull); } else { var hull = layout.GetDataHull(command.Subject, tolerance, true); points.AddRange(hull); } } } } //points = points.Distinct ().ToList(); if (points.Count > 2) { var resultI = new GrahamConvexHull().FindHull(points).ToArray(); //matrix.Invert (); matrix.Transform(resultI); CommandsHull = Array.ConvertAll <Xwt.Point, Point>(resultI, a => a.ToGdi()); } else { CommandsHull = new Point[0]; } }
public void PointTransform () { var m = new Matrix (2, 0, 0, 2, 4, 4); var p = new Point (5, 6); Assert.AreEqual (new Point (14, 16), m.Transform (p)); var ps = new Point[10]; for (int i = 0; i < ps.Length; i++) ps [i] = new Point (3 * i, 2 * i); m.Transform (ps); for (int i = 0; i < ps.Length; i++) Assert.AreEqual (m.Transform (new Point (3 * i, 2 * i)), ps [i]); }
/// <summary> /// Transforms the array of points by the current transformation matrix (CTM) /// </summary> public void TransformPoints(Point[] points) { Matrix m = GetCTM(); m.Transform(points); }
/// <summary> /// Transforms the point (x, y) by the current transformation matrix (CTM) /// </summary> public Point TransformPoint(Point p) { Matrix m = GetCTM(); return(m.Transform(p)); }