![]() |
QCAD
Open Source 2D CAD
|
Low-level mathematical representation of a ray. More...
#include <RRay.h>
Public Member Functions | |
virtual QSharedPointer< RShape > | clone () const |
QSharedPointer< RRay > | cloneToRay () const |
virtual RLine | getClippedLine (const RBox &box) const |
virtual QList< RVector > | getPointsWithDistanceToEnd (double distance, int from) const |
virtual RShape::Type | getShapeType () const |
virtual QList< RVector > | getVectorProperties () const |
virtual RVector | getVectorTo (const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const |
virtual bool | reverse () |
RRay () | |
Copyright (c) 2011-2018 by Andrew Mustun. | |
RRay (const RLine &line) | |
RRay (const RVector &basePoint, const RVector &directionVector) | |
Creates a ray object with the given base point and direction. | |
RRay (const RVector &basePoint, double angle, double distance) | |
virtual QList< QSharedPointer< RShape > > | splitAt (const QList< RVector > &points) const |
virtual bool | stretch (const RPolyline &area, const RVector &offset) |
virtual bool | trimEndPoint (const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false) |
virtual | ~RRay () |
![]() | |
QSharedPointer< RXLine > | cloneToXLine () const |
double | getAngle () const |
virtual double | getAngleAt (double distance, RS::From from=RS::FromStart) const |
RVector | getBasePoint () const |
RBox | getBoundingBox () const |
virtual QList< RVector > | getCenterPoints () const |
virtual double | getDirection1 () const |
virtual double | getDirection2 () const |
RVector | getDirectionVector () const |
virtual double | getDistanceFromStart (const RVector &p) const |
virtual RVector | getEndPoint () const |
virtual QList< RVector > | getEndPoints () const |
double | getLength () const |
RLine | getLineShape () const |
virtual RVector | getMiddlePoint () const |
virtual QList< RVector > | getMiddlePoints () const |
virtual QList< QSharedPointer< RShape > > | getOffsetShapes (double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
virtual QList< RVector > | getPointCloud (double segmentLength) const |
RVector | getSecondPoint () const |
virtual RS::Side | getSideOfPoint (const RVector &point) const |
virtual RVector | getStartPoint () const |
virtual QSharedPointer< RShape > | getTransformed (const QTransform &transform) const |
virtual RS::Ending | getTrimEnd (const RVector &trimPoint, const RVector &clickPoint) |
virtual bool | isDirected () const |
virtual bool | mirror (const RLine &axis) |
virtual bool | move (const RVector &offset) |
virtual bool | rotate (double rotation, const RVector ¢er=RDEFAULT_RVECTOR) |
RXLine () | |
Copyright (c) 2011-2018 by Andrew Mustun. | |
RXLine (const RLine &line) | |
RXLine (const RVector &basePoint, const RVector &directionVector) | |
Creates an xline object with the given base point and direction. | |
RXLine (const RVector &basePoint, double angle, double distance) | |
virtual bool | scale (const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR) |
void | setAngle (double a) |
void | setBasePoint (const RVector &vector) |
void | setDirectionVector (const RVector &vector) |
void | setLength (double l) |
void | setSecondPoint (const RVector &vector) |
virtual void | setZ (double z) |
virtual bool | trimEndPoint (double trimDist) |
virtual bool | trimStartPoint (const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false) |
virtual bool | trimStartPoint (double trimDist) |
virtual | ~RXLine () |
![]() | |
void | dump () const |
virtual bool | equals (const RShape &other, double tolerance=RS::PointTolerance) const |
virtual QList< RVector > | filterOnShape (const QList< RVector > &pointList, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const |
virtual bool | flipHorizontal () |
virtual bool | flipVertical () |
virtual double | getAngleAtPercent (double p) const |
virtual double | getAngleAtPoint (const RVector &pos) const |
virtual QList< RVector > | getArcReferencePoints () const |
virtual QList< bool > | getBoolProperties () const |
virtual RVector | getClosestPointOnShape (const RVector &p, bool limited=true, double strictRange=RMAXDOUBLE) const |
virtual QList< double > | getDistancesFromStart (const RVector &p) const |
virtual double | getDistanceTo (const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const |
virtual QList< double > | getDoubleProperties () const |
QList< RVector > | getIntersectionPoints (const RShape &other, bool limited=true, bool same=false, bool force=false) const |
virtual QList< int > | getIntProperties () const |
virtual double | getMaxDistanceTo (const QList< RVector > &points, bool limited=true, double strictRange=RMAXDOUBLE) const |
virtual RVector | getPointAtPercent (double p) const |
virtual RVector | getPointOnShape () const |
virtual RVector | getPointWithDistanceToEnd (double distance) const |
virtual RVector | getPointWithDistanceToStart (double distance) const |
virtual QList< RVector > | getSelfIntersectionPoints (double tolerance=RS::PointTolerance) const |
virtual RVector | getVectorFromEndpointTo (const RVector &point) const |
virtual bool | intersectsWith (const RShape &other, bool limited=true) const |
virtual bool | isInterpolated () const |
Reimplement and return true if this shape relies on interpolation for geometrical operations such as finding intersection points. | |
virtual bool | isOnShape (const RVector &point, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const |
virtual bool | isValid () const |
RShape () | |
virtual bool | scale (double scaleFactor, const RVector ¢er=RVector()) |
virtual bool | stretch (const RBox &area, const RVector &offset) |
virtual void | to2D () |
Flattens this shape to the X/Y plane. | |
virtual | ~RShape () |
Protected Member Functions | |
virtual void | print (QDebug dbg) const |
Additional Inherited Members | |
![]() | |
enum | Type { Unknown = -1 , Point = 0 , Line = 1 , Arc = 2 , Circle = 3 , Ellipse = 4 , Polyline = 5 , Spline = 6 , Triangle = 7 , XLine = 8 , Ray = 9 } |
![]() | |
static const RExplodable * | castToExplodable (const RShape *shape) |
static QSharedPointer< RShape > | ellipseToArcCircleEllipse (const REllipse &ellipse) |
static int | getErrorCode () |
static QList< RVector > | getIntersectionPoints (const RShape &shape1, const RShape &shape2, bool limited=true, bool same=false, bool force=false) |
static QList< RVector > | getIntersectionPointsAA (const RArc &arc1, const RArc &arc2, bool limited=true) |
static QList< RVector > | getIntersectionPointsAC (const RArc &arc1, const RCircle &circle2, bool limited=true) |
static QList< RVector > | getIntersectionPointsAE (const RArc &arc1, const REllipse &ellipse2, bool limited=true) |
static QList< RVector > | getIntersectionPointsAS (const RArc &arc1, const RSpline &spline2, bool limited=true) |
static QList< RVector > | getIntersectionPointsAT (const RArc &arc1, const RTriangle &triangle2, bool limited=true) |
static QList< RVector > | getIntersectionPointsAX (const RArc &arc1, const RExplodable &explodable2, bool limited=true) |
static QList< RVector > | getIntersectionPointsCC (const RCircle &circle1, const RCircle &circle2) |
static QList< RVector > | getIntersectionPointsCE (const RCircle &circle1, const REllipse &ellipse2) |
static QList< RVector > | getIntersectionPointsCS (const RCircle &circle1, const RSpline &spline2, bool limited=true) |
static QList< RVector > | getIntersectionPointsCX (const RCircle &circle1, const RExplodable &explodable2, bool limited=true) |
static QList< RVector > | getIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2) |
Based on "Hughes and Chraibi (2011-2012), Calculating Ellipse Overlap Areas". | |
static QList< RVector > | getIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2, bool limited) |
static QList< RVector > | getIntersectionPointsES (const REllipse &ellipse1, const RSpline &spline2, bool limited=true) |
static QList< RVector > | getIntersectionPointsEX (const REllipse &ellipse1, const RExplodable &explodable2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited1, bool limited2) |
static QList< RVector > | getIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLC (const RLine &line1, const RCircle &circle2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLE (const RLine &line1, const REllipse &ellipse2, bool limited1, bool limited2) |
static QList< RVector > | getIntersectionPointsLE (const RLine &line1, const REllipse &ellipse2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited1, bool limited2) |
static QList< RVector > | getIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLS (const RLine &line1, const RSpline &spline2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLT (const RLine &line1, const RTriangle &triangle2, bool limited1, bool limited2) |
static QList< RVector > | getIntersectionPointsLT (const RLine &line1, const RTriangle &triangle2, bool limited=true) |
static QList< RVector > | getIntersectionPointsLX (const RLine &line1, const RExplodable &explodable2, bool limited=true) |
static QList< RVector > | getIntersectionPointsSS (const RSpline &spline1, const RSpline &spline2, bool limited=true, bool same=false, double tolerance=RS::PointTolerance) |
static QList< RVector > | getIntersectionPointsSX (const RSpline &spline1, const RExplodable &explodable2, bool limited) |
static QList< RVector > | getIntersectionPointsXX (const RExplodable &explodable1, const RExplodable &explodable2, bool limited=true, bool same=false) |
static QList< QSharedPointer< RShape > > | getOffsetArcs (const RShape &shape, double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
static QList< QSharedPointer< RShape > > | getOffsetLines (const RShape &shape, double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
static QList< QSharedPointer< RShape > > | getOrderedShapes (const QList< QSharedPointer< RShape > > &shapes) |
static QList< RPolyline > | getPolylines (const QList< QSharedPointer< RShape > > &shapes) |
static QList< QSharedPointer< RShape > > | getReversedShapeList (const QList< QSharedPointer< RShape > > &shapes) |
static RShapeProxy * | getShapeProxy () |
static bool | hasProxy () |
static bool | isArcShape (const RShape &s) |
static bool | isCircleShape (const RShape &s) |
static bool | isEllipseShape (const RShape &s) |
static bool | isFullEllipseShape (const RShape &s) |
static bool | isLineShape (const RShape &s) |
static bool | isPointShape (const RShape &s) |
static bool | isPolylineShape (const RShape &s) |
static bool | isRayShape (const RShape &s) |
static bool | isSplineShape (const RShape &s) |
static bool | isTriangleShape (const RShape &s) |
static bool | isXLineShape (const RShape &s) |
static bool | order (QList< QList< QSharedPointer< RShape > > > &boundary) |
Orders the given list of loops into a list of closed loops in which all shapes are connected end to start point. | |
static QSharedPointer< RShape > | rayToLine (QSharedPointer< RShape > shape) |
static QList< QSharedPointer< RShape > > | roundCorners (const QList< QSharedPointer< RShape > > &shapes, double radius) |
Round every corner of the list of given (connected) shapes with the given radius. | |
static QList< QSharedPointer< RShape > > | roundShapes (const QSharedPointer< RShape > shape1, const RVector &clickPos1, const QSharedPointer< RShape > shape2, const RVector &clickPos2, bool trim, bool samePolyline, double radius, const RVector &pos) |
Rounds the given shape1 against shape2. | |
static QSharedPointer< RShape > | scaleArc (const RShape &shape, const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR) |
static void | setShapeProxy (RShapeProxy *p) |
static QSharedPointer< RShape > | transformArc (const RShape &shape, RShapeTransformation &transformation) |
static QList< QSharedPointer< RShape > > | trim (const RShape &trimShape, const RVector &trimClickPos, const RShape &limitingShape, const RVector &limitingClickPos, bool trimBoth, bool samePolyline) |
Trims a shape to another or two shapes to each other. | |
static QSharedPointer< RShape > | xLineToRay (QSharedPointer< RShape > shape) |
![]() | |
RVector | basePoint |
Getter function for this property: getBasePoint Setter function for this property: setBasePoint | |
RVector | directionVector |
Getter function for this property: getDirectionVector Setter function for this property: setDirectionVector | |
![]() | |
static int | errorCode = 0 |
Low-level mathematical representation of a ray.
RRay::RRay | ( | ) |
Copyright (c) 2011-2018 by Andrew Mustun.
All rights reserved.
This file is part of the QCAD project.
QCAD is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
QCAD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with QCAD. Creates a ray object with invalid start and end points.
Creates a ray object with the given base point and direction.
|
virtual |
|
inline |
|
virtual |
Reimplemented from RXLine.
|
inlinevirtual |
Reimplemented from RXLine.
|
virtual |
point | the given point |
limited | If false, the shape is treated as an unlimited shape that extends in a logical way. For example an unlimited line for a line, full circle for an arc or a plane for a triangle. |
Reimplemented from RXLine.
Reimplemented in RRayData.
|
protectedvirtual |
Reimplemented from RXLine.
|
virtual |
trimPoint | Trim start point or end point to this coordinate. |
clickPoint | Point that was clicked by user. |
extend | True if the shape is to be extended. Used for polylines to determine that the last segment has to be trimmed even if another segment was clicked. |
Reimplemented from RXLine.
Reimplemented in RRayData.