File: Contents.m

package info (click to toggle)
octave-matgeom 1.2.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,584 kB
  • sloc: objc: 469; makefile: 10
file content (234 lines) | stat: -rw-r--r-- 13,955 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
## Copyright (C) 2024 David Legland
## All rights reserved.
## 
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are met:
## 
##     1 Redistributions of source code must retain the above copyright notice,
##       this list of conditions and the following disclaimer.
##     2 Redistributions in binary form must reproduce the above copyright
##       notice, this list of conditions and the following disclaimer in the
##       documentation and/or other materials provided with the distribution.
## 
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS''
## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
## ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
## SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
## CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## 
## The views and conclusions contained in the software and documentation are
## those of the authors and should not be interpreted as representing official
## policies, either expressed or implied, of the copyright holders.

%CONTENTS GEOM2D Geometry 2D Toolbox.
% Version 1.24 07-Jun-2018.
%
% 	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.
%   midPoint                 - Middle point of two points or of an edge.
%   circumCenter             - Circumcenter of three points.
%   isCounterClockwise       - Compute the 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.
%   distancePoints           - Compute distance between two points.
%   transformPoint           - Apply an affine transform to a point or a point set.
%   drawPoint                - Draw the point on the axis.
%
% Point Sets
%   clipPoints               - Clip a set of points by a box.
%   centroid                 - Compute centroid (center of mass) of a set of points.
%   boundingBox              - Bounding box of a set of points.
%   principalAxes            - Principal axes of a set of ND points.
%   angleSort                - Sort points in the plane according to their angle to origin.
%   findClosestPoint         - Find index of closest point in an array.
%   minDistancePoints        - Minimal distance between several points.
%   mergeClosePoints         - Merge points that are closer than a given distance.
%   hausdorffDistance        - Hausdorff distance between two point sets.
%   nndist                   - Nearest-neighbor distances of each point in a set.
%
% 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              - Horizontal angle of a vector, or angle 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.
%   fitLine                  - Fit a straight line to a set of points.
%   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 through a point.
%   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.
%   clipLine                 - Clip a line with a box.
%   reverseLine              - Return same line but with opposite orientation.
%   transformLine            - Transform a line with an affine transform.
%   lineToEdge               - Convert a straight line to a finite edge.
%   drawLine                 - Draw a straight line clipped by 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.
%   edgeAngle                - Return angle of edge.
%   edgeLength               - Return length of an edge.
%   parallelEdge             - Edge parallel to another edge.
%   centeredEdgeToEdge       - Convert a centered edge to a two-points 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.
%   edgeToLine               - Convert an edge to a straight line.
%   edgeToPolyline           - Convert an edge to a polyline with a given number of segments.
%   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 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.
%   circleToPolygon          - Convert a circle into a series of points.
%   circleArcToPolyline      - 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.
%   circumCircle             - Circumscribed circle of three 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 and Parabola
%   ellipses2d               - Description of functions operating on ellipses.
%   equivalentEllipse        - Equivalent ellipse of a set of points.
%   fitEllipse               - Fit an ellipse to a set of 2D points.
%   transformEllipse         - Apply an affine transformation to an ellipse.
%   createEllipse            - Create an ellipse, from various input types.
%   distancePointEllipse     - Distance from a point to an ellipse.
%   projPointOnEllipse       - Project a point orthogonally onto an ellipse.
%   isPointInEllipse         - Check if a point is located inside a given ellipse.
%   ellipseArea              - Area of an ellipse.
%   ellipsePerimeter         - Perimeter of an ellipse.
%   ellipseToPolygon         - Convert an ellipse into a series of points.
%   ellipsePoint             - Coordinates of a point on an ellipse from parametric equation.
%   ellipseCartesianCoefficients - Cartesian coefficients of an ellipse.
%   drawEllipse              - Draw an ellipse on the current axis.
%   drawEllipseAxes          - Draw the main axes of an ellipse as line segments.
%   drawEllipseArc           - Draw an ellipse arc on the current axis.
%   drawParabola             - Draw a parabola 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.
%   createRotation90         - Matrix of a rotation for 90 degrees multiples.
%   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.
%   principalAxesTransform   - Align a set of points along its principal axes.
%   fitAffineTransform2d     - Compute the affine transform that best register two point sets.
%   registerICP              - Fit affine transform by Iterative Closest Point algorithm.
%   polynomialTransform2d    - Apply a polynomial transform to a set of points.
%   fitPolynomialTransform2d - Coefficients of polynomial transform between 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.
%
% 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.
%   boxToRect                - Convert box data to rectangle data.
%   boxToPolygon             - Convert a bounding box to a square polygon.
%   drawBox                  - Draw a box defined by coordinate extents.
%
% Triangles
%   isPointInTriangle        - Test if a point is located inside a triangle.
%   triangleArea             - Signed area of a triangle.
%
% Rectangles
%   rectToPolygon            - Convert a rectangle into a polygon (set of vertices).
%   rectToBox                - Convert rectangle data to box data.
%   drawRect                 - Draw rectangle on the current axis.
%   orientedBox              - Minimum-width oriented bounding box of a set of points.
%   orientedBoxToPolygon     - Convert an oriented box to a polygon (set of vertices).
%   drawOrientedBox          - Draw centered oriented rectangle.
%
% Splines
%   cubicBezierToPolyline    - Compute equivalent polyline from bezier curve control.
%   drawBezierCurve          - Draw a cubic bezier curve defined by 4 control points.
%
% Various drawing functions
%   drawVector               - Draw vector at a given position.
%   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
%       (yash78@gmail.com), available on Matlab File Exchange

% ------
% Author: David Legland
% E-mail: david.legland@inrae.fr
% Created: 2005-11-07
% Copyright 2005-2023 INRA - Cepia Software Platform

help(mfilename);