|
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.