|  | 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 () | 
|  Public Member Functions inherited from RXLine | |
| 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 () | 
|  Public Member Functions inherited from RShape | |
| 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 | |
|  Public Types inherited from RShape | |
| 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 Public Member Functions inherited from RShape | |
| 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) | 
|  Public Attributes inherited from RXLine | |
| 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 Protected Attributes inherited from RShape | |
| 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.