Class LineSegment¶
Defined in File LineSegment.m
Inheritance Relationships¶
Base Type¶
public CurveBase(Class CurveBase)
Class Documentation¶
-
class LineSegment : public CurveBase¶
-
Public Functions
-
function LineSegment( varargin)¶
-
MATLAB class wrapper for the underlying C++ class.
Create a new C++ class instance for the Segment object
Usage:
ref = LineSegment(); % (1) ref = LineSegment( x0, y0, theta0, L ); % (2) ref = LineSegment( x0, y0, theta0, smin, smax ); % (3) ref = LineSegment( p0, p1 ); % (4)
(1) empty segment
(2) line segment passing from (x0,y0) at angle theta0
(3) line segment as in (2) with intial and final curvilinear coordinate respect to (x0,y0)
(4) segment passing from 2 points
On input:
x0,y0: coordinate of initial pointtheta0: orientation of the circle at initial pointL: length of curve from initial to final pointsmin: initial curvilinear coordinate of the curvesmax: final curvilinear coordinate of the curvep0: 2D pointp1: 2D point
On output:
ref: reference handle to the object instance
-
function is_type( ignoredArg)¶
-
function build( self, varargin)¶
-
Buil aline segment suing two points or an origin and a direction
Usage:
ref.build( x0, y0, theta0, L ); ref.build( p0, p1 );
Build 1:
x0,y0: initial pointtheta0: direction of the segment (angle direction)L: length of the segment
Build 2:
p0: initial point of the segmentp1: final point of the segment
-
function to_nurbs( self)¶
-
Return a nurbs representation of the circle segment.
-
function points( self)¶
-
Return initial and final point of the segment.
-
function plot( self, varargin)¶
-
Plot the segment
Usage:
ref.plot(); ref.plot( 'Color','blue','Linewidth',2);
-
function obj_handle( self)¶
-
Return the
pointerof the interbal stored c++ objectUsage
obj = ref.obj_handle();
-
function copy( self, C)¶
-
Make of copy of a curve object
Usage
ref.copy( C );
where
Cid the curve object to be copied.
-
function bbox( self, varargin)¶
-
Return the bounding box of the curve object
Usage
[ xmin, ymin, xmax, ymax ] = ref.bbox( C ); [ xmin, ymin, xmax, ymax ] = ref.bbox( C, offs ); [ xmin, ymin, xmax, ymax ] = ref.bbox( C, offs, 'ISO' ); [ xmin, ymin, xmax, ymax ] = ref.bbox( C, offs, 'SAE' );
xmin: x minimum coordinate of the bounding box
ymin: y minimum coordinate of the bounding box
xmax: x maximum coordinate of the bounding box
ymax: y maximum coordinate of the bounding box
Optional Arguments
offs: offset of the curve used in the bbox computation
’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
-
function translate( self, tx, ty)¶
-
Translate the curve by
(tx,ty)Usage
ref.translate( tx, ty );
-
function trim( self, smin, smax)¶
-
Cut the curve at the curvilinear parameter
sminup tosmaxUsage
ref.trim( smin, smax );
-
function rotate( self, angle, cx, cy)¶
-
Rotate the curve by angle
anglearound point(cx, cy)Usage
ref.rotate( angle, cx, cy );
-
function reverse( self)¶
-
Reverse the direction of travel of the curve.
Usage
ref.reverse();
-
function scale( self, sc)¶
-
Scale the curve by factor
scUsage
ref.scale( sc );
-
function changeOrigin( self, newX0, newY0)¶
-
Translate the curve in such a way the origin is at
(newX0,newY0.Usage
ref.changeOrigin( newX0, newY0 );
-
function evaluate( self, s, varargin)¶
-
Evaluate the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
[ x, y, theta, kappa ] = ref.evaluate( s ); [ x, y, theta, kappa ] = ref.evaluate( s, offs ); [ x, y, theta, kappa ] = ref.evaluate( s, offs, 'ISO' ); [ x, y, theta, kappa ] = ref.evaluate( s, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation
’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
-
function eval( self, varargin)¶
-
Evaluate the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
XY = ref.eval( s ); XY = ref.eval( s, offs ); XY = ref.eval( s, offs, 'ISO' ); XY = ref.eval( s, offs, 'SAE' ); [X,Y] = ref.eval( s ); [X,Y] = ref.eval( s, offs ); [X,Y] = ref.eval( s, offs, 'ISO' ); [X,Y] = ref.eval( s, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used compiutation
’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
Output
XY: matrix
2 x nof the evaluated pointsX: vector of the x-coordinates of the evaluated points
Y: vector of the y-coordinates of the evaluated points
-
function eval_D( self, varargin)¶
-
Evaluate the first derivatives of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
XY = ref.eval_D( s ); XY = ref.eval_D( s, offs ); XY = ref.eval_D( s, offs, 'ISO' ); XY = ref.eval_D( s, offs, 'SAE' ); [X,Y] = ref.eval_D( s ); [X,Y] = ref.eval_D( s, offs ); [X,Y] = ref.eval_D( s, offs, 'ISO' ); [X,Y] = ref.eval_D( s, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
Output
XY: matrix2 x nof the evaluated pointsX: vector of the x-coordinates of the evaluated point derivativesY: vector of the y-coordinates of the evaluated point derivatives
-
function eval_DD( self, varargin)¶
-
Evaluate the second derivatives of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
XY = ref.eval_DD( s ); XY = ref.eval_DD( s, offs ); XY = ref.eval_DD( s, offs, 'ISO' ); XY = ref.eval_DD( s, offs, 'SAE' ); [X,Y] = ref.eval_DD( s ); [X,Y] = ref.eval_DD( s, offs ); [X,Y] = ref.eval_DD( s, offs, 'ISO' ); [X,Y] = ref.eval_DD( s, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
Output
XY: matrix2 x nof the evaluated pointsX: vector of the x-coordinates of the evaluated point derivativesY: vector of the y-coordinates of the evaluated point derivatives
-
function eval_DDD( self, varargin)¶
-
Evaluate the third derivatives of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
XY = ref.eval_DDD( s ); XY = ref.eval_DDD( s, offs ); XY = ref.eval_DDD( s, offs, 'ISO' ); XY = ref.eval_DDD( s, offs, 'SAE' ); [X,Y] = ref.eval_DDD( s ); [X,Y] = ref.eval_DDD( s, offs ); [X,Y] = ref.eval_DDD( s, offs, 'ISO' ); [X,Y] = ref.eval_DDD( s, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for offset computation
Output
XY: matrix2 x nof the evaluated pointsX: vector of the x-coordinates of the evaluated point derivativesY: vector of the y-coordinates of the evaluated point derivatives
-
function theta( self, s)¶
-
Evaluate the angle of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.theta( s );
-
function theta_D( self, s)¶
-
Evaluate the angle derivatives (curvature) of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.theta_D( s );
-
function theta_DD( self, s)¶
-
Evaluate the angle second derivatuve of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.theta_DD( s );
-
function theta_DDD( self, s)¶
-
Evaluate the angle third derivative of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.theta_DDD( s );
-
function kappa( self, s)¶
-
Evaluate the curvature of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.kappa( s );
-
function kappa_D( self, s)¶
-
Evaluate the curvature derivative of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.kappa_D( s );
-
function kappa_DD( self, s)¶
-
Evaluate the curvature second derivative of the curve at curvilinear coordinate
s. Argumentsmay be a vector for multiple evaluations.Usage
theta = ref.kappa_DD( s );
-
function xyBegin( self)¶
-
Evaluate initial point of the curve.
Usage
[ x0, y0 ] = ref.xyBegin();
-
function xyEnd( self)¶
-
Evaluate final point of the curve.
Usage
[ x1, y1 ] = ref.xyEnd();
-
function xBegin( self)¶
-
Evaluate initial x-coordinate of the curve.
Usage
x0 = ref.xBegin();
-
function xEnd( self)¶
-
Evaluate final x-coordinate of the curve.
Usage
x1 = ref.xEnd();
-
function yBegin( self)¶
-
Evaluate initial y-coordinate of the curve.
Usage
y0 = ref.yBegin();
-
function yEnd( self)¶
-
Evaluate final y-coordinate of the curve.
Usage
y1 = ref.yEnd();
-
function thetaBegin( self)¶
-
Evaluate initial angle of the curve.
Usage
theta = ref.thetaBegin();
-
function thetaEnd( self)¶
-
Evaluate final angle of the curve.
Usage
theta = ref.thetaEnd();
-
function kappaBegin( self)¶
-
Evaluate initial curvature of the curve.
Usage
kappa0 = ref.kappaBegin();
-
function kappaEnd( self)¶
-
Evaluate final curvature of the curve.
Usage
kappa1 = ref.kappaEnd();
-
function length( self, varargin)¶
-
Return the length of the curve.
Usage
length = ref.length();
-
function bbTriangles( self, varargin)¶
-
Evaluate the bounding box triangles of curve.
Usage
[P1,P2,P3] = ref.bbTriangles(); [P1,P2,P3] = ref.bbTriangles(max_angle,max_size); [P1,P2,P3] = ref.bbTriangles(max_angle,max_size,offs); [P1,P2,P3] = ref.bbTriangles(max_angle,max_size,offs,'ISO'); [P1,P2,P3] = ref.bbTriangles(max_angle,max_size,offs,'SAE');
Optional Arguments
max_angle: maximum curve angle variation admitted in a trianglemax_size: maximum triangles sizeoffs: offset of the curve used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for the offset
Output
P1:2 x nmatrix with the first points of the trianglesP2:2 x nmatrix with the second points of the trianglesP3:2 x nmatrix with the third points of the triangles
-
function closestPoint( self, qx, qy, varargin)¶
-
Evaluate the point at minimum distance of another point on the curve.
qxandqymay be vectors so that the return values are vectors too.Usage
[ x, y, s, t, iflag, dst ] = ref.closestPoint( qx, qy ); [ x, y, s, t, iflag, dst ] = ref.closestPoint( qx, qy, offs ); [ x, y, s, t, iflag, dst ] = ref.closestPoint( qx, qy, offs, 'ISO' ); [ x, y, s, t, iflag, dst ] = ref.closestPoint( qx, qy, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation
’ISO’/’SAE’: use ISO or SAE orientation of the normal for the offset
Output
x,y: Point at minimum distance from(qx,qy)on the curve.s,t: Curvilinear coordinates of the point(qx,qy).iflag:iflag < 0some error in computation, iflag >0 is the numer of segment containing the point at minimum distance.dst: point curve distance.
-
function distance( self, qx, qy, varargin)¶
-
Evaluate the distance of a point
(qx,qy)to the curve.qxandqymay be vectors so that the return values are vectors too.Usage
dst = ref.distance( qx, qy ); dst = ref.distance( qx, qy, offs ); dst = ref.distance( qx, qy, offs, 'ISO' ); dst = ref.distance( qx, qy, offs, 'SAE' );
Optional Arguments
offs: offset of the curve used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for the offset
-
function collision( self, OBJ, varargin)¶
-
Check if two curve collide.
Usage
ok = ref.collision( obj ); ok = ref.collision( obj, offs, offs1 ); ok = ref.collision( obj, offs, offs1, 'ISO' ); ok = ref.collision( obj, offs, offs1, 'SAE' );
Optional Arguments
offs,offs1: offset of the curves used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for the offsets
-
function intersect( self, OBJ, varargin)¶
-
Intersect two curves.
Usage
[s1,s2] = ref.intersect( obj ); [s1,s2] = ref.intersect( obj, offs, offs1 ); [s1,s2] = ref.intersect( obj, offs, offs1, 'ISO' ); [s1,s2] = ref.intersect( obj, offs, offs1, 'SAE' );
s1: curvilinear coordinates of the intersections on the first curves2: curvilinear coordinates of the intersections on the second curve
Optional Argument
offs,offs1: offset of the curves used in computation’ISO’/’SAE’: use ISO or SAE orientation of the normal for the offsets
-
function info( self)¶
-
Print on the console some information on the stored curve.
Usage
ref.info();
-
function find_coord( self, x, y)¶
-
Get the curvilinear coordinates of the point
(x,y)Usage:
[s,t] = ref.find_coord( x, y );
s: curvilinear coordinate along the curvet: curvilinear coordinate along the normal of the curve
-
function yesAABBtree( self)¶
-
Activate the use of AABB three in intersection/collision computations
-
function noAABBtree( self)¶
-
Deactivate the use of AABB three in intersection/collision computations
-
function plotTBox( self, P1, P2, P3, varargin)¶
-
Plot a triangle BBOX
Usage:
ref.plotTBox( P1, P2, P3 ); ref.plotTBox( P1, P2, P3, 'Color', 'red' );
-
function plotBBox( self, varargin)¶
-
Plot the bounding box of the curve
Usage:
ref.plotBBox(); ref.plotBBox('Color', 'red' );
-
function plotTriangles( self, varargin)¶
-
Plot the covering triangles of the curve
Usage:
ref.plotTriangles() ref.plotTriangles('red','FaceAlpha', 0.5);
-
function LineSegment( varargin)¶