--- /dev/null
+# Created by Octave 3.6.2, Sun Jun 10 09:53:43 2012 UTC <root@brouzouf>
+# name: cache
+# type: cell
+# rows: 3
+# columns: 117
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+angle2Points
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 411
+ -- Function File: ALPHA = angle2Points (P1, P2)
+ Compute horizontal angle between 2 points
+
+ P1 and P2 are either [1x2] arrays, or [Nx2] arrays, in this case
+ ALPHA is a [Nx1] array. The angle computed is the horizontal angle
+ of the line (P1,P2).
+
+ Result is always given in radians, between 0 and 2*pi.
+
+ See also: points2d, angles2d, angle3points, normalizeAngle,
+ vectorAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 42
+Compute horizontal angle between 2 points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+angle3Points
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 410
+ -- Function File: ALPHA = angle3Points (P1, P2, P3)
+ Computes the angle between the points P1, P2 and P3.
+
+ P1, P2 and P3 are either [1x2] arrays, or [Nx2] arrays, in this
+ case ALPHA is a [Nx1] array. The angle computed is the directed
+ angle between line (P2P1) and line (P2P3).
+
+ Result is always given in radians, between 0 and 2*pi.
+
+ See also: points2d, angles2d, angle2points
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 52
+Computes the angle between the points P1, P2 and P3.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+angleAbsDiff
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 323
+ -- Function File: DIF = angleAbsDiff (ANGLE1, ANGLE2)
+ Computes the absolute angular difference between two angles in
+ radians. The result is comprised between 0 and pi.
+
+ A = angleAbsDiff(pi/2, pi/3)
+ A =
+ 0.5236 % equal to pi/6
+
+ See also: angles2d, angleDiff
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 71
+Computes the absolute angular difference between two angles in radians.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+angleDiff
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 421
+ -- Function File: DIF = angleDiff (ANGLE1, ANGLE2)
+ Difference between two angles
+
+ Computes the signed angular difference between two angles in
+ radians. The result is comprised between -PI and +PI.
+
+ Example A = angleDiff(-pi/4, pi/4) A = 1.5708 %
+ equal to pi/2 A = angleDiff(pi/4, -pi/4) A =
+ -1.5708 % equal to -pi/2
+
+ See also: angles2d, angleAbsDiff
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 30
+Difference between two angles
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+angleSort
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 665
+ -- Function File: varargout = angleSort (PTS, varargin)
+ Sort points in the plane according to their angle to origin
+
+ PTS2 = angleSort(PTS); Computes angle of points with origin, and
+ sort points with increasing angles in Counter-Clockwise
+ direction.
+
+ PTS2 = angleSort(PTS, PTS0); Computes angles between each point
+ of PTS and PT0, which can be different from origin.
+
+ PTS2 = angleSort(..., THETA0); Specifies the starting angle for
+ sorting.
+
+ [PTS2, I] = angleSort(...); Also returns in I the indices of
+ PTS, such that PTS2 = PTS(I, :);
+
+ See also: points2d, angles2d, angle2points, normalizeAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 60
+Sort points in the plane according to their angle to origin
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+angles2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 620
+ -- Function File: angles2d ()
+ Description of functions for manipulating angles
+
+ Angles are normalized in an interval of width 2*PI. Most geom2d
+ functions return results in the [0 2*pi] interval, but it can be
+ convenient to consider the [-pi pi] interval as well. See the
+ normalizeAngle function to switch between conventions.
+
+ Angles are usually oriented. The default orientation is the CCW
+ (Counter-Clockwise) orientation.
+
+ See also: angle2Points, angle3Points, angleAbsDiff,
+ normalizeAngle, vectorAngle, angleDiff, angleSort, lineAngle,
+ edgeAngle, deg2rad, rad2deg
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 49
+Description of functions for manipulating angles
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+beltproblem
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1316
+ -- Function File: [TANGENT,INNER] = beltproblem (C, R)
+ Finds the four lines tangent to two circles with given centers and
+ radii.
+
+ The function solves the belt problem in 2D for circles with center
+ C and radii R.
+
+ *INPUT*
+ C
+ 2-by-2 matrix containig coordinates of the centers of the
+ circles; one row per circle.
+
+ R
+ 2-by-1 vector with the radii of the circles.
+
+ *OUPUT*
+ TANGENT
+ 4-by-4 matrix with the points of tangency. Each row describes
+ a segment(edge).
+
+ INNER
+ 4-by-2 vector with the point of intersection of the inner
+ tangents (crossed belts) with the segment that joins the
+ centers of the two circles. If the i-th edge is not an inner
+ tangent then `inner(i,:)=[NaN,NaN]'.
+
+ Example:
+
+ c = [0 0;1 3];
+ r = [1 0.5];
+ [T inner] = beltproblem(c,r)
+ => T =
+ -0.68516 0.72839 1.34258 2.63581
+ 0.98516 0.17161 0.50742 2.91419
+ 0.98675 -0.16225 1.49338 2.91888
+ -0.88675 0.46225 0.55663 3.23112
+
+ => inner =
+ 0.66667 2.00000
+ 0.66667 2.00000
+ NaN NaN
+ NaN NaN
+
+ See also: edges2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 73
+Finds the four lines tangent to two circles with given centers and
+radii.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+bisector
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 474
+ -- Function File: RAY = bisector (LINE1, LINE2)
+ -- Function File: RAY = bisector (P1, P2, P3)
+ Return the bisector of two lines, or 3 points.
+
+ Creates the bisector of the two lines, given as [x0 y0 dx dy].
+
+ create the bisector of lines (P2 P1) and (P2 P3).
+
+ The result has the form [x0 y0 dx dy], with [x0 y0] being the
+ origin point ans [dx dy] being the direction vector, normalized
+ to have unit norm.
+
+ See also: lines2d, rays2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Return the bisector of two lines, or 3 points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+boxes2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 401
+ -- Function File: boxes2d ()
+ Description of functions operating on bounding boxes.
+
+ A box is represented as a set of limits in each direction:
+ BOX = [XMIN XMAX YMIN YMAX].
+ Boxes are used as result of computation for bounding boxes, and to
+ clip shapes.
+
+ See also: clipPoints, clipLine, clipEdge, clipRay, mergeBoxes,
+ intersectBoxes, randomPointInBox, drawBox
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 53
+Description of functions operating on bounding boxes.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+cartesianLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 234
+ -- Function File: LINE = cartesianLine (A, B,C)
+ Create a straight line from cartesian equation coefficients.
+
+ Create a line verifying the Cartesian equation: A*x + B*x + C =
+ 0;
+
+ See also: lines2d, createLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 60
+Create a straight line from cartesian equation coefficients.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+cbezier2poly
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1289
+ -- Function File: PP = cbezier2poly (POINTS)
+ -- Command: Function File [X Y] = cbezier2poly (POINTS,T)
+ Returns the polynomial representation of the cubic Bezier defined
+ by the control points POINTS.
+
+ With only one input argument, calculates the polynomial PP of the
+ cubic Bezier curve defined by the 4 control points stored in
+ POINTS. The first point is the inital point of the curve. The
+ segment joining the first point with the second point (first
+ center) defines the tangent of the curve at the initial point.
+ The segment that joints the third point (second center) with the
+ fourth defines the tanget at the end-point of the curve, which is
+ defined in the fourth point. POINTS is either a 4-by-2 array
+ (vertical concatenation of point coordinates), or a 1-by-8 array
+ (horizotnal concatenation of point coordinates). PP is a 2-by-3
+ array, 1st row is the polynomial for the x-coordinate and the 2nd
+ row for the y-coordinate. Each row can be evaluated with
+ `polyval'. The polynomial PP(t) is defined for t in [0,1].
+
+ When called with a second input argument T, it returns the
+ coordinates X and Y corresponding to the polynomial evaluated at T
+ in [0,1].
+
+ See also: drawBezierCurve, polyval
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 80
+Returns the polynomial representation of the cubic Bezier defined by
+the control
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+centroid
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 889
+ -- Function File: C = centroid (POINTS)
+ -- Function File: C = centroid (PX, PY)
+ -- Function File: C = centroid (..., MASS)
+ Compute centroid (center of mass) of a set of points.
+
+ Computes the ND-dimensional centroid of a set of points. POINTS
+ is an array with as many rows as the number of points, and as
+ many columns as the number of dimensions. PX and PY are two
+ column vectors containing coordinates of the 2-dimensional
+ points. The result C is a row vector with ND columns.
+
+ If MASS is given, computes center of mass of POINTS, weighted by
+ coefficient MASS. POINTS is a Np-by-Nd array, MASS is Np-by-1
+ array, and PX and PY are also both Np-by-1 arrays.
+
+ Example:
+
+ pts = [2 2;6 1;6 5;2 4];
+ centroid(pts)
+ ans =
+ 4 3
+
+ See also: points2d, polygonCentroid
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 53
+Compute centroid (center of mass) of a set of points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+circleArcAsCurve
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 783
+ -- Function File: P = circleArcAsCurve (ARC, N)
+ Convert a circle arc into a series of points
+
+ P = circleArcAsCurve(ARC, N); convert the circle ARC into a
+ series of N points. ARC is given in the format: [XC YC R THETA1
+ DTHETA] where XC and YC define the center of the circle, R its
+ radius, THETA1 is the start of the arc and DTHETA is the angle
+ extent of the arc. Both angles are given in degrees. N is the
+ number of vertices of the resulting polyline, default is 65.
+
+ The result is a N-by-2 array containing coordinates of the N
+ points.
+
+ [X Y] = circleArcAsCurve(ARC, N); Return the result in two
+ separate arrays with N lines and 1 column.
+
+ See also: circles2d, circleAsPolygon, drawCircle, drawPolygon
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Convert a circle arc into a series of points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+circleAsPolygon
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 572
+ -- Function File: P = circleAsPolygon (CIRCLE, N)
+ Convert a circle into a series of points
+
+ P = circleAsPolygon(CIRCLE, N); convert circle given as [x0 y0
+ r], where x0 and y0 are coordinate of center, and r is the
+ radius, into an array of [(N+1)x2] double, containing x and y
+ values of points. The polygon is closed
+
+ P = circleAsPolygon(CIRCLE); uses a default value of N=64 points
+
+ Example circle = circleAsPolygon([10 0 5], 16); figure;
+ drawPolygon(circle);
+
+ See also: circles2d, polygons2d, createCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 41
+Convert a circle into a series of points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+circles2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 925
+ -- Function File: circles2d ()
+ Description of functions operating on circles
+
+ Circles are represented by their center and their radius: C =
+ [xc yc r]; One sometimes considers orientation of circle, by
+ adding an extra boolean value in 4-th position, with value TRUE
+ for direct (i.e. turning Counter-clockwise) circles.
+
+ Circle arcs are represented by their center, their radius, the
+ starting angle and the angle extent, both in degrees: CA = [xc
+ yc r theta0 dtheta];
+
+ Ellipses are represented by their center, their 2 semi-axis
+ length, and their angle (in degrees) with Ox direction. E =
+ [xc yc A B theta];
+
+ See also: ellipses2d, createCircle, createDirectedCircle,
+ enclosingCircle isPointInCircle, isPointOnCircle
+ intersectLineCircle, intersectCircles, radicalAxis
+ circleAsPolygon, circleArcAsCurve drawCircle, drawCircleArc
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Description of functions operating on circles
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+clipEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 408
+ -- Function File: EDGE2 = clipEdge (EDGE, BOX)
+ Clip an edge with a rectangular box.
+
+ EDGE: [x1 y1 x2 y2], BOX : [xmin xmax ; ymin ymax] or [xmin xmax
+ ymin ymax]; return : EDGE2 = [xc1 yc1 xc2 yc2];
+
+ If clipping is null, return [0 0 0 0];
+
+ if EDGE is a [nx4] array, return an [nx4] array, corresponding to
+ each clipped edge.
+
+ See also: edges2d, boxes2d, clipLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Clip an edge with a rectangular box.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+clipLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 910
+ -- Function File: EDGE = clipLine (LINE, BOX)
+ Clip a line with a box.
+
+ LINE is a straight line given as a 4 element row vector: [x0 y0 dx
+ dy], with (x0 y0) being a point of the line and (dx dy) a
+ direction vector, BOX is the clipping box, given by its extreme
+ coordinates: [xmin xmax ymin ymax]. The result is given as an
+ edge, defined by the coordinates of its 2 extreme points: [x1 y1
+ x2 y2]. If line does not intersect the box, [NaN NaN NaN NaN]
+ is returned.
+
+ Function works also if LINE is a Nx4 array, if BOX is a Nx4 array,
+ or if both LINE and BOX are Nx4 arrays. In these cases, EDGE is
+ a Nx4 array.
+
+ Example:
+
+ line = [30 40 10 0];
+ box = [0 100 0 100];
+ res = clipLine(line, box)
+ res =
+ 0 40 100 40
+
+ See also: lines2d, boxes2d, edges2d, clipEdge, clipRay
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 23
+Clip a line with a box.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+clipPoints
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 218
+ -- Function File: POINTS2 = clipPoints (POINTS, BOX)
+ Clip a set of points by a box.
+
+ Returns the set POINTS2 which are located inside of the box BOX.
+
+ See also: points2d, boxes2d, clipLine, drawPoint
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 30
+Clip a set of points by a box.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+clipRay
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 752
+ -- Function File: [EDGE INSIDE] = clipRay (RAY, BOX)
+ Clip a ray with a box.
+
+ RAY is a straight ray given as a 4 element row vector: [x0 y0 dx
+ dy], with (x0 y0) being the origin of the ray and (dx dy) its
+ direction vector, BOX is the clipping box, given by its extreme
+ coordinates: [xmin xmax ymin ymax]. The result is given as an
+ edge, defined by the coordinates of its 2 extreme points: [x1 y1
+ x2 y2]. If the ray does not intersect the box, [NaN NaN NaN
+ NaN] is returned.
+
+ Function works also if RAY is a Nx4 array, if BOX is a Nx4 array,
+ or if both RAY and BOX are Nx4 arrays. In these cases, EDGE is a
+ Nx4 array.
+
+ See also: rays2d, boxes2d, edges2d, clipLine, drawRay
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Clip a ray with a box.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+closed_path
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 173
+ -- Function File: Y = polygon (X)
+ Returns a simple closed path that passes through all the points in
+ X. X is a vector containing 2D coordinates of the points.
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 69
+Returns a simple closed path that passes through all the points in X.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+cov2ellipse
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 686
+ -- Function File: ELLIPSE = cov2ellipse (K)
+ -- Function File: [RA RB THETA] = cov2ellipse (K)
+ -- Function File: ... = cov2ellipse (..., `tol',TOL)
+ Calculates ellipse parameters from covariance matrix.
+
+ K must be symmetric positive (semi)definite. The optional argument
+ `tol' sets the tolerance for the verification of the
+ positive-(semi)definiteness of the matrix K (see `isdefinite').
+
+ If only one output argument is supplied a vector defining a
+ ellipse is returned as defined in `ellipses2d'. Otherwise the
+ angle THETA is given in radians.
+
+ Run `demo cov2ellipse' to see an example.
+
+ See also: ellipses2d, cov2ellipse, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 53
+Calculates ellipse parameters from covariance matrix.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+crackPattern
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 909
+ -- Function File: E = crackPattern (BOX, POINTS, ALPHA)
+ Create a (bounded) crack pattern tessellation
+
+ E = crackPattern2(BOX, POINTS, ALPHA) create a crack propagation
+ pattern wit following parameters : - pattern is bounded by area
+ BOX which is a polygon. - each crack originates from points
+ given in POINTS - directions of each crack is given by a [NxM]
+ array ALPHA, where M is the number of rays emanating from each
+ seed/ - a crack stop when it reaches another already created
+ crack. - all cracks stop when they reach the border of the
+ frame, given by box (a serie of 4 points). The result is a
+ collection of edges, in the form [x1 y1 x2 y2].
+
+ E = crackPattern2(BOX, POINTS, ALPHA, SPEED) Also specify speed
+ of propagation of each crack.
+
+ See the result with : figure; drawEdge(E);
+
+ See also: drawEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Create a (bounded) crack pattern tessellation
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+crackPattern2
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 910
+ -- Function File: E = crackPattern2 (BOX, POINTS, ALPHA)
+ Create a (bounded) crack pattern tessellation
+
+ E = crackPattern2(BOX, POINTS, ALPHA) create a crack propagation
+ pattern wit following parameters : - pattern is bounded by area
+ BOX which is a polygon. - each crack originates from points
+ given in POINTS - directions of each crack is given by a [NxM]
+ array ALPHA, where M is the number of rays emanating from each
+ seed/ - a crack stop when it reaches another already created
+ crack. - all cracks stop when they reach the border of the
+ frame, given by box (a serie of 4 points). The result is a
+ collection of edges, in the form [x1 y1 x2 y2].
+
+ E = crackPattern2(BOX, POINTS, ALPHA, SPEED) Also specify speed
+ of propagation of each crack.
+
+ See the result with : figure; drawEdge(E);
+
+ See also: drawEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Create a (bounded) crack pattern tessellation
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 20
+createBasisTransform
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1405
+ -- Function File: T = createBasisTransfrom (TARGET)
+ -- Function File: T = createBasisTransfrom (SOURCE, TARGET)
+ Compute matrix for transforming a basis into another basis
+
+ With only one input arguemnt, assumes the SOURCE is the standard
+ (Oij) basis, with origin at (0,0), first direction vector equal
+ to (1,0) and second direction vector equal to (0,1). Otherwise
+ SOURCE specifies the SOURCE basis.
+
+ Both SOURCE and TARGET represent basis, in the following form:
+ [x0 y0 ex1 ey1 ex2 ey2] [y0 y0] is the origin of the basis,
+ [ex1 ey1] is the first direction vector, and [ex2 ey2] is the
+ second direction vector.
+
+ The result T is a 3-by-3 matrix such that a point expressed with
+ coordinates of the first basis will be represented by new
+ coordinates `P2 = transformPoint(P1, T)' in the TARGET basis.
+
+ Example
+ % standard basis transform
+ src = [0 0 1 0 0 1];
+ % TARGET transform, just a rotation by atan(2/3) followed by a scaling
+ tgt = [0 0 .75 .5 -.5 .75];
+ % compute transform
+ trans = createBasisTransform(src, tgt);
+ % transform the point (.25,1.25) into the point (1,1)
+ p1 = [.25 1.25];
+ p2 = transformPoint(p1, trans)
+ ans =
+ 1 1
+
+ See also: transforms2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 59
+Compute matrix for transforming a basis into another basis
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+createCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 881
+ -- Function File: CIRCLE = createCircle (P1, P2, P3)
+ -- Function File: CIRCLE = createCircle (P1, P2)
+ Create a circle from 2 or 3 points.
+
+ Creates the circle passing through the 3 given points. C is a
+ 1x3 array of the form: [XC YX R].
+
+ When two points are given, creates the circle whith center P1 and
+ passing throuh the point P2.
+
+ Works also when input are point arrays the same size, in this case
+ the result has as many lines as the point arrays.
+
+ Example
+
+ % Draw a circle passing through 3 points.
+ p1 = [10 15];
+ p2 = [15 20];
+ p3 = [10 25];
+ circle = createCircle(p1, p2, p3);
+ figure; hold on; axis equal; axis([0 50 0 50]);
+ drawPoint([p1 ; p2; p3]);
+ drawCircle(circle);
+
+ See also: circles2d, createDirectedCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Create a circle from 2 or 3 points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 20
+createDirectedCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 569
+ -- Function File: CIRCLE = createDirectedCircle (P1, P2, P3)
+ -- Function File: CIRCLE = createDirectedCircle (P1, P2)
+ Create a circle from 2 or 3 points.
+
+ Creates the circle passing through the 3 given points. C is a
+ 1x4 array of the form: [XC YX R INV].
+
+ When two points are given, creates the circle whith center P1 and
+ passing throuh the point P2.
+
+ Works also when input are point arrays the same size, in this case
+ the result has as many lines as the point arrays.
+
+ Example
+
+ See also: circles2d, createCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Create a circle from 2 or 3 points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+createEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1092
+ -- Function File: EDGE = createEdge (P1, P2)
+ -- Function File: EDGE = createEdge (X0, Y0, DX, DY)
+ -- Function File: EDGE = createEdge (PARAM)
+ -- Function File: EDGE = createEdge (LINE, D)
+ Create an edge between two points, or from a line.
+
+ The internal format for edge representation is given by
+ coordinates of two points : [x1 y1 x2 y2]. This function can
+ serve as a line to edge converter.
+
+ Returns the edge between the two given points P1 and P2.
+
+ Returns the edge going through point (X0, Y0) and with direction
+ vector (DX,DY).
+
+ When PARAM is an array of 4 values, creates the edge going through
+ the point (param(1) param(2)), and with direction vector given by
+ (param(3) param(4)).
+
+ When LINE is given, creates the edge contained in LINE, with same
+ direction and start point, but with length given by D.
+
+ Note: in all cases, parameters can be vertical arrays of the same
+ dimension. The result is then an array of edges, of dimensions
+ [N*4].
+
+ See also: edges2d, lines2d, drawEdge, clipEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 50
+Create an edge between two points, or from a line.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+createHomothecy
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 245
+ -- Function File: T = createHomothecy (POINT, RATIO)
+ Create the the 3x3 matrix of an homothetic transform.
+
+ POINT is the center of the homothecy, RATIO is its factor.
+
+ See also: transforms2d, transformPoint, createTranslation
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 53
+Create the the 3x3 matrix of an homothetic transform.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+createLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 2358
+ -- Function File: LINE = createLine(varargin)
+ Create a straight line from 2 points, or from other inputs
+
+ Line is represented in a parametric form : [x0 y0 dx dy] x = x0
+ + t*dx y = y0 + t*dy;
+
+ L = createLine(p1, p2); Returns the line going through the two
+ given points.
+
+ L = createLine(x0, y0, dx, dy); Returns the line going through
+ point (x0, y0) and with direction vector(dx, dy).
+
+ L = createLine(LINE); where LINE is an array of 4 values,
+ creates the line going through the point (LINE(1) LINE(2)), and
+ with direction given by vector (LINE(3) LINE(4)).
+
+ L = createLine(THETA); Create a polar line originated at (0,0)
+ and with angle THETA.
+
+ L = createLine(RHO, THETA); Create a polar line with normal
+ theta, and with min distance to origin equal to rho. rho can be
+ negative, in this case, the line is the same as with
+ CREATELINE(-rho, theta+pi), but the orientation is different.
+
+ Note: in all cases, parameters can be vertical arrays of the same
+ dimension. The result is then an array of lines, of dimensions
+ [N*4].
+
+ NOTE : A line can also be represented with a 1*5 array : [x0 y0
+ dx dy t]. whith 't' being one of the following : - t=0 : line
+ is a singleton (x0,y0) - t=1 : line is an edge segment, between
+ points (x0,y0) and (x0+dx, y0+dy). - t=Inf : line is a Ray,
+ originated from (x0,y0) and going to infinity in the
+ direction(dx,dy). - t=-Inf : line is a Ray, originated from
+ (x0,y0) and going to infinity in the direction(-dx,-dy). -
+ t=NaN : line is a real straight line, and contains all points
+ verifying the above equation. This seems us a convenient way to
+ represent uniformly all kind of lines (including edges, rays,
+ and even point).
+
+ NOTE2 : Any line object can be represented using a 1x6 array :
+ [x0 y0 dx dy t0 t1] the first 4 parameters define the supporting
+ line, t0 represent the position of the first point on the line,
+ and t1 the position of the last point. * for edges : t0 = 0,
+ and t1=1 * for straight lines : t0 = -inf, t1=inf * for rays :
+ t0=0, t1=inf (or t0=-inf,t1=0 for inverted ray). I propose to
+ call these objects 'lineArc'
+
+ See also: lines2d, createEdge, createRay
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 59
+Create a straight line from 2 points, or from other inputs
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 20
+createLineReflection
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 332
+ -- Function File: T = function_name (LINE)
+ Create the the 3x3 matrix of a line reflection.
+
+ Where LINE is given as [x0 y0 dx dy], return the affine tansform
+ corresponding to the desired line reflection.
+
+ See also: lines2d, transforms2d, transformPoint,
+ createTranslation, createHomothecy, createScaling
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 47
+Create the the 3x3 matrix of a line reflection.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+createRay
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 877
+ -- Function File: RAY = createRay (POINT, ANGLE)
+ -- Function File: RAY = createRay (X0,Y0, ANGLE)
+ -- Function File: RAY = createRay (P1, P2)
+ Create a ray (half-line), from various inputs.
+
+ A Ray is represented in a parametric form: [x0 y0 dx dy]. x =
+ x0 + t*dx y = y0 + t*dy; for all t>0.
+
+ POINT is a Nx2 array giving the starting point of the ray, and
+ ANGLE is the orientation of the ray respect to the positive
+ x-axis. The ray origin can be specified with 2 input arguments
+ X0,Y0.
+
+ If two points P1, P2 are given, creates a ray starting from point
+ P1 and going in the direction of point P2.
+
+ Example
+ origin = [3 4];
+ theta = pi/6;
+ ray = createRay(origin, theta);
+ axis([0 10 0 10]);
+ drawRay(ray);
+
+ See also: rays2d, createLine, points2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Create a ray (half-line), from various inputs.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+createRotation
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 651
+ -- Function File: T = createRotation (THETA)
+ -- Function File: T = createRotation (POINT, THETA)
+ -- Function File: T = createRotation (X0, Y0, THETA)
+ Create the 3*3 matrix of a rotation.
+
+ Returns the rotation corresponding to angle THETA (in radians)
+ The returned matrix has the form : [cos(theta) -sin(theta) 0]
+ [sin(theta) cos(theta) 0] [0 0 1]
+
+ POINT or (X0,Y0), specifies origin of rotation. The result is
+ similar as performing translation(-X0,-Y0), rotation(THETA), and
+ translation(X0,Y0).
+
+ See also: transforms2d, transformPoint, createTranslation,
+ createScaling
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Create the 3*3 matrix of a rotation.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+createScaling
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 473
+ -- Function File: T = createScaling (S)
+ -- Function File: T = createScaling (SX, SY)
+ Create the 3x3 matrix of a scaling in 2 dimensions.
+
+ Assume scaling S is equal n all directions unless SX and SY are
+ given. Returns the matrix corresponding to scaling in the 2
+ main directions. The returned matrix has the form: [SX 0 0]
+ [0 SY 0] [0 0 1]
+
+ See also: transforms2d, transformPoint, createTranslation,
+ createRotation
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 51
+Create the 3x3 matrix of a scaling in 2 dimensions.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 17
+createTranslation
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 438
+ -- Function File: T = createTranslation (VECTOR)
+ -- Function File: T = createTranslation (DX,DY)
+ Create the 3*3 matrix of a translation.
+
+ Returns the matrix corresponding to a translation by the vector
+ [DX DY]. The components can be given as two arguments. The
+ returned matrix has the form : [1 0 TX] [0 1 TY] [0 0 1]
+
+ See also: transforms2d, transformPoint, createRotation,
+ createScaling
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 39
+Create the 3*3 matrix of a translation.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+createVector
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 560
+ -- Function File: VECT = createVector (P1, P2)
+ Create a vector from two points.
+
+ V12 = createVector(P1, P2) Creates the vector V12, defined as
+ the difference between coordinates of points P1 and P2. P1
+ and P2 are row vectors with ND elements, ND being the space
+ dimension.
+
+ If one of the inputs is a N-by-Nd array, the other input is
+ automatically repeated, and the result is N-by-Nd.
+
+ If both inputs have the same size, the result also have the same
+ size.
+
+ See also: vectors2d, vectors3d, points2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 32
+Create a vector from two points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+deg2rad
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 325
+ -- Function File: RAD = deg2rad(DEG)
+ Convert angle from degrees to radians
+
+ Usage: R = deg2rad(D) convert an angle in degrees to an angle
+ in radians.
+
+ Example deg2rad(180) % gives pi ans = 3.1416
+ deg2rad(60) % gives pi/3 ans = 1.0472
+
+ See also: angles2d, rad2deg
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 38
+Convert angle from degrees to radians
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 17
+distancePointEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1248
+ -- Function File: DIST = distancePointEdge (POINT, EDGE)
+ -- Function File: DIST = distancePointEdge (..., OPT)
+ -- Function File: [DIST POS]= distancePointEdge (...)
+ Minimum distance between a point and an edge
+
+ Return the euclidean distance between edge EDGE and point POINT.
+ EDGE has the form: [x1 y1 x2 y2], and POINT is [x y]. If EDGE is
+ Ne-by-4 and POINT is Np-by-2, then DIST is Np-by-Ne, where each
+ row contains the distance of each point to all the edges.
+
+ If OPT is true (or equivalent), the optput is cmpatible with the
+ original function:
+ `1'
+ If POINT is 1-by-2 array, the result is Ne-by-1 array
+ computed for each edge.
+
+ `2'
+ If EDGE is a 1-by-4 array, the result is Np-by-1 computed for
+ each point.
+
+ `3'
+ If both POINT and EDGE are array, they must have the same
+ number of rows, and the result is computed for each couple
+ `POINT(i,:),EDGE(i,:)'.
+
+ If the the second output argument POS is requested, the function
+ also returns the position of closest point on the edge. POS is
+ comprised between 0 (first point) and 1 (last point).
+
+ See also: edges2d, points2d, distancePoints, distancePointLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Minimum distance between a point and an edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 17
+distancePointLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 615
+ -- Function File: DIST = distancePointLine (POINT, LINE)
+ Minimum distance between a point and a line
+
+ D = distancePointLine(POINT, LINE) Return the euclidean distance
+ between line LINE and point POINT.
+
+ LINE has the form : [x0 y0 dx dy], and POINT is [x y].
+
+ If LINE is N-by-4 array, result is N-by-1 array computes for each
+ line.
+
+ If POINT is N-by-2, then result is computed for each point.
+
+ If both POINT and LINE are array, result is N-by-1, computed for
+ each corresponding point and line.
+
+ See also: lines2d, points2d, distancePoints, distancePointEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 44
+Minimum distance between a point and a line
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+distancePoints
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 826
+ -- Function File: D = distancePoints (P1, P2)
+ -- Function File: D = distancePoints (P1, P2, NORM)
+ -- Function File: D = distancePoints (..., 'diag')
+ Compute distance between two points.
+
+ Returns the Euclidean distance between points P1 and P2. If P1
+ and P2 are two arrays of points, result is a N1xN2 array
+ containing distance between each point of P1 and each point of P2.
+
+ Is NORM is given, computes distance using the specified norm.
+ NORM=2 corresponds to usual euclidean distance, NORM=1
+ corresponds to Manhattan distance, NORM=inf is assumed to
+ correspond to maximum difference in coordinate. Other values
+ (>0) can be specified.
+
+ When 'diag' is given, computes only distances between P1(i,:) and
+ P2(i,:).
+
+ See also: points2d, minDistancePoints
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Compute distance between two points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+drawArrow
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 686
+ -- Function File: H = drawArrow (X1, Y1, X2, Y2)
+ -- Function File: H = drawArrow ([ X1 Y1 X2 Y2])
+ -- Function File: H = drawArrow (..., L, W)
+ -- Function File: H = drawArrow (..., L, W,TYPE)
+ Draw an arrow on the current axis.
+
+ draw an arrow between the points (X1 Y1) and (X2 Y2). The points
+ can be given as a single array. L, W specify length and width of
+ the arrow.
+
+ Also specify arrow type. TYPE can be one of the following : 0:
+ draw only two strokes 1: fill a triangle .5: draw a half arrow
+ (try it to see ...)
+
+ Arguments can be single values or array of size [N*1]. In this
+ case, the function draws multiple arrows.
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 34
+Draw an arrow on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+drawBezierCurve
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1064
+ -- Function File: drawBezierCurve (POINTS)
+ -- Command: Function File drawBezierCurve (PP)
+ -- Command: Function File drawBezierCurve (..., PARAM, VALUE, ...)
+ -- Command: Function File H =drawBezierCurve (...)
+ Draw a cubic bezier curve defined by the control points POINTS.
+
+ With only one input argument, draws the Bezier curve defined by
+ the 4 control points stored in POINTS. POINTS is either a 4-by-2
+ array (vertical concatenation of point coordinates), or a 1-by-8
+ array (horizotnal concatenation of point coordinates). The curve
+ could be described by its polynomial (output of `cbezier2poly')
+ PP, which should be a 2-by-4 array.
+
+ The optional PARAM, VALUE pairs specify additional drawing
+ parameters, see the `plot' function for details. The specific
+ parameter 'discretization' with an integer associated value
+ defines the amount of points used to plot the curve. If the output
+ is requiered, the function returns the handle to the created
+ graphic object.
+
+ See also: cbezier2poly, plot
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 63
+Draw a cubic bezier curve defined by the control points POINTS.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+drawBox
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 388
+ -- Function File: H = drawBox (BOX)
+ -- Function File: H = drawBox (BOX, PARAM, VALUE, ...)
+ Draw a box defined by coordinate extents
+
+ Draws a box defined by its extent: BOX = [XMIN XMAX YMIN YMAX].
+ Addtional arguments are passed to function `plot'. If requested,
+ it returns the handle to the graphics object created.
+
+ See also: drawOrientedBox, drawRect, plot
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 41
+Draw a box defined by coordinate extents
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+drawCenteredEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1333
+ -- Function File: H = drawCenteredEdge (CENTER, L, THETA)
+ -- Function File: H = drawCenteredEdge (EDGE)
+ -- Function File: H = drawCenteredEdge (..., NAME,VALUE)
+ Draw an edge centered on a point.
+
+ drawCenteredEdge(CENTER, L, THETA) Draws an edge centered on
+ point CENTER, with length L, and orientation THETA (given in
+ degrees). Input arguments can also be arrays, that must all have
+ the same number odf rows.
+
+ drawCenteredEdge(EDGE) Concatenates edge parameters into a
+ single N-by-4 array, containing: [XC YV L THETA].
+
+ drawCenteredEdge(..., NAME, VALUE) Also specifies drawing
+ options by using one or several parameter name - value pairs
+ (see doc of plot function for details).
+
+ H = drawCenteredEdge(...) Returns handle(s) to the created
+ edges(s).
+
+ % Draw an ellipse with its two axes
+ figure(1); clf;
+ center = [50 40];
+ r1 = 30; r2 = 10;
+ theta = 20;
+ elli = [center r1 r2 theta];
+ drawEllipse(elli, 'linewidth', 2);
+ axis([0 100 0 100]); axis equal;
+ hold on;
+ edges = [center 2*r1 theta ; center 2*r2 theta+90];
+ drawCenteredEdge(edges, 'linewidth', 2, 'color', 'g');
+
+ See also: edges2d, drawEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 33
+Draw an edge centered on a point.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+drawCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1142
+ -- Function File: H = drawCircle (X0, Y0, R)
+ -- Function File: H = drawCircle (CIRCLE)
+ -- Function File: H = drawCircle (CENTER, RADIUS)
+ -- Function File: H = drawCircle (..., NSTEP)
+ -- Function File: H = drawCircle (..., NAME, VALUE)
+ Draw a circle on the current axis
+
+ drawCircle(X0, Y0, R); Draw the circle with center (X0,Y0) and
+ the radius R. If X0, Y0 and R are column vectors of the same
+ length, draw each circle successively.
+
+ drawCircle(CIRCLE); Concatenate all parameters in a Nx3 array,
+ where N is the number of circles to draw.
+
+ drawCircle(CENTER, RADIUS); Specify CENTER as Nx2 array, and
+ radius as a Nx1 array.
+
+ drawCircle(..., NSTEP); Specify the number of edges that will be
+ used to draw the circle. Default value is 72, creating an
+ approximation of one point for each 5 degrees.
+
+ drawCircle(..., NAME, VALUE); Specifies plotting options as pair
+ of parameters name/value. See plot documentation for details.
+
+ H = drawCircle(...); return handles to each created curve.
+
+ See also: circles2d, drawCircleArc, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 34
+Draw a circle on the current axis
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+drawCircleArc
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1004
+ -- Function File: H = drawCircleArc (XC, YC, R, START, END)
+ -- Function File: H = drawCircleArc (ARC)
+ -- Function File: H = drawCircleArc (..., PARAM, VALUE)
+ Draw a circle arc on the current axis
+
+ drawCircleArc(XC, YC, R, START, EXTENT); Draws circle with
+ center (XC, YC), with radius R, starting from angle START, and
+ with angular extent given by EXTENT. START and EXTENT angles are
+ given in degrees.
+
+ drawCircleArc(ARC); Puts all parameters into one single array.
+
+ drawCircleArc(..., PARAM, VALUE); specifies plot properties by
+ using one or several parameter name-value pairs.
+
+ H = drawCircleArc(...); Returns a handle to the created line
+ object.
+
+ % Draw a red thick circle arc
+ arc = [10 20 30 -120 240];
+ figure;
+ axis([-50 100 -50 100]);
+ hold on
+ drawCircleArc(arc, 'LineWidth', 3, 'Color', 'r')
+
+ See also: circles2d, drawCircle, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 38
+Draw a circle arc on the current axis
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+drawEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 902
+ -- Function File: H = drawEdge (X1, Y1, X2, Y2)
+ -- Function File: H = drawEdge ([X1 Y1 X2 Y2])
+ -- Function File: H = drawEdge ([X1 Y1], [X2 Y2])
+ -- Function File: H = drawEdge (X1, Y1, Z1, X2, Y2, Z2)
+ -- Function File: H = drawEdge ([X1 Y1 Z1 X2 Y2 Z2])
+ -- Function File: H = drawEdge ([X1 Y1 Z1], [X2 Y2 Z2])
+ -- Function File: H = drawEdge (..., OPT)
+ Draw an edge given by 2 points.
+
+ Draw an edge between the points (x1 y1) and (x2 y2). Data can be
+ bundled as an edge. The function supports 3D edges.
+ Arguments can be single values or array of size [Nx1]. In this
+ case, the function draws multiple edges. OPT, being a set of
+ pairwise options, can specify color, line width and so on. These
+ are passed to function `line'. The function returns handle(s)
+ to created edges(s).
+
+ See also: edges2d, drawCenteredEdge, drawLine, line
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 31
+Draw an edge given by 2 points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+drawEllipse
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1330
+ -- Function File: H = drawEllipse (ELLI)
+ -- Function File: H = drawEllipse (XC, YC, RA, RB)
+ -- Function File: H = drawEllipse (XC, YC, RA, RB, THETA)
+ -- Function File: H = drawEllipse (..., PARAM, VALUE)
+ Draw an ellipse on the current axis.
+
+ drawEllipse(ELLI); Draws the ellipse ELLI in the form [XC YC RA
+ RB THETA], with center (XC, YC), with main axis of half-length
+ RA and RB, and orientation THETA in degrees counted
+ counter-clockwise. Puts all parameters into one single array.
+
+ drawEllipse(XC, YC, RA, RB); drawEllipse(XC, YC, RA, RB, THETA);
+ Specifies ellipse parameters as separate arguments (old syntax).
+
+ drawEllipse(..., NAME, VALUE); Specifies drawing style of
+ ellipse, see the help of plot function.
+
+ H = drawEllipse(...); Also returns handles to the created line
+ objects.
+
+ -> Parameters can also be arrays. In this case, all arrays are
+ supposed to have the same size.
+
+ Example:
+ % Draw an ellipse centered in [50 50], with semi major axis length of
+ % 40, semi minor axis length of 20, and rotated by 30 degrees.
+ figure(1); clf; hold on;
+ drawEllipse([50 50 40 20 30]);
+ axis equal;
+
+ See also: ellipses2d, drawCircle, drawEllipseArc, ellipseAsPolygon
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Draw an ellipse on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+drawEllipseArc
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1338
+ -- Function File: H = drawEllipseArc (ARC)
+ Draw an ellipse arc on the current axis.
+
+ drawEllipseArc(ARC) draw ellipse arc specified by ARC. ARC has
+ the format: ARC = [XC YC A B THETA T1 T2] or: ARC = [XC
+ YC A B T1 T2] (isothetic ellipse) with center (XC, YC), main
+ axis of half-length A, second axis of half-length B, and ellipse
+ arc running from t1 to t2 (both in degrees, in Counter-Clockwise
+ orientation).
+
+ Parameters can also be arrays. In this case, all arrays are
+ suposed to have the same size...
+
+ % draw an ellipse arc: center = [10 20], radii = 50 and 30, theta = 45
+ arc = [10 20 50 30 45 -90 270];
+ figure;
+ axis([-50 100 -50 100]); axis equal;
+ hold on
+ drawEllipseArc(arc, 'color', 'r')
+
+ % draw another ellipse arc, between angles -60 and 70
+ arc = [10 20 50 30 45 -60 (60+70)];
+ figure;
+ axis([-50 100 -50 100]); axis equal;
+ hold on
+ drawEllipseArc(arc, 'LineWidth', 2);
+ ray1 = createRay([10 20], deg2rad(-60+45));
+ drawRay(ray1)
+ ray2 = createRay([10 20], deg2rad(70+45));
+ drawRay(ray2)
+
+ See also: ellipses2d, drawEllipse, drawCircleArc
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Draw an ellipse arc on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+drawLabels
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 673
+ -- Function File: drawLabels (X, Y, LBL)
+ -- Function File: drawLabels (POS, LBL)
+ -- Function File: drawLabels (..., NUMBERS, FORMAT)
+ Draw labels at specified positions.
+
+ DRAWLABELS(X, Y, LBL) draw labels LBL at position X and Y. LBL
+ can be either a string array, or a number array. In this case,
+ string are created by using sprintf function, with '%.2f' mask.
+
+ DRAWLABELS(POS, LBL) draw labels LBL at position specified by POS,
+ where POS is a N*2 int array.
+
+ DRAWLABELS(..., NUMBERS, FORMAT) create labels using sprintf
+ function, with the mask given by FORMAT (e. g. '%03d' or
+ '5.3f'), and the corresponding values.
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Draw labels at specified positions.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+drawLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 662
+ -- Function File: H = drawLine (LINE)
+ -- Function File: H = drawLine (LINE, PARAM,VALUE)
+ Draw the line on the current axis.
+
+ Draws the line LINE on the current axis, by using current axis to
+ clip the line. Extra PARAM,VALUE pairs are passed to the `line'
+ function. Returns a handle to the created line object. If
+ clipped line is not contained in the axis, the function returns
+ -1.
+
+ Example
+
+ figure; hold on; axis equal;
+ axis([0 100 0 100]);
+ drawLine([30 40 10 20]);
+ drawLine([30 40 20 -10], 'color', 'm', 'linewidth', 2);
+
+ See also: lines2d, createLine, drawEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 34
+Draw the line on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+drawOrientedBox
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 819
+ -- Function File: HB = drawOrientedBox (BOX)
+ -- Function File: HB = drawOrientedBox (..., PARAM, VALUE)
+ Draw centered oriented rectangle.
+
+ Syntax drawOrientedBox(BOX) drawOrientedBox(BOX,
+ 'PropertyName', propertyvalue, ...)
+
+ Description drawOrientedBox(OBOX) Draws an oriented rectangle
+ (or bounding box) on the current axis. OBOX is a 1-by-5 row
+ vector containing box center, dimension (length and width) and
+ orientation (in degrees): OBOX = [CX CY LENGTH WIDTH THETA].
+
+ When OBOX is a N-by-5 array, the N boxes are drawn.
+
+ HB = drawOrientedBox(...) Returns a handle to the created
+ graphic object(s). Object style can be modified using syntaw
+ like: set(HB, 'color', 'g', 'linewidth', 2);
+
+ See also: drawPolygon, drawRect, drawBox
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 33
+Draw centered oriented rectangle.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+drawParabola
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1510
+ -- Function File: H = drawParabola (PARABOLA)
+ -- Function File: H = drawParabola (PARABOLA, T)
+ -- Function File: H = drawParabola (..., PARAM, VALUE)
+ Draw a parabola on the current axis.
+
+ drawParabola(PARABOLA); Draws a vertical parabola, defined by
+ its vertex and its parameter. Such a parabola admits a vertical
+ axis of symetry.
+
+ The algebraic equation of parabola is given by: (Y - YV) = A
+ * (X - VX)^2 Where XV and YV are vertex coordinates and A is
+ parabola parameter.
+
+ A parametric equation of parabola is given by: x(t) = t + VX;
+ y(t) = A * t^2 + VY;
+
+ PARABOLA can also be defined by [XV YV A THETA], with theta being
+ the angle of rotation of the parabola (in degrees and
+ Counter-Clockwise).
+
+ drawParabola(PARABOLA, T); Specifies which range of 't' are used
+ for drawing parabola. If T is an array with only two values, the
+ first and the last values are used as interval bounds, and
+ several values are distributed within this interval.
+
+ drawParabola(..., NAME, VALUE); Can specify one or several
+ graphical options using parameter name-value pairs.
+
+ H = drawParabola(...); Returns an handle to the created
+ graphical object.
+
+ Example:
+ figure(1); clf; hold on;
+ drawParabola([50 50 .2 30]);
+ drawParabola([50 50 .2 30], [-1 1], 'color', 'r', 'linewidth', 2);
+ axis equal;
+
+ See also: drawCircle, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Draw a parabola on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+drawPoint
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 429
+ -- Function File: H = drawPoint (X, Y)
+ -- Function File: H = drawPoint (COORD)
+ -- Function File: H = drawPoint (..., OPT)
+ Draw the point on the axis.
+
+ Draws points defined by coordinates X and YY. X and Y should be
+ array the same size. Coordinates can be packed coordinates in a
+ single [N*2] array COORD. Options OPT are passed to the `plot'
+ function.
+
+ See also: points2d, clipPoints
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 27
+Draw the point on the axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+drawRay
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 396
+ -- Function File: H = drawRay (RAY)
+ -- Function File: H = drawRay (RAY, PARAM, VALUE)
+ Draw a ray on the current axis.
+
+ With RAY having the syntax: [x0 y0 dx dy], draws the ray starting
+ from point (x0 y0) and going to direction (dx dy), clipped with
+ the current window axis. PARAM, VALUE pairs are passed to
+ function `line'.
+
+ See also: rays2d, drawLine, line
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 31
+Draw a ray on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+drawRect
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 673
+ -- Function File: R = drawRect (X, Y, W, H)
+ -- Function File: R = drawRect (X, Y, W, H, THETA)
+ -- Function File: R = drawRect (COORD)
+ Draw rectangle on the current axis.
+
+ r = DRAWRECT(x, y, w, h) draw rectangle with width W and height H,
+ at position (X, Y). the four corners of rectangle are then :
+ (X, Y), (X+W, Y), (X, Y+H), (X+W, Y+H).
+
+ r = DRAWRECT(x, y, w, h, theta) also specifies orientation for
+ rectangle. Theta is given in degrees.
+
+ r = DRAWRECT(coord) is the same as DRAWRECT(X,Y,W,H), but all
+ parameters are packed into one array, whose dimensions is 4*1 or
+ 5*1.
+
+ See also: drawBox, drawOrientedBox
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Draw rectangle on the current axis.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+drawShape
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 823
+ -- Function File: drawShape (TYPE, PARAM)
+ -- Function File: drawShape (..., OPTION)
+ Draw various types of shapes (circles, polygons...).
+
+ drawShape(TYPE, PARAM) Draw the shape of type TYPE, specified by
+ given parameter PARAM. TYPE can be one of 'circle', 'ellipse',
+ 'rect', 'polygon', 'curve' PARAM depend on the type. For
+ example, if TYPE is 'circle', PARAM will contain [x0 y0 R].
+
+ Examples :
+ drawShape('circle', [20 10 30]);
+ Draw circle centered on [20 10] with radius 10.
+ drawShape('rect', [20 20 40 10 pi/3]);
+ Draw rectangle centered on [20 20] with length 40 and width 10, and
+ oriented pi/3 wrt axis Ox.
+
+ drawShape(..., OPTION) also specifies drawing options. OPTION
+ can be 'draw' (default) or 'fill'.
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 48
+Draw various types of shapes (circles, polygons.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+edgeAngle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 520
+ -- Function File: THETA = edgeAngle(EDGE)
+ Return angle of edge
+
+ A = edgeAngle(EDGE) Returns the angle between horizontal,
+ right-axis and the edge EDGE. Angle is given in radians,
+ between 0 and 2*pi, in counter-clockwise direction. Notation
+ for edge is [x1 y1 x2 y2] (coordinates of starting and ending
+ points).
+
+ Example p1 = [10 20]; p2 = [30 40]; rad2deg(edgeAngle([p1
+ p2])) ans = 45
+
+ See also: edges2d, angles2d, edgeAngle, lineAngle, edgeLength
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 21
+Return angle of edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+edgeLength
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 436
+ -- Function File: LEN = edgeLength (EDGE)
+ Return length of an edge
+
+ L = edgeLength(EDGE); Returns the length of an edge, with
+ parametric representation: [x1 y1 x2 y2].
+
+ The function also works for several edges, in this case input is a
+ [N*4] array, containing parametric representation of each edge,
+ and output is a [N*1] array containing length of each edge.
+
+ See also: edges2d, edgeAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 25
+Return length of an edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+edgePosition
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1194
+ -- Function File: D = edgePosition (POINT, EDGE)
+ Return position of a point on an edge
+
+ POS = edgePosition(POINT, EDGE); Computes position of point
+ POINT on the edge EDGE, relative to the position of edge
+ vertices. EDGE has the form [x1 y1 x2 y2], POINT has the form
+ [x y], and is assumed to belong to edge. The position POS has
+ meaning: POS<0: POINT is located before the first vertex
+ POS=0: POINT is located on the first vertex 0<POS<1: POINT
+ is located between the 2 vertices (on the edge) POS=1:
+ POINT is located on the second vertex POS<0: POINT is
+ located after the second vertex
+
+ POS = edgePosition(POINT, EDGES); If EDGES is an array of NL
+ edges, return NL positions, corresponding to each edge.
+
+ POS = edgePosition(POINTS, EDGE); If POINTS is an array of NP
+ points, return NP positions, corresponding to each point.
+
+ POS = edgePosition(POINTS, EDGES); If POINTS is an array of NP
+ points and edgeS is an array of NL edges, return an array of [NP
+ NL] position, corresponding to each couple point-edge.
+
+ See also: edges2d, createEdge, onEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 38
+Return position of a point on an edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+edgeToLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 392
+ -- Function File: LINE = edgeToLine (EDGE)
+ Convert an edge to a straight line
+
+ LINE = edgeToLine(EDGE); Returns the line containing the edge
+ EDGE.
+
+ Example edge = [2 3 4 5]; line = edgeToLine(edge);
+ figure(1); hold on; axis([0 10 0 10]); drawLine(line,
+ 'color', 'g') drawEdge(edge, 'linewidth', 2)
+
+ See also: edges2d, lines2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Convert an edge to a straight line
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+edges2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 492
+ -- Function File: edges2d ()
+ Description of functions operating on planar edges
+
+ An edge is represented by the corodinate of its end points: EDGE
+ = [X1 Y1 X2 Y2];
+
+ A set of edges is represented by a N*4 array, each row
+ representing an edge.
+
+ See also: lines2d, rays2d, points2d createEdge, edgeAngle,
+ edgeLength, edgeToLine, midPoint intersectEdges,
+ intersectLineEdge, isPointOnEdge clipEdge, transformEdge
+ drawEdge, drawCenteredEdge
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 51
+Description of functions operating on planar edges
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+ellipse2cov
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 672
+ -- Function File: K = ellipse2cov (ELLI)
+ -- Function File: K = ellipse2cov (RA, RB)
+ -- Function File: K = ellipse2cov (..., THETA)
+ Calculates covariance matrix from ellipse.
+
+ If only one input is given, ELLI must define an ellipse as
+ described in `ellipses2d'. If two inputs are given, RA and RB
+ define the half-lenght of the axes. If a third input is given,
+ THETA must be the angle of rotation of the ellipse in radians, and
+ in counter-clockwise direction.
+
+ The output K contains the covariance matrix define by the ellipse.
+
+ Run `demo ellipse2cov' to see an example.
+
+ See also: ellipses2d, cov2ellipse, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 42
+Calculates covariance matrix from ellipse.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+ellipseAsPolygon
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 731
+ -- Function File: P = ellipseAsPolygon (ELL, N)
+ Convert an ellipse into a series of points
+
+ P = ellipseAsPolygon(ELL, N); converts ELL given as [x0 y0 a b]
+ or [x0 y0 a b theta] into a polygon with N edges. The result P
+ is (N+1)-by-2 array containing coordinates of the N+1 vertices
+ of the polygon. The resulting polygon is closed, i.e. the last
+ point is the same as the first one.
+
+ P = ellipseAsPolygon(ELL); Use a default number of edges equal
+ to 72. This result in one piont for each 5 degrees.
+
+ [X Y] = ellipseAsPolygon(...); Return the coordinates o
+ fvertices in two separate arrays.
+
+ See also: ellipses2d, circleAsPolygon, rectAsPolygon, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 43
+Convert an ellipse into a series of points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+ellipses2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 377
+ -- Function File: ellipses2d ()
+ Description of functions operating on ellipses.
+
+ Ellipses are represented by their center, the length of their 2
+ semi-axes length, and their angle from the Ox direction (in
+ degrees). E = [XC YC A B THETA];
+
+ See also: circles2d, inertiaEllipse, isPointInEllipse,
+ ellipseAsPolygon drawEllipse, drawEllipseArc
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 47
+Description of functions operating on ellipses.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+enclosingCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 462
+ -- Function File: CIRCLE = enclosingCircle (PTS)
+ Find the minimum circle enclosing a set of points.
+
+ CIRCLE = enclosingCircle(POINTS); compute cirlce CIRCLE=[xc yc
+ r] which enclose all points POINTS given as an [Nx2] array.
+
+ Rewritten from a file from Yazan Ahed which was
+ rewritten from a Java applet by Shripad Thite :
+ `http://heyoka.cs.uiuc.edu/~thite/mincircle/'
+
+ See also: circles2d, points2d, boxes2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 50
+Find the minimum circle enclosing a set of points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 20
+fitAffineTransform2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 397
+ -- Function File: T = fitAffineTransform2d (PTS1, PTS2)
+ Fit an affine transform using two point sets.
+
+ Example
+
+ N = 10;
+ pts = rand(N, 2)*10;
+ trans = createRotation(3, 4, pi/4);
+ pts2 = transformPoint(pts, trans);
+ pts3 = pts2 + randn(N, 2)*2;
+ fitted = fitAffineTransform2d(pts, pts2)
+
+ See also: transforms2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Fit an affine transform using two point sets.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+geom2d_Contents
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8910
+ -- Function File: geom2d_Contents ()
+ Geometry 2D Toolbox Version 1.2.0 21-Oct-2011 .
+
+ Library to handle and visualize geometric primitives such as
+ points, lines, circles and ellipses, polygons...
+
+ The goal is to provide a low-level library for manipulating
+ geometrical primitives, making easier the development of more
+ complex geometric algorithms.
+
+ Most functions works for planar shapes, but some ones have been
+ extended to 3D or to any dimension.
+
+ Points points2d - Description of functions operating
+ on points clipPoints - Clip a set of points by a box
+ centroid - Compute centroid (center of mass) of a set
+ of points midPoint - Middle point of two points or
+ of an edge isCounterClockwise - Compute relative orientation
+ of 3 points polarPoint - Create a point from polar
+ coordinates (rho + theta) angle2Points - Compute
+ horizontal angle between 2 points angle3Points - Compute
+ oriented angle made by 3 points angleSort - Sort
+ points in the plane according to their angle to origin
+ distancePoints - Compute distance between two points
+ minDistancePoints - Minimal distance between several points
+ transformPoint - Transform a point with an affine transform
+ drawPoint - Draw the point on the axis.
+
+ Vectors vectors2d - Description of functions
+ operating on plane vectors createVector - Create a
+ vector from two points vectorNorm - Compute norm of a
+ vector, or of a set of vectors vectorAngle - Angle of a
+ vector, or between 2 vectors normalizeVector - Normalize a
+ vector to have norm equal to 1 isPerpendicular - Check
+ orthogonality of two vectors isParallel - Check
+ parallelism of two vectors transformVector - Transform a
+ vector with an affine transform rotateVector - Rotate a
+ vector by a given angle
+
+ Straight lines lines2d - Description of functions
+ operating on planar lines createLine - Create a
+ straight line from 2 points, or from other inputs medianLine
+ - Create a median line between two points cartesianLine
+ - Create a straight line from cartesian equation coefficients
+ orthogonalLine - Create a line orthogonal to another one.
+ parallelLine - Create a line parallel to another one.
+ intersectLines - Return all intersection points of N lines
+ in 2D lineAngle - Computes angle between two straight
+ lines linePosition - Position of a point on a line
+ lineFit - Fit a straight line to a set of points
+ clipLine - Clip a line with a box reverseLine
+ - Return same line but with opposite orientation transformLine
+ - Transform a line with an affine transform drawLine
+ - Draw the line on the current axis
+
+ Edges (line segments between 2 points) edges2d -
+ Description of functions operating on planar edges createEdge
+ - Create an edge between two points, or from a line
+ edgeToLine - Convert an edge to a straight line
+ edgeAngle - Return angle of edge edgeLength
+ - Return length of an edge midPoint - Middle point
+ of two points or of an edge edgePosition - Return
+ position of a point on an edge clipEdge - Clip an
+ edge with a rectangular box reverseEdge - Intervert the
+ source and target vertices of edge intersectEdges - Return
+ all intersections between two set of edges intersectLineEdge
+ - Return intersection between a line and an edge transformEdge
+ - Transform an edge with an affine transform drawEdge
+ - Draw an edge given by 2 points drawCenteredEdge - Draw
+ an edge centered on a point
+
+ Rays rays2d - Description of functions operating
+ on planar rays createRay - Create a ray (half-line),
+ from various inputs bisector - Return the bisector
+ of two lines, or 3 points clipRay - Clip a ray with
+ a box drawRay - Draw a ray on the current axis
+
+ Relations between points and lines distancePointEdge -
+ Minimum distance between a point and an edge distancePointLine
+ - Minimum distance between a point and a line projPointOnLine
+ - Project of a point orthogonally onto a line pointOnLine
+ - Create a point on a line at a given position on the line
+ isPointOnLine - Test if a point belongs to a line
+ isPointOnEdge - Test if a point belongs to an edge
+ isPointOnRay - Test if a point belongs to a ray
+ isLeftOriented - Test if a point is on the left side of a
+ line
+
+ Circles circles2d - Description of functions
+ operating on circles createCircle - Create a circle from
+ 2 or 3 points createDirectedCircle - Create a directed circle
+ intersectCircles - Intersection points of two circles
+ intersectLineCircle - Intersection point(s) of a line and a circle
+ circleAsPolygon - Convert a circle into a series of points
+ circleArcAsCurve - Convert a circle arc into a series of points
+ isPointInCircle - Test if a point is located inside a given
+ circle isPointOnCircle - Test if a point is located on a
+ given circle. enclosingCircle - Find the minimum circle
+ enclosing a set of points. radicalAxis - Compute the
+ radical axis (or radical line) of 2 circles drawCircle
+ - Draw a circle on the current axis drawCircleArc - Draw
+ a circle arc on the current axis
+
+ Ellipses ellipses2d - Description of functions
+ operating on ellipses inertiaEllipse - Inertia ellipse of
+ a set of points isPointInEllipse - Check if a point is
+ located inside a given ellipse ellipseAsPolygon - Convert an
+ ellipse into a series of points drawEllipse - Draw an
+ ellipse on the current axis drawEllipseArc - Draw an
+ ellipse arc on the current axis
+
+ Geometric transforms transforms2d - Description of
+ functions operating on transforms createTranslation - Create
+ the 3*3 matrix of a translation createRotation - Create
+ the 3*3 matrix of a rotation createScaling - Create the
+ 3*3 matrix of a scaling in 2 dimensions createHomothecy -
+ Create the the 3x3 matrix of an homothetic transform
+ createBasisTransform - Compute matrix for transforming a basis
+ into another basis createLineReflection - Create the the 3x3
+ matrix of a line reflection fitAffineTransform2d - Fit an affine
+ transform using two point sets
+
+ Angles angles2d - Description of functions for
+ manipulating angles normalizeAngle - Normalize an angle
+ value within a 2*PI interval angleAbsDiff - Absolute
+ difference between two angles angleDiff - Difference
+ between two angles deg2rad - Convert angle from
+ degrees to radians rad2deg - Convert angle from
+ radians to degrees
+
+ Boxes boxes2d - Description of functions operating
+ on bounding boxes intersectBoxes - Intersection of two
+ bounding boxes mergeBoxes - Merge two boxes, by
+ computing their greatest extent randomPointInBox - Generate
+ random point within a box drawBox - Draw a box
+ defined by coordinate extents
+
+ Various drawing functions drawBezierCurve - Draw a cubic
+ bezier curve defined by 4 control points drawParabola -
+ Draw a parabola on the current axis drawOrientedBox - Draw
+ centered oriented rectangle drawRect - Draw
+ rectangle on the current axis drawArrow - Draw an
+ arrow on the current axis drawLabels - Draw labels at
+ specified positions drawShape - Draw various types of
+ shapes (circles, polygons...)
+
+ Other shapes squareGrid - Generate equally spaces
+ points in plane. hexagonalGrid - Generate hexagonal grid
+ of points in the plane. triangleGrid - Generate
+ triangular grid of points in the plane. crackPattern -
+ Create a (bounded) crack pattern tessellation crackPattern2
+ - Create a (bounded) crack pattern tessellation
+
+ Credits: * function 'enclosingCircle' rewritten from a file from
+ Yazan Ahed , available on Matlab File Exchange
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 30
+Geometry 2D Toolbox Version 1.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+hexagonalGrid
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 458
+ -- Function File: PTS = hexagonalGrid (BOUNDS, ORIGIN, SIZE)
+ Generate hexagonal grid of points in the plane.
+
+ usage PTS = hexagonalGrid(BOUNDS, ORIGIN, SIZE) generate
+ points, lying in the window defined by BOUNDS (=[xmin ymin xmax
+ ymax]), starting from origin with a constant step equal to size.
+ SIZE is constant and is equals to the length of the sides of each
+ hexagon.
+
+ TODO: add possibility to use rotated grid
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 47
+Generate hexagonal grid of points in the plane.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+inertiaEllipse
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1098
+ -- Function File: ELL = inertiaEllipse (PTS)
+ Inertia ellipse of a set of points
+
+ ELL = inertiaEllipse(PTS); where PTS is a N*2 array containing
+ coordinates of N points, computes the inertia ellispe of the set
+ of points.
+
+ The result has the form: ELL = [XC YC A B THETA], with XC and
+ YC being the center of mass of the point set, A and B are the
+ lengths of the inertia ellipse (see below), and THETA is the angle
+ of the main inertia axis with the horizontal (counted in degrees
+ between 0 and 180). A and B are the standard deviations of the
+ point coordinates when ellipse is aligned with the inertia axes.
+
+ pts = randn(100, 2);
+ pts = transformPoint(pts, createScaling(5, 2));
+ pts = transformPoint(pts, createRotation(pi/6));
+ pts = transformPoint(pts, createTranslation(3, 4));
+ ell = inertiaEllipse(pts);
+ figure(1); clf; hold on;
+ drawPoint(pts);
+ drawEllipse(ell, 'linewidth', 2, 'color', 'r');
+
+ See also: ellipses2d, drawEllipse
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Inertia ellipse of a set of points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+intersectBoxes
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 303
+ -- Function File: BOX = intersectBoxes (BOX1, BOX2)
+ Intersection of two bounding boxes.
+
+ Example
+
+ box1 = [5 20 5 30];
+ box2 = [0 15 0 15];
+ intersectBoxes(box1, box2)
+ ans =
+ 5 15 5 15
+
+ See also: boxes2d, drawBox, mergeBoxes
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Intersection of two bounding boxes.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+intersectCircles
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1236
+ -- Function File: POINTS = intersectCircles (CIRCLE1, CIRCLE2)
+ Intersection points of two circles.
+
+ POINTS = intersectCircles(CIRCLE1, CIRCLE2) Computes the
+ intersetion point of the two circles CIRCLE1 and CIRCLE1. Both
+ circles are given with format: [XC YC R], with (XC,YC) being the
+ coordinates of the center and R being the radius. POINTS is a
+ 2-by-2 array, containing coordinate of an intersection point on
+ each row. In the case of tangent circles, the intersection is
+ returned twice. It can be simplified by using the 'unique'
+ function.
+
+ Example % intersection points of two distant circles c1 =
+ [0 0 10]; c2 = [10 0 10]; pts = intersectCircles(c1, c2)
+ pts = 5 -8.6603 5 8.6603
+
+ % intersection points of two tangent circles c1 = [0 0 10];
+ c2 = [20 0 10]; pts = intersectCircles(c1, c2) pts =
+ 10 0 10 0 pts2 = unique(pts, 'rows') pts2 =
+ 10 0
+
+ References
+ http://local.wasp.uwa.edu.au/~pbourke/geometry/2circle/
+ http://mathworld.wolfram.com/Circle-CircleIntersection.html
+
+ See also: circles2d, intersectLineCircle, radicalAxis
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Intersection points of two circles.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+intersectEdges
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 739
+ -- Function File: POINT = intersectEdges (EDGE1, EDGE2)
+ Return all intersections between two set of edges
+
+ P = intersectEdges(E1, E2); returns the intersection point of
+ lines L1 and L2. E1 and E2 are 1-by-4 arrays, containing
+ parametric representation of each edge (in the form [x1 y1 x2
+ y2], see 'createEdge' for details).
+
+ In case of colinear edges, returns [Inf Inf]. In case of
+ parallel but not colinear edges, returns [NaN NaN].
+
+ If each input is [N*4] array, the result is a [N*2] array
+ containing intersections of each couple of edges. If one of
+ the input has N rows and the other 1 row, the result is a [N*2]
+ array.
+
+ See also: edges2d, intersectLines
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 50
+Return all intersections between two set of edges
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 19
+intersectLineCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 772
+ -- Function File: POINTS = intersectLineCircle (LINE, CIRCLE)
+ Intersection point(s) of a line and a circle
+
+ INTERS = intersectLineCircle(LINE, CIRCLE); Returns a 2-by-2
+ array, containing on each row the coordinates of an intersection
+ point. If the line and circle do not intersect, the result is
+ filled with NaN.
+
+ Example % base point center = [10 0]; % create vertical line
+ l1 = [center 0 1]; % circle c1 = [center 5]; pts =
+ intersectLineCircle(l1, c1) pts = 10 -5 10 5
+ % draw the result figure; clf; hold on; axis([0 20 -10 10]);
+ drawLine(l1); drawCircle(c1); drawPoint(pts, 'rx'); axis
+ equal;
+
+ See also: lines2d, circles2d, intersectLines, intersectCircles
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Intersection point(s) of a line and a circle
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 17
+intersectLineEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 868
+ -- Function File: POINT = intersecLineEdge (LINE, EDGE)
+ Return intersection between a line and an edge.
+
+ Returns the intersection point of lines LINE and edge EDGE.
+ LINE is a 1x4 array containing parametric representation of the
+ line (in the form [x0 y0 dx dy], see `createLine' for details).
+ EDGE is a 1x4 array containing coordinates of first and second
+ point (in the form [x1 y1 x2 y2], see `createEdge' for details).
+
+ In case of colinear line and edge, returns [Inf Inf]. If line
+ does not intersect edge, returns [NaN NaN].
+
+ If each input is [N*4] array, the result is a [N*2] array
+ containing intersections for each couple of edge and line. If
+ one of the input has N rows and the other 1 row, the result is a
+ [N*2] array.
+
+ See also: lines2d, edges2d, intersectEdges, intersectLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 47
+Return intersection between a line and an edge.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+intersectLines
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1143
+ -- Function File: POINT = intersectLines (LINE1, LINE2)
+ -- Function File: POINT = intersectLines (LINE1, LINE2,EPS)
+ Return all intersection points of N lines in 2D.
+
+ Returns the intersection point of lines LINE1 and LINE2. LINE1
+ and LINE2 are [1*4] arrays, containing parametric representation
+ of each line (in the form [x0 y0 dx dy], see `createLine' for
+ details).
+
+ In case of colinear lines, returns [Inf Inf]. In case of
+ parallel but not colinear lines, returns [NaN NaN].
+
+ If each input is [N*4] array, the result is a [N*2] array
+ containing intersections of each couple of lines. If one of
+ the input has N rows and the other 1 row, the result is a [N*2]
+ array.
+
+ A third input argument specifies the tolerance for detecting
+ parallel lines. Default is 1e-14.
+
+ Example
+
+ line1 = createLine([0 0], [10 10]);
+ line2 = createLine([0 10], [10 0]);
+ point = intersectLines(line1, line2)
+ point =
+ 5 5
+
+ See also: lines2d, edges2d, intersectEdges, intersectLineEdge,
+ intersectLineCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 48
+Return all intersection points of N lines in 2D.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 18
+isCounterClockwise
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1212
+ -- Function File: CCW = isCounterClockwise (P1, P2, P3)
+ -- Function File: CCW = isCounterClockwise (P1, P2, P3,TOL)
+ Compute relative orientation of 3 points
+
+ Computes the orientation of the 3 points. The returns is: +1 if
+ the path P1-> P2-> P3 turns Counter-Clockwise (i.e., the point P3
+ is located "on the left" of the line P1- P2) -1 if the
+ path turns Clockwise (i.e., the point P3 lies "on the right"
+ of the line P1- P2) 0 if the point P3 is located on the line
+ segment [ P1 P2].
+
+ This function can be used in more complicated algorithms:
+ detection of line segment intersections, convex hulls, point in
+ triangle...
+
+ CCW = isCounterClockwise( P1, P2, P3, EPS); Specifies the
+ threshold used for detecting colinearity of the 3 points.
+ Default value is 1e-12 (absolute).
+
+ Example
+
+ isCounterClockwise([0 0], [10 0], [10 10])
+ ans =
+ 1
+ isCounterClockwise([0 0], [0 10], [10 10])
+ ans =
+ -1
+ isCounterClockwise([0 0], [10 0], [5 0])
+ ans =
+ 0
+
+ See also: points2d, isPointOnLine, isPointInTriangle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 41
+Compute relative orientation of 3 points
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+isLeftOriented
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 343
+ -- Function File: B = isLeftOriented (POINT, LINE)
+ Test if a point is on the left side of a line
+
+ B = isLeftOriented(POINT, LINE); Returns TRUE if the point lies
+ on the left side of the line with respect to the line direction.
+
+ See also: lines2d, points2d, isCounterClockwise, isPointOnLine,
+ distancePointLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 46
+Test if a point is on the left side of a line
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+isParallel
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 757
+ -- Function File: B = isParallel (V1, V2)
+ -- Function File: B = isParallel (V1, V2,TOL)
+ Check parallelism of two vectors
+
+ V1 and V2 are 2 row vectors of length Nd, Nd being the dimension,
+ returns `true' if the vectors are parallel, and `false' otherwise.
+
+ Also works when V1 and V2 are two [NxNd] arrays with same number of
+ rows. In this case, return a [Nx1] array containing `true' at the
+ positions of parallel vectors.
+
+ TOL specifies the accuracy of numerical computation. Default value
+ is 1e-14.
+
+ Example
+
+ isParallel([1 2], [2 4])
+ ans =
+ 1
+ isParallel([1 2], [1 3])
+ ans =
+ 0
+
+ See also: vectors2d, isPerpendicular, lines2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 33
+Check parallelism of two vectors
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+isPerpendicular
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 791
+ -- Function File: B = isPerpendicular (V1, V2)
+ -- Function File: B = isPerpendicula (V1, V2,TOL)
+ heck orthogonality of two vectors.
+
+ V1 and V2 are 2 row vectors of length Nd, Nd being the dimension,
+ returns `true' if the vectors are perpendicular, and `false'
+ otherwise.
+
+ Also works when V1 and V2 are two [NxNd] arrays with same number of
+ rows. In this case, return a [Nx1] array containing `true' at the
+ positions of parallel vectors.
+
+ TOL specifies the accuracy of numerical computation. Default value
+ is 1e-14.
+
+ Example
+
+ isPerpendicular([1 2 0], [0 0 2])
+ ans =
+ 1
+ isPerpendicular([1 2 1], [1 3 2])
+ ans =
+ 0
+
+ See also: vectors2d, isParallel, lines2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 34
+heck orthogonality of two vectors.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+isPointInCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 578
+ -- Function File: B = isPointInCircle (POINT, CIRCLE)
+ Test if a point is located inside a given circle
+
+ B = isPointInCircle(POINT, CIRCLE) Returns true if point is
+ located inside the circle, i.e. if distance to circle center is
+ lower than the circle radius.
+
+ B = isPointInCircle(POINT, CIRCLE, TOL) Specifies the tolerance
+ value
+
+ Example: isPointInCircle([1 0], [0 0 1]) isPointInCircle([0
+ 0], [0 0 1]) returns true, whereas isPointInCircle([1 1], [0 0
+ 1]) return false
+
+ See also: circles2d, isPointOnCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 49
+Test if a point is located inside a given circle
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+isPointInEllipse
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 599
+ -- Function File: B = isPointInellipse (POINT, ELLIPSE)
+ Check if a point is located inside a given ellipse
+
+ B = isPointInEllipse(POINT, ELLIPSE) Returns true if point is
+ located inside the given ellipse.
+
+ B = isPointInEllipse(POINT, ELLIPSE, TOL) Specifies the
+ tolerance value
+
+ Example: isPointInEllipse([1 0], [0 0 2 1 0]) ans = 1
+ isPointInEllipse([0 0], [0 0 2 1 0]) ans = 1
+ isPointInEllipse([1 1], [0 0 2 1 0]) ans = 0
+ isPointInEllipse([1 1], [0 0 2 1 30]) ans = 1
+
+ See also: ellipses2d, isPointInCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 51
+Check if a point is located inside a given ellipse
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+isPointOnCircle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 548
+ -- Function File: B = isPointOnCircle (POINT, CIRCLE)
+ Test if a point is located on a given circle.
+
+ B = isPointOnCircle(POINT, CIRCLE) return true if point is
+ located on the circle, i.e. if the distance to the circle center
+ equals the radius up to an epsilon value.
+
+ B = isPointOnCircle(POINT, CIRCLE, TOL) Specifies the tolerance
+ value.
+
+ Example: isPointOnCircle([1 0], [0 0 1]) returns true, whereas
+ isPointOnCircle([1 1], [0 0 1]) return false
+
+ See also: circles2d, isPointInCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Test if a point is located on a given circle.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+isPointOnEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1084
+ -- Function File: B = isPointOnEdge (POINT, EDGE)
+ -- Function File: B = isPointOnEdge (POINT, EDGE, TOL)
+ -- Function File: B = isPointOnEdge (POINT, EDGEARRAY)
+ -- Function File: B = isPointOnEdge (POINTARRAY, EDGEARRAY)
+ Test if a point belongs to an edge.
+
+ with POINT being [xp yp], and EDGE being [x1 y1 x2 y2], returns
+ TRUE if the point is located on the edge, and FALSE otherwise.
+
+ Specify an optilonal tolerance value TOL. The tolerance is given
+ as a fraction of the norm of the edge direction vector. Default
+ is 1e-14.
+
+ When one of the inputs has several rows, return the result of the
+ test for each element of the array tested against the single
+ parameter.
+
+ When both POINTARRAY and EDGEARRAY have the same number of rows,
+ returns a column vector with the same number of rows. When the
+ number of rows are different and both greater than 1, returns a
+ Np-by-Ne matrix of booleans, containing the result for each couple
+ of point and edge.
+
+ See also: edges2d, points2d, isPointOnLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 35
+Test if a point belongs to an edge.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+isPointOnLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 473
+ -- Function File: B = isPointOnLine (POINT, LINE)
+ Test if a point belongs to a line
+
+ B = isPointOnLine(POINT, LINE) with POINT being [xp yp], and
+ LINE being [x0 y0 dx dy]. Returns 1 if point lies on the line,
+ 0 otherwise.
+
+ If POINT is an N*2 array of points, B is a N*1 array of booleans.
+
+ If LINE is a N*4 array of line, B is a 1*N array of booleans.
+
+ See also: lines2d, points2d, isPointOnEdge, isPointOnRay,
+ angle3Points
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 34
+Test if a point belongs to a line
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+isPointOnRay
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 393
+ -- Function File: B = isPointOnRay (POINT, RAY)
+ -- Function File: B = isPointOnRay (POINT, RAY, TOL)
+ Test if a point belongs to a ray
+
+ B = isPointOnRay(POINT, RAY); Returns `true' if point POINT
+ belongs to the ray RAY. POINT is given by [x y] and RAY by [x0
+ y0 dx dy]. TOL gives the tolerance for the calculations.
+
+ See also: rays2d, points2d, isPointOnLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 33
+Test if a point belongs to a ray
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+lineAngle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 527
+ -- Function File: THETA = lineAngle(varargin)
+ Computes angle between two straight lines
+
+ A = lineAngle(LINE); Returns the angle between horizontal,
+ right-axis and the given line. Angle is fiven in radians,
+ between 0 and 2*pi, in counter-clockwise direction.
+
+ A = lineAngle(LINE1, LINE2); Returns the directed angle between
+ the two lines. Angle is given in radians between 0 and 2*pi, in
+ counter-clockwise direction.
+
+ See also: lines2d, angles2d, createLine, normalizeAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 42
+Computes angle between two straight lines
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+linePosition
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 890
+ -- Function File: POS = linePosition (POINT, LINE)
+ Position of a point on a line.
+
+ Computes position of point POINT on the line LINE, relative to
+ origin point and direction vector of the line. LINE has the
+ form [x0 y0 dx dy], POINT has the form [x y], and is assumed to
+ belong to line.
+
+ If LINE is an array of NL lines, return NL positions,
+ corresponding to each line.
+
+ If POINT is an array of NP points, return NP positions,
+ corresponding to each point.
+
+ If POINT is an array of NP points and LINES is an array of NL
+ lines, return an array of [NP NL] position, corresponding to
+ each couple point-line.
+
+ Example
+
+ line = createLine([10 30], [30 90]);
+ linePosition([20 60], line)
+ ans =
+ .5
+
+ See also: lines2d, createLine, projPointOnLine, isPointOnLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 30
+Position of a point on a line.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+lines2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 996
+ -- Function File: lines2d ()
+ Description of functions operating on planar lines.
+
+ The term 'line' refers to a planar straight line, which is an
+ unbounded curve. Line segments defined between 2 points, which
+ are bounded, are called 'edge', and are presented in file
+ 'edges2d'.
+
+ A straight line is defined by a point (its origin), and a vector
+ (its direction). The different parameters are bundled into a row
+ vector: LINE = [x0 y0 dx dy];
+
+ A line contains all points (x,y) such that: x = x0 + t*dx
+ y = y0 + t*dy; for all t between -infinity and +infinity.
+
+ See also: points2d, vectors2d, edges2d, rays2d createLine,
+ cartesianLine, medianLine, edgeToLine orthogonalLine,
+ parallelLine, bisector, radicalAxis lineAngle, linePosition,
+ projPointOnLine isPointOnLine, distancePointLine, isLeftOriented
+ intersectLines, intersectLineEdge, clipLine invertLine,
+ transformLine, drawLine lineFit
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 51
+Description of functions operating on planar lines.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+medianLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1284
+ -- Function File: LINE = medianLine (P1, P2)
+ -- Function File: LINE = medianLine (PTS)
+ -- Function File: LINE = medianLine (EDGE)
+ Create a median line between two points.
+
+ Create the median line of points P1 and P2, that is the line
+ containing all points located at equal distance of P1 and P2.
+
+ Creates the median line of 2 points, given as a 2*2 array PTS.
+ Array has the form: [ [ x1 y1 ] ; [ x2 y2 ] ]
+
+ Creates the median of the EDGE. EDGE is a 1*4 array, containing
+ [X1 Y1] coordinates of first point, and [X2 Y2], the coordinates
+ of the second point.
+
+ Example
+
+ % Draw the median line of two points
+ P1 = [10 20];
+ P2 = [30 50];
+ med = medianLine(P1, P2);
+ figure; axis square; axis([0 100 0 100]);
+ drawEdge([P1 P2], 'linewidth', 2, 'color', 'k');
+ drawLine(med)
+
+ % Draw the median line of an edge
+ P1 = [50 60];
+ P2 = [80 30];
+ edge = createEdge(P1, P2);
+ figure; axis square; axis([0 100 0 100]);
+ drawEdge(edge, 'linewidth', 2)
+ med = medianLine(edge);
+ drawLine(med)
+
+ See also: lines2d, createLine, orthogonalLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Create a median line between two points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+mergeBoxes
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 316
+ -- Function File: BOX = mergeBoxes (BOX1, BOX2)
+ Merge two boxes, by computing their greatest extent.
+
+ Example
+
+ box1 = [5 20 5 30];
+ box2 = [0 15 0 15];
+ mergeBoxes(box1, box2)
+ ans =
+ 0 20 0 30
+
+ See also: boxes2d, drawBox, intersectBoxes
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 52
+Merge two boxes, by computing their greatest extent.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+midPoint
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 868
+ -- Function File: MID = midPoint (P1, P2)
+ -- Function File: MID = midPoint (EDGE)
+ -- Function File: [MIDX, MIDY] = midPoint (EDGE)
+ Middle point of two points or of an edge
+
+ Computes the middle point of the two points P1 and P2.
+
+ If an edge is given, computes the middle point of the edge given
+ by EDGE. EDGE has the format: [X1 Y1 X2 Y2], and MID has the
+ format [XMID YMID], with XMID = (X1+X2)/2, and YMID = (Y1+Y2)/2.
+
+ If two output arguments are given, it returns the result as two
+ separate variables or arrays.
+
+ Works also when EDGE is a N-by-4 array, in this case the result is
+ a N-by-2 array containing the midpoint of each edge.
+
+ Example
+
+ p1 = [10 20];
+ p2 = [30 40];
+ midPoint([p1 p2])
+ ans =
+ 20 30
+
+ See also: edges2d, points2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 41
+Middle point of two points or of an edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 17
+minDistancePoints
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 2407
+ -- Function File: DIST = minDistancePoints (PTS)
+ -- Function File: DIST = minDistancePoints (PTS1,PTS2)
+ -- Function File: DIST = minDistancePoints (...,NORM)
+ -- Function File: [DIST I J] = minDistancePoints (PTS1, PTS2, ...)
+ -- Function File: [DIST J] = minDistancePoints (PTS1, PTS2, ...)
+ Minimal distance between several points.
+
+ Returns the minimum distance between all couple of points in PTS.
+ PTS is an array of [NxND] values, N being the number of points
+ and ND the dimension of the points.
+
+ Computes for each point in PTS1 the minimal distance to every
+ point of PTS2. PTS1 and PTS2 are [NxD] arrays, where N is the
+ number of points, and D is the dimension. Dimension must be the
+ same for both arrays, but number of points can be different.
+ The result is an array the same length as PTS1.
+
+ When NORM is provided, it uses a user-specified norm. NORM=2 means
+ euclidean norm (the default), NORM=1 is the Manhattan (or
+ "taxi-driver") distance. Increasing NORM growing up reduces the
+ minimal distance, with a limit to the biggest coordinate
+ difference among dimensions.
+
+ Returns indices I and J of the 2 points which are the closest. DIST
+ verifies relation: DIST = distancePoints(PTS(I,:), PTS(J,:));
+
+ If only 2 output arguments are given, it returns the indices of
+ points which are the closest. J has the same size as DIST. for
+ each I It verifies the relation : DIST(I) =
+ distancePoints(PTS1(I,:), PTS2(J,:));
+
+ Examples:
+
+ % minimal distance between random planar points
+ points = rand(20,2)*100;
+ minDist = minDistancePoints(points);
+
+ % minimal distance between random space points
+ points = rand(30,3)*100;
+ [minDist ind1 ind2] = minDistancePoints(points);
+ minDist
+ distancePoints(points(ind1, :), points(ind2, :))
+ % results should be the same
+
+ % minimal distance between 2 sets of points
+ points1 = rand(30,2)*100;
+ points2 = rand(30,2)*100;
+ [minDists inds] = minDistancePoints(points1, points2);
+ minDists(10)
+ distancePoints(points1(10, :), points2(inds(10), :))
+ % results should be the same
+
+ See also: points2d, distancePoints
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Minimal distance between several points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+normalizeAngle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 884
+ -- Function File: ALPHA2 = normalizeAngle (ALPHA)
+ -- Function File: ALPHA2 = normalizeAngle (ALPHA, CENTER)
+ Normalize an angle value within a 2*PI interval
+
+ ALPHA2 = normalizeAngle(ALPHA); ALPHA2 is the same as ALPHA
+ modulo 2*PI and is positive.
+
+ ALPHA2 = normalizeAngle(ALPHA, CENTER); Specifies the center of
+ the angle interval. If CENTER==0, the interval is [-pi ; +pi]
+ If CENTER==PI, the interval is [0 ; 2*pi] (default).
+
+ Example: % normalization between 0 and 2*pi (default)
+ normalizeAngle(5*pi) ans = 3.1416
+
+ % normalization between -pi and +pi normalizeAngle(7*pi/2, 0)
+ ans = -1.5708
+
+ References Follows the same convention as apache commons
+ library, see:
+ http://commons.apache.org/math/api-2.2/org/apache/commons/math/util/MathUtils.html%%
+
+ See also: vectorAngle, lineAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 48
+Normalize an angle value within a 2*PI interval
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+normalizeVector
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 503
+ -- Function File: VN = normalizeVector (V)
+ Normalize a vector to have norm equal to 1
+
+ Returns the normalization of vector V, such that ||V|| = 1. V can
+ be either a row or a column vector.
+
+ When V is a MxN array, normalization is performed for each row of
+ the array.
+
+ Example:
+
+ vn = normalizeVector([3 4])
+ vn =
+ 0.6000 0.8000
+ vectorNorm(vn)
+ ans =
+ 1
+
+ See also: vectors2d, vectorNorm
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 43
+Normalize a vector to have norm equal to 1
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+orthogonalLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 343
+ -- Function File: PERP = orthogonalLine (LINE, POINT)
+ Create a line orthogonal to another one.
+
+ Returns the line orthogonal to the line LINE and going through the
+ point given by POINT. Directed angle from LINE to PERP is pi/2.
+ LINE is given as [x0 y0 dx dy] and POINT is [xp yp].
+
+ See also: lines2d, parallelLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Create a line orthogonal to another one.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+parallelLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 565
+ -- Function File: RES = parallelLine (LINE, POINT)
+ -- Function File: RES = parallelLine (LINE, DIST)
+ Create a line parallel to another one.
+
+ Returns the line with same direction vector than LINE and going
+ through the point given by POINT. LINE is given as [x0 y0 dx
+ dy] and POINT is [xp yp].
+
+ Uses relative distance to specify position. The new line will be
+ located at distance DIST, counted positive in the right side of
+ LINE and negative in the left side.
+
+ See also: lines2d, orthogonalLine, distancePointLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 38
+Create a line parallel to another one.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+pointOnLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 451
+ -- Function File: POINT = pointOnLine (LINE, D)
+ Create a point on a line at a given position on the line.
+
+ Creates the point belonging to the line LINE, and located at the
+ distance D from the line origin. LINE has the form [x0 y0 dx
+ dy]. LINE and D should have the same number N of rows. The
+ result will have N rows and 2 column (x and y positions).
+
+ See also: lines2d, points2d, onLine, onLine, linePosition
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 57
+Create a point on a line at a given position on the line.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 8
+points2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 591
+ -- Function File: points2d ()
+ Description of functions operating on points.
+
+ A point is defined by its two cartesian coordinate, put into a row
+ vector of 2 elements: P = [x y];
+
+ Several points are stores in a matrix with two columns, one for the
+ x-coordinate, one for the y-coordinate. PTS = [x1 y1 ; x2 y2 ;
+ x3 y3];
+
+ Example P = [5 6];
+
+ See also: centroid, midPoint, polarPoint, pointOnLine
+ isCounterClockwise, angle2Points, angle3Points, angleSort
+ distancePoints, minDistancePoints transformPoint, clipPoints,
+ drawPoint
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 45
+Description of functions operating on points.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+polarPoint
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 760
+ -- Function File: POINT = polarPoint (RHO, THETA)
+ -- Function File: POINT = polarPoint (THETA)
+ -- Function File: POINT = polarPoint (POINT, RHO, THETA)
+ -- Function File: POINT = polarPoint (X0, Y0, RHO, THETA)
+ Create a point from polar coordinates (rho + theta)
+
+ Creates a point using polar coordinate. THETA is angle with
+ horizontal (counted counter-clockwise, and in radians), and RHO
+ is the distance to origin. If only angle is given radius RHO is
+ assumed to be 1.
+
+ If a point is given, adds the coordinate of the point to the
+ coordinate of the specified point. For example, creating a point
+ with : P = polarPoint([10 20], 30, pi/2); will give a result
+ of [40 20].
+
+ See also: points2d
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 52
+Create a point from polar coordinates (rho + theta)
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+projPointOnLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 566
+ -- Function File: POINT = projPointOnLine (PT1, LINE)
+ Project of a point orthogonally onto a line
+
+ Computes the (orthogonal) projection of point PT1 onto the line
+ LINE.
+
+ Function works also for multiple points and lines. In this case, it
+ returns multiple points. Point PT1 is a [N*2] array, and LINE
+ is a [N*4] array (see createLine for details). Result POINT is a
+ [N*2] array, containing coordinates of orthogonal projections of
+ PT1 onto lines LINE.
+
+ See also: lines2d, points2d, isPointOnLine, linePosition
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 44
+Project of a point orthogonally onto a line
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 7
+rad2deg
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 284
+ -- Function File: DEG = rad2deg(RAD)
+ Convert angle from radians to degrees
+
+ Usage: R = rad2deg(D) convert an angle in radians to angle in
+ degrees
+
+ Example: rad2deg(pi) ans = 180 rad2deg(pi/3) ans =
+ 60
+
+ See also: angles2d, deg2rad
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 38
+Convert angle from radians to degrees
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+radicalAxis
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 522
+ -- Function File: LINE = radicalAxis (CIRCLE1, CIRCLE2)
+ Compute the radical axis (or radical line) of 2 circles
+
+ L = radicalAxis(C1, C2) Computes the radical axis of 2 circles.
+
+ Example C1 = [10 10 5]; C2 = [60 50 30]; L = radicalAxis(C1,
+ C2); hold on; axis equal;axis([0 100 0 100]);
+ drawCircle(C1);drawCircle(C2);drawLine(L);
+
+ Ref: http://mathworld.wolfram.com/RadicalLine.html
+ http://en.wikipedia.org/wiki/Radical_axis
+
+ See also: lines2d, circles2d, createCircle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 56
+Compute the radical axis (or radical line) of 2 circles
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 16
+randomPointInBox
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 658
+ -- Function File: POINTS = randomPointInBox (BOX)
+ -- Function File: POINTS = randomPointInBox (BOX, N)
+ Generate random points within a box.
+
+ Generate a random point within the box BOX. The result is a 1-by-2
+ row vector. If N is given, generates N points. The result is a
+ N-by-2 array.
+
+ Example
+
+ % draw points within a box
+ box = [10 80 20 60];
+ pts = randomPointInBox(box, 500);
+ figure(1); clf; hold on;
+ drawBox(box);
+ drawPoint(pts, '.');
+ axis('equal');
+ axis([0 100 0 100]);
+
+ See also: edges2d, boxes2d, clipLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 36
+Generate random points within a box.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+rays2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 722
+ -- Function File: rays2d ()
+ Description of functions operating on planar rays
+
+ A ray is defined by a point (its origin), and a vector (its
+ direction). The different parameters are bundled into a row vector:
+ `RAY = [x0 y0 dx dy];'
+
+ The ray contains all the points (x,y) such that: x = x0 + t*dx
+ y = y0 + t*dy; for all t>0
+
+ Contrary to a (straight) line, the points located before the
+ origin do not belong to the ray. However, as rays and lines
+ have the same representation, some functions working on lines
+ are also working on rays (like `transformLine').
+
+ See also: points2d, vectors2d, lines2d, createRay, bisector,
+ isPointOnRay, clipRay, drawRay
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 50
+Description of functions operating on planar rays
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+reverseEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 312
+ -- Function File: RES = reverseEdge (EDGE)
+ Intervert the source and target vertices of edge
+
+ REV = reverseEdge(EDGE); Returns the opposite edge of EDGE.
+ EDGE has the format [X1 Y1 X2 Y2]. The resulting edge REV has value
+ [X2 Y2 X1 Y1];
+
+ See also: edges2d, createEdge, reverseLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 49
+Intervert the source and target vertices of edge
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+reverseLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 318
+ -- Function File: LINE = reverseLine (LINE)
+ Return same line but with opposite orientation
+
+ INVLINE = reverseLine(LINE); Returns the opposite line of LINE.
+ LINE has the format [x0 y0 dx dy], then INVLINE will have
+ following parameters: [x0 y0 -dx -dy].
+
+ See also: lines2d, createLine
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 47
+Return same line but with opposite orientation
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+rotateVector
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 304
+ -- Function File: VR = rotateVector (V, THETA)
+ Rotate a vector by a given angle
+
+ Rotate the vector V by an angle THETA, given in radians.
+
+ Example
+
+ rotateVector([1 0], pi/2)
+ ans =
+ 0 1
+
+ See also: vectors2d, transformVector, createRotation
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 33
+Rotate a vector by a given angle
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+squareGrid
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 494
+ -- Function File: PTS = squaregrid (BOUNDS, ORIGIN, SIZE)
+ Generate equally spaces points in plane.
+
+ usage PTS = squareGrid(BOUNDS, ORIGIN, SIZE) generate points,
+ lying in the window defined by BOUNDS (=[xmin ymin xmax ymax]),
+ starting from origin with a constant step equal to size.
+
+ Example PTS = squareGrid([0 0 10 10], [3 3], [4 2]) will
+ return points : [3 1;7 1;3 3;7 3;3 5;7 5;3 7;7 7;3 9;7 9];
+
+ TODO: add possibility to use rotated grid
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Generate equally spaces points in plane.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+transformEdge
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 587
+ -- Function File: EDGE2 = transformEdge (EDGE1, T)
+ Transform an edge with an affine transform.
+
+ Where EDGE1 has the form [x1 y1 x2 y1], and T is a transformation
+ matrix, return the edge transformed with affine transform T.
+
+ Format of TRANS can be one of : [a b] , [a b c] , or [a b c]
+ [d e] [d e f] [d e f] [0 0
+ 1]
+
+ Also works when EDGE1 is a [Nx4] array of double. In this case,
+ EDGE2 has the same size as EDGE1.
+
+ See also: edges2d, transforms2d, transformPoint, translation,
+ rotation
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 43
+Transform an edge with an affine transform.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 13
+transformLine
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 554
+ -- Function File: LINE2 = transformLine (LINE1, T)
+ Transform a line with an affine transform.
+
+ Returns the line LINE1 transformed with affine transform T.
+ LINE1 has the form [x0 y0 dx dy], and T is a transformation
+ matrix.
+
+ Format of T can be one of : [a b] , [a b c] , or [a b c]
+ [d e] [d e f] [d e f] [0 0 1]
+
+ Also works when LINE1 is a [Nx4] array of double. In this case,
+ LINE2 has the same size as LINE1.
+
+ See also: lines2d, transforms2d, transformPoint
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 42
+Transform a line with an affine transform.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+transformPoint
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 849
+ -- Function File: PT2 = transformPoint (PT1, TRANS)
+ -- Function File: [PX2 PY2]= transformPoint (PX1, PY1, TRANS)
+ Transform a point with an affine transform.
+
+ where PT1 has the form [xp yp], and TRANS is a [2x2], [2x3] or
+ [3x3] matrix, returns the point transformed with affine
+ transform TRANS.
+
+ Format of TRANS can be one of : [a b] , [a b c] , or [a b c]
+ [d e] [d e f] [d e f] [0 0
+ 1]
+
+ Also works when PT1 is a [Nx2] array of double. In this case, PT2
+ has the same size as PT1.
+
+ Also works when PX1 and PY1 are arrays the same size. The function
+ transform each couple of (PX1, PY1), and return the result in
+ (PX2, PY2), which is the same size as (PX1 PY1).
+
+ See also: points2d, transforms2d, createTranslation, createRotation
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 43
+Transform a point with an affine transform.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 15
+transformVector
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 786
+ -- Function File: V2 = transformVector (V, T)
+ -- Function File: [X2 Y2] = transformVector (X,Y, T)
+ Transform a vector with an affine transform
+
+ V has the form [xv yv], and T is a [2x2], [2x3] or [3x3] matrix,
+ returns the vector transformed with affine transform T.
+
+ Format of T can be one of :
+ [a b] , [a b c] , or [a b c] [d e] [d e f] [d e f]
+ [0 0 1]
+
+ Also works when V is a [Nx2] array of double. In this case, V2 has
+ the same size as V.
+
+ Also works when X and Y are arrays the same size. The function
+ transform each couple of (X, Y), and return the result in (X2,
+ Y2), which is the same size as (X, Y).
+
+ See also: vectors2d, transforms2d, rotateVector, transformPoint
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 44
+Transform a vector with an affine transform
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+transforms2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 675
+ -- Function File: transforms2d ()
+ Description of functions operating on transforms
+
+ By 'transform' we mean an affine transform. A planar affine
+ transform can be represented by a 3x3 matrix.
+
+ Example
+
+ % create a translation by the vector [10 20]:
+ T = createTranslation([10 20])
+ T =
+ 1 0 10
+ 0 1 20
+ 0 0 1
+
+ See also: createTranslation, createRotation, createScaling,
+ createBasisTransform, createHomothecy, createLineReflection,
+ fitAffineTransform2d, transformPoint, transformVector,
+ transformLine, transformEdge, rotateVector
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 49
+Description of functions operating on transforms
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 12
+triangleGrid
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 477
+ -- Function File: PTS = triangleGrid (BOUNDS, ORIGIN, SIZE)
+ Generate triangular grid of points in the plane.
+
+ usage PTS = triangleGrid(BOUNDS, ORIGIN, SIZE) generate
+ points, lying in the window defined by BOUNDS, given in form
+ [xmin ymin xmax ymax], starting from origin with a constant step
+ equal to size. SIZE is constant and is equals to the length
+ of the sides of each triangles.
+
+ TODO: add possibility to use rotated grid
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 48
+Generate triangular grid of points in the plane.
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 11
+vectorAngle
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 932
+ -- Function File: ALPHA = vectorAngle (V1)
+ Angle of a vector, or between 2 vectors
+
+ A = vectorAngle(V); Returns angle between Ox axis and vector
+ direction, in Counter clockwise orientation. The result is
+ normalised between 0 and 2*PI.
+
+ A = vectorAngle(V1, V2); Returns the angle from vector V1 to
+ vector V2, in counter-clockwise order, and in radians.
+
+ A = vectorAngle(..., 'cutAngle', CUTANGLE); A = vectorAngle(...,
+ CUTANGLE); % (deprecated syntax) Specifies convention for angle
+ interval. CUTANGLE is the center of the 2*PI interval containing
+ the result. See <a href="matlab:doc
+ ('normalizeAngle')">normalizeAngle</a> for details.
+
+ Example: rad2deg(vectorAngle([2 2])) ans = 45
+ rad2deg(vectorAngle([1 sqrt(3)])) ans = 60
+ rad2deg(vectorAngle([0 -1])) ans = 270
+
+ See also: vectors2d, angles2d, normalizeAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 40
+Angle of a vector, or between 2 vectors
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 10
+vectorNorm
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 751
+ -- Function File: NM = vectorNorm (V)
+ -- Function File: NM = vectorNorm (V,N)
+ Compute norm of a vector, or of a set of vectors
+
+ Without extra arguments, returns the euclidean norm of vector V.
+ Optional argument N specifies the norm to use. N can be any value
+ greater than 0.
+ `N=1'
+ City lock norm.
+
+ `N=2'
+ Euclidean norm.
+
+ `N=inf'
+ Compute max coord.
+
+ When V is a MxN array, compute norm for each vector of the array.
+ Vector are given as rows. Result is then a Mx1 array.
+
+ Example
+
+ n1 = vectorNorm([3 4])
+ n1 =
+ 5
+
+ n2 = vectorNorm([1, 10], inf)
+ n2 =
+ 10
+
+ See also: vectors2d, vectorAngle
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 49
+Compute norm of a vector, or of a set of vectors
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 9
+vectors2d
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 502
+ -- Function File: vectors2d ()
+ Description of functions operating on plane vectors
+
+ A vector is defined by its two cartesian coordinates, put into a
+ row vector of 2 elements: `V = [vx vy];'
+
+ Several vectors are stored in a matrix with two columns, one for
+ the x-coordinate, one for the y-coordinate. `VS = [vx1 vy1 ;
+ vx2 vy2 ; vx3 vy3];'
+
+ See also: vectorNorm, vectorAngle, isPerpendicular, isParallel,
+ normalizeVector, transformVector, rotateVector
+
+
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 52
+Description of functions operating on plane vectors
+
+
+
+
+
+