QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RArc Class Reference

Low-level mathematical representation of an arc. More...

#include <RArc.h>

Inheritance diagram for RArc:
RShape RDirected RArcData

List of all members.

Public Member Functions

RPolyline approximateWithLines (double segmentLength)
virtual RArcclone () const
double getAngleLength (bool allowForZeroLength=false) const
double getArea () const
virtual RBox getBoundingBox () const
double getBulge () const
RVector getCenter () const
virtual QList< RVectorgetCenterPoints () const
double getDiameter () const
double getDirection1 () const
double getDirection2 () const
virtual double getDistanceFromStart (const RVector &p) const
double getEndAngle () const
virtual RVector getEndPoint () const
virtual QList< RVectorgetEndPoints () const
double getLength () const
RVector getMiddlePoint () const
virtual QList< RVectorgetMiddlePoints () const
virtual QList< RVectorgetPointsWithDistanceToEnd (double distance, RS::From from=RS::FromAny) const
double getRadius () const
RS::Side getSideOfPoint (const RVector &point) const
double getStartAngle () const
virtual RVector getStartPoint () const
double getSweep () const
virtual QSharedPointer< RShapegetTransformed (const QTransform &transform) const
virtual RS::Ending getTrimEnd (const RVector &coord, const RVector &trimPoint)
virtual RVector getVectorTo (const RVector &point, bool limited=true) const
bool isAngleWithinArc (double a)
bool isFullCircle () const
bool isReversed () const
bool isValid () const
virtual bool mirror (const RLine &axis)
virtual bool move (const RVector &offset)
void moveEndPoint (const RVector &pos)
void moveStartPoint (const RVector &pos)
 RArc ()
 Copyright (c) 2011-2013 by Andrew Mustun.
 RArc (const RVector &center, double radius, double startAngle, double endAngle, bool reversed=false)
virtual bool reverse ()
virtual bool rotate (double rotation, const RVector &center=RDEFAULT_RVECTOR)
virtual bool scale (const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
void setArea (double a)
void setCenter (const RVector &vector)
void setDiameter (double d)
void setEndAngle (double endAngle)
void setLength (double l)
void setRadius (double radius)
void setReversed (bool reversed)
void setStartAngle (double startAngle)
virtual bool stretch (const RPolyline &area, const RVector &offset)
virtual void to2D ()
 Flattens this shape to the X/Y plane.
virtual void trimEndPoint (const RVector &p)
virtual void trimStartPoint (const RVector &p)
virtual ~RArc ()
- Public Member Functions inherited from RShape
void dump ()
virtual bool flipHorizontal ()
virtual bool flipVertical ()
virtual RVector getClosestPointOnShape (const RVector &p, bool limited=true) const
virtual double getDistanceTo (const RVector &point, bool limited=true) const
QList< RVectorgetIntersectionPoints (const RShape &other, bool limited=true, bool same=false, bool force=false) const
virtual RVector getPointAtPercent (double p) 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
 RShape ()
virtual bool scale (double scaleFactor, const RVector &center=RVector())
virtual bool stretch (const RBox &area, const RVector &offset)
virtual ~RShape ()
- Public Member Functions inherited from RDirected
virtual ~RDirected ()

Static Public Member Functions

static RArc createFrom2PBulge (const RVector &startPoint, const RVector &endPoint, double bulge)
 Creates an arc from its startpoint, endpoint and bulge (= tan(angle/4)).
static RArc createFrom3Points (const RVector &startPoint, const RVector &point, const RVector &endPoint)
 Creates an arc from 3 points.
static RArc createTangential (const RVector &startPoint, const RVector &pos, double direction, double radius)
- Static Public Member Functions inherited from RShape
static const RExplodablecastToExplodable (const RShape *shape)
static QList< RVectorgetIntersectionPoints (const RShape &shape1, const RShape &shape2, bool limited=true, bool same=false, bool force=false)
static QList< RVectorgetIntersectionPointsAA (const RArc &arc1, const RArc &arc2, bool limited=true)
static QList< RVectorgetIntersectionPointsAC (const RArc &arc1, const RCircle &circle2, bool limited=true)
static QList< RVectorgetIntersectionPointsAE (const RArc &arc1, const REllipse &ellipse2, bool limited=true)
static QList< RVectorgetIntersectionPointsAS (const RArc &arc1, const RSpline &spline2, bool limited=true)
static QList< RVectorgetIntersectionPointsAT (const RArc &arc1, const RTriangle &triangle2, bool limited=true)
static QList< RVectorgetIntersectionPointsAX (const RArc &arc1, const RExplodable &explodable2, bool limited=true)
static QList< RVectorgetIntersectionPointsCC (const RCircle &circle1, const RCircle &circle2)
static QList< RVectorgetIntersectionPointsCE (const RCircle &circle1, const REllipse &ellipse2)
static QList< RVectorgetIntersectionPointsCS (const RCircle &circle1, const RSpline &spline2, bool limited=true)
static QList< RVectorgetIntersectionPointsCX (const RCircle &circle1, const RExplodable &explodable2, bool limited=true)
static QList< RVectorgetIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2)
static QList< RVectorgetIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2, bool limited)
static QList< RVectorgetIntersectionPointsES (const REllipse &ellipse1, const RSpline &spline2, bool limited=true)
static QList< RVectorgetIntersectionPointsEX (const REllipse &ellipse1, const RExplodable &explodable2, bool limited=true)
static QList< RVectorgetIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited=true)
static QList< RVectorgetIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited1, bool limited2)
static QList< RVectorgetIntersectionPointsLC (const RLine &line1, const RCircle &circle2, bool limited=true)
static QList< RVectorgetIntersectionPointsLE (const RLine &line1, const REllipse &ellipse2, bool limited=true)
static QList< RVectorgetIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited=true)
static QList< RVectorgetIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited1, bool limited2)
static QList< RVectorgetIntersectionPointsLS (const RLine &line1, const RSpline &spline2, bool limited=true)
static QList< RVectorgetIntersectionPointsLT (const RLine &line1, const RTriangle &triangle2, bool limited=true)
static QList< RVectorgetIntersectionPointsLX (const RLine &line1, const RExplodable &explodable2, bool limited=true)
static QList< RVectorgetIntersectionPointsXX (const RExplodable &explodable1, const RExplodable &explodable2, bool limited=true, bool same=false)
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.

Public Attributes

RVector center
 Getter function for this property: getCenter.
double endAngle
 Getter function for this property: getEndAngle.
double radius
 Getter function for this property: getRadius.
bool reversed
 Getter function for this property: isReversed.
double startAngle
 Getter function for this property: getStartAngle.

Protected Member Functions

virtual void print (QDebug dbg) const

Detailed Description

Low-level mathematical representation of an arc.

Scriptable:
This class is wrapped for script environments.
Shared Pointer Support:
Script wrappers of this class support wrapping in QSharedPointer.
Copyable:
Script wrappers of this class should pass objects by reference.
Stream Operator:
Script wrappers of this class use the stream operator for the output of toString().

Constructor & Destructor Documentation

RArc::RArc ( )

Copyright (c) 2011-2013 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 an arc shape with an invalid center.

RArc::RArc ( const RVector center,
double  radius,
double  startAngle,
double  endAngle,
bool  reversed = false 
)
RArc::~RArc ( )
virtual

Member Function Documentation

RPolyline RArc::approximateWithLines ( double  segmentLength)

Reimplemented in RArcData.

virtual RArc* RArc::clone ( ) const
inlinevirtual

Implements RShape.

RArc RArc::createFrom2PBulge ( const RVector startPoint,
const RVector endPoint,
double  bulge 
)
static

Creates an arc from its startpoint, endpoint and bulge (= tan(angle/4)).

RArc RArc::createFrom3Points ( const RVector startPoint,
const RVector point,
const RVector endPoint 
)
static

Creates an arc from 3 points.

RArc RArc::createTangential ( const RVector startPoint,
const RVector pos,
double  direction,
double  radius 
)
static
double RArc::getAngleLength ( bool  allowForZeroLength = false) const
Returns:
Angle length in rad.
Parameters:
allowForZeroLength,:Allow for zero length result if start and end angle are the same. Otherwise 2*PI will be returned for such an arc, assuming it is a full circle.
Todo:
almost the same as getSweep

Reimplemented in RArcData.

double RArc::getArea ( ) const
RBox RArc::getBoundingBox ( ) const
virtual
Returns:
The bounding box of this shape.

Implements RShape.

double RArc::getBulge ( ) const

Reimplemented in RArcData.

RVector RArc::getCenter ( ) const

Reimplemented in RArcData.

QList< RVector > RArc::getCenterPoints ( ) const
virtual
Returns:
The center point(s) of this shape.

Implements RShape.

double RArc::getDiameter ( ) const
double RArc::getDirection1 ( ) const
virtual

Implements RDirected.

Reimplemented in RArcData.

double RArc::getDirection2 ( ) const
virtual

Implements RDirected.

Reimplemented in RArcData.

double RArc::getDistanceFromStart ( const RVector p) const
virtual
Returns:
Distance of given point to start point of shape along shape.
Parameters:
pPoint (assumed to be on shape).

Reimplemented from RDirected.

double RArc::getEndAngle ( ) const

Reimplemented in RArcData.

RVector RArc::getEndPoint ( ) const
virtual

Implements RDirected.

QList< RVector > RArc::getEndPoints ( ) const
virtual
Returns:
The end point(s) of this shape.

Implements RShape.

double RArc::getLength ( ) const
virtual
Returns:
The total length of this shape if applicable or NaN if not.

Implements RShape.

Reimplemented in RArcData.

RVector RArc::getMiddlePoint ( ) const
QList< RVector > RArc::getMiddlePoints ( ) const
virtual
Returns:
The middle point(s) of this shape.

Implements RShape.

QList< RVector > RArc::getPointsWithDistanceToEnd ( double  distance,
RS::From  from = RS::FromAny 
) const
virtual
Returns:
All points on this shape with the given distance to an endpoint.

Implements RShape.

double RArc::getRadius ( ) const

Reimplemented in RArcData.

RS::Side RArc::getSideOfPoint ( const RVector point) const
double RArc::getStartAngle ( ) const

Reimplemented in RArcData.

RVector RArc::getStartPoint ( ) const
virtual

Implements RDirected.

double RArc::getSweep ( ) const
Returns:
Arc sweep in rad. The sweep is the angle covered by this arc. Positive for ccw, negative for cw.
QSharedPointer< RShape > RArc::getTransformed ( const QTransform &  transform) const
virtual
Todo:
Not working as expected, fix or disable

Implements RShape.

RS::Ending RArc::getTrimEnd ( const RVector coord,
const RVector trimPoint 
)
virtual
Parameters:
coordClicked coordiante
trimPointTrim start point or end point to this coordiante.

Implements RDirected.

Reimplemented in RArcData.

RVector RArc::getVectorTo ( const RVector point,
bool  limited = true 
) const
virtual
Returns:
Shortest vector from this shape to the given point.
Parameters:
pointthe given point
limitedIf false, the shape is treaded 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.

Implements RShape.

bool RArc::isAngleWithinArc ( double  a)
inline
bool RArc::isFullCircle ( ) const
bool RArc::isReversed ( ) const

Reimplemented in RArcData.

bool RArc::isValid ( ) const
bool RArc::mirror ( const RLine axis)
virtual

Implements RShape.

bool RArc::move ( const RVector offset)
virtual

Implements RShape.

void RArc::moveEndPoint ( const RVector pos)
void RArc::moveStartPoint ( const RVector pos)
void RArc::print ( QDebug  dbg) const
protectedvirtual

Reimplemented from RShape.

bool RArc::reverse ( )
virtual

Implements RDirected.

Reimplemented in RArcData.

bool RArc::rotate ( double  rotation,
const RVector center = RDEFAULT_RVECTOR 
)
virtual

Implements RShape.

bool RArc::scale ( const RVector scaleFactors,
const RVector center = RDEFAULT_RVECTOR 
)
virtual

Implements RShape.

void RArc::setArea ( double  a)
void RArc::setCenter ( const RVector vector)
void RArc::setDiameter ( double  d)
void RArc::setEndAngle ( double  endAngle)
void RArc::setLength ( double  l)
void RArc::setRadius ( double  radius)
void RArc::setReversed ( bool  reversed)
void RArc::setStartAngle ( double  startAngle)
bool RArc::stretch ( const RPolyline area,
const RVector offset 
)
virtual

Reimplemented from RShape.

void RArc::to2D ( )
virtual

Flattens this shape to the X/Y plane.

Implements RShape.

void RArc::trimEndPoint ( const RVector p)
virtual

Implements RDirected.

Reimplemented in RArcData.

void RArc::trimStartPoint ( const RVector p)
virtual

Implements RDirected.

Reimplemented in RArcData.


Member Data Documentation

RVector RArc::center

Getter function for this property: getCenter.

Setter function for this property: setCenter

double RArc::endAngle

Getter function for this property: getEndAngle.

Setter function for this property: setEndAngle

double RArc::radius

Getter function for this property: getRadius.

Setter function for this property: setRadius

bool RArc::reversed

Getter function for this property: isReversed.

Setter function for this property: setReversed

double RArc::startAngle

Getter function for this property: getStartAngle.

Setter function for this property: setStartAngle


The documentation for this class was generated from the following files: