20 #pragma warning (push)
21 #pragma warning (default : 4266) // NEEDS WORK -- warnings about missing virtuals?
118 virtual void MakeClassAbstract() = 0;
154 GEOMDLLIMPEXP
bool SwapAt (
size_t index0,
size_t index1);
385 bool forceXYOrientation =
false);
401 bool forceXYOrientation =
false);
417 bool forceXYOrientation =
false);
560 GEOMDLLIMPEXP
double Length ()
const;
613 GEOMDLLIMPEXP
size_t CyclicIndex (
int index)
const;
732 GEOMDLLIMPEXP
void SimplifyLinestrings (
double distanceTol,
bool eliminateOverdraw,
bool wrap);
864 double primaryRadius,
865 double primarySpiralLength,
866 double offsetDistance
956 double maxDist = DBL_MAX
1068 bool considerSinglePoints,
1069 bool considerIntervals
1195 double m_pathDistance;
1213 GEOMDLLIMPEXP DPoint3d
Point ()
const;
1221 GEOMDLLIMPEXP
bool HasCurve ()
const;
1249 double m_projectedDistance;
1253 m_projectedDistance (projectedDistance),
1257 PathEntry (
double distance) :
PathLocationDetail (distance), m_projectedDistance (distance) {}
1259 double GetDistance (
bool projected)
const;
1261 static GEOMDLLIMPEXP
bool IsLessThan_ByPathDistanceXY (PathEntry
const &dataA, PathEntry
const &dataB);
1262 static GEOMDLLIMPEXP
bool IsLessThan_ByPathDistance (PathEntry
const &dataA, PathEntry
const &dataB);
1270 RotMatrix m_worldToViewRotMatrix;
1271 RotMatrix m_viewToWorldRotMatrix;
1272 RotMatrix m_flattenToView;
1283 void ClearCurves ();
1296 bool SearchByDistanceFromPathStart
1299 double targetDistance,
1317 GEOMDLLIMPEXP
bool IsEmpty ()
const;
1334 double extensionDistance,
1337 bool measureExtensionInView =
false,
1338 double maxExtensionFactor = 4.0
1356 GEOMDLLIMPEXP
bool SearchByDistanceFromPathStart
1358 double targetDistance,
1366 double targetDistanceXY,
1374 bool computeDistanceAlong
1383 double signedRadius,
1405 #ifdef BENTLEY_WIN32
1406 #pragma warning (pop)
size_t FindIndexOfPrimitive(ICurvePrimitiveCP primitive) const
return index of primitive in vector (only valid for a vector that is a single open or closed path)...
struct DVec3d const * DVec3dCP
Definition: msgeomstructs_typedefs.h:89
struct MSBsplineCurve & MSBsplineCurveR
Definition: msgeomstructs_typedefs.h:139
struct RotMatrix const * RotMatrixCP
Definition: msgeomstructs_typedefs.h:135
MSBsplineCurvePtr GetBsplineCurve() const
Represent a curve vector that denotes an open or closed path as a single bspline curve.
static void CloseApproach(CurveVectorR pointsOnA, CurveVectorR pointsOnB, ICurvePrimitiveP curveA, ICurvePrimitiveP curveB, double maxDist=DBL_MAX)
Find points (or intervals!!!) where curveA and curveB have close approach.
bool IsClosedPath() const
Query: Is this (single) closed path?
struct PartialCurveDetail & PartialCurveDetailR
Definition: msgeomstructs_typedefs.h:171
size_t CountPrimitivesOfType(ICurvePrimitive::CurvePrimitiveType targetType) const
Count primitives of specified type.
DPoint3d Point() const
Query xyz coordinates.
Curves should join head to tail in a single closed path; this area is expected to be an inner loop...
Definition: CurveVector.h:98
Center, reference vectors, and angular range for elliptic arc.
Definition: dellipse3d.h:19
size_t CyclicIndex(int index) const
return mod of index with vector length, properly corrected for negatives.
bool IsPlanar(TransformR localToWorld, TransformR worldToLocal, DRange3dR range) const
Test if the contained curves are planar.
Definition: CurveVector.h:113
PathLocationDetail FractionToPositionLocationDetail(double f, bool evaluateDistance=true) const
double ResolveTolerance(double tolerance) const
return larger of given tolerance and default tolerance based on FastMasAbs of contents ...
bool ReverseCurvesInPlace()
Recursively reverse.
static CurveVectorPtr AreaParity(CurveVectorCR regionA, CurveVectorCR regionB, CurvePrimitivePtrPairVector *newToOld=NULL)
Return a curve vector containing the parity of input areas.
DRange1d ProjectedParameterRange(DRay3dCR ray) const
Return the range of ray parameters when contents of the CurveVector are projected to a ray...
size_t AddPrimitives(CurveVectorCR source)
recurse through source. append all leaf primitives to this. Return number added.
RefCountedPtr< struct ICurvePrimitive > ICurvePrimitivePtr
Definition: GeomApi.h:112
bool CollectLinearGeometry(bvector< bvector< bvector< DPoint3d >>> ®ionsPoints) const
Add all strokes from the structure.
static void IntersectRotatedCurveSpaceCurve(TransformCR worldToLocal, CurveVectorCR rotatedCurve, ICurvePrimitiveCR spaceCurve, bvector< CurveLocationDetail > &detailA, bvector< CurveLocationDetail > &detailB)
Compute intersections of (a) a curve rotated around an axis and (b) a space curve.
struct DPoint3d const * DPoint3dCP
Definition: msgeomstructs_typedefs.h:79
Detail data for a point along a curve, allowing indexing into a subcomponent.
Definition: CurveDetails.h:56
double DistanceBetweenPointsXY(DPoint3dCR xyzA, DPoint3dCR xyzB) const
projected distance between points
CurveVectorPtr CloneWithBlends(BlendType, double radiusA, double radiusB) const
return a (deep) clone with fillets inserted between successive curves.
void SetPath(CurveVectorPtr &path)
Announce the path to be indexed.
CurveVectorPtr Stroke(IFacetOptionsR options) const
Return a "deep copy" with primitives replaced by strokes.
void SimplifyLinestrings(double distanceTol, bool eliminateOverdraw, bool wrap)
Inplace update to consolidate colinear interior points of linestrings.
bool IsAnyRegionType() const
Query: is this any closed area type (single, parity, union)
double TotalPathLength() const
Return complete path length.
static operations on curves.
Definition: CurveVector.h:877
CurveVectorPtr CloneWithExplodedLinestrings() const
Return a curve vector that is a clone, but with all polylines split into individual line segments...
CurveVector::InOutClassification PointInOnOutXY(DPoint3dCR xyz) const
Test if a point is in, on, or outside when looking at xy plane.
CurveVectorPtr CloneOffsetCurvesXY(CurveOffsetOptionsCR options)
return a (deep) clone with all curves offset by signed distance.
struct DVec3d & DVec3dR
Definition: msgeomstructs_typedefs.h:89
bool ComputeSecondMomentDifferentialAreaRotationProducts(DRay3dCR rotationAxis, TransformR rotationToWorld, DMatrix4dR products) const
Return the moment products [xx,xy,xz,xw; etc] of the area as a differential rotational slice...
bool IsSameStructure(CurveVectorCR other) const
Recursive check for structural match (tree structure and leaf type) with the other curve vector...
bool SearchByDistanceFromPathStartXY(double targetDistanceXY, PathLocationDetail &detail) const
Return detailed curve location for the position at targetDistance along the curve, measuring in path distance.
static bool ClosestApproachNewton(ICurvePrimitiveCR curveA, ICurvePrimitiveCR curveB, double &fractionA, double &fractionB, DPoint3dR xyzA, DPoint3dR xyzB)
Run a Newton iteration from given start positions to search for a close approach point.
#define END_BENTLEY_GEOMETRY_NAMESPACE
Definition: Bentley.r.h:30
static bool IsContained(CurveVectorR intersectionA, CurveVectorR intersectionB, size_t i, size_t j, bool considerSinglePoints, bool considerIntervals)
Test if interval i is contained in interval j.
CurveVectorPtr CloneAsBsplines() const
Return a "deep copy" with primitives replaced by bsplines The tree upper levels of the tree structure...
static bool IsLessThan_ByPathDistance(PathLocationDetail const &dataA, PathLocationDetail const &dataB)
Comparison using only the stored distance.
BoundaryType GetBoundaryType() const
Return the type code indicating whether the vector is a path, outer boundary, inner boundary...
ICurvePrimitivePtr PlaneSection(DPlane3dCR plane, double tolerance=0.0) const
Compute intersections of closed CurveVector with a plane and organize as start end pairs by parity ru...
struct ICurvePrimitive * ICurvePrimitiveP
Definition: msgeomstructs_typedefs.h:166
double MaxGapWithinPath() const
Maximum gap distance between end of primitive and start of its successor within Open, outer, or Inner loop.
PathLocationDetail AtEnd() const
Return the final location.
ICurvePrimitivePtr GetCyclic(ptrdiff_t index) const
return child at cyclic index, propertly corrected for negatives.
RefCountedPtr< RefCountedMSBsplineCurve > MSBsplineCurvePtr
Definition: GeomApi.h:116
void ConsolidateAdjacentPrimitives()
Inplace update to consolidate contiguous parts.
BlendType
Enumeration of variants of blend calculations.
Definition: CurveDetails.h:507
void AppendCurvePlaneIntersections(DPlane3dCR plane, bvector< CurveLocationDetailPair > &intersections, double tolerance=0.0) const
Compute simple points of intersection of the curve with a plane.
bool HasCurve() const
Test if there is a curve.
CurveVectorPtr CloneWithGapsClosed(CurveGapOptionsCR options) const
return a (deep) clone with endpoint gaps closed.
Definition: CurveVector.h:112
static CurveVectorPtr CreateXYHatch(CurveVectorCR boundary, DPoint3dCR startPoint, double angleRadians, double spacing, int selection=0)
Return a curve vector (of type BOUNDARY_TYPE_None) containing hatch sticks.
RefCountedPtr< struct CurveVector > CurveVectorPtr
Definition: GeomApi.h:113
InOutClassification
Classification of a point wrt a closed shape.
Definition: CurveVector.h:108
bool GetStartPoint(DPoint3dR point) const
Return start point of the primitive (or first primitive in deep search)
struct RotMatrix const & RotMatrixCR
Definition: msgeomstructs_typedefs.h:135
struct CurveVector const & CurveVectorCR
Definition: msgeomstructs_typedefs.h:172
bool IsPhysicallyClosedPath() const
Query: Is this a nominally open path but with matching start and end?
int int32_t
Definition: Bentley.r.h:92
double TotalPathLengthXY() const
Return complete path length as flattened into the view.
bool CentroidNormalArea(DPoint3dR centroid, DVec3dR normal, double &area) const
Return the centroid, normal and area of the curve vector.
double DistanceToPoint(PathLocationDetail const &other) const
distance between points of this and other detail.
CurveVectorPtr CloneBetweenDirectedFractions(int index0, double fraction0, int index1, double fraction1, bool allowExtrapolation) const
Return a new vector containing curves from index0,fraction0 to index1,fraction1 with the (signed int!...
struct CurveGapOptions const & CurveGapOptionsCR
Definition: msgeomstructs_typedefs.h:163
struct Transform & TransformR
Definition: msgeomstructs_typedefs.h:134
void Add(ICurvePrimitivePtr child)
add single curve primitive
bool IsEllipticDisk(DEllipse3dR ellipse) const
Query: Is this an outer loop with an ellipse as its only curve?
PathLocationDetail()
Constructor – all zeros except pathIndex is -1.
Context for searching a path by "distance along" Position along the path is described by a CurveLocat...
Definition: CurveVector.h:1243
bool ContainsNonLinearPrimitive() const
Return true if CurveVector has a component that is not a line or linestring.
#define NULL
Definition: Bentley.h:157
double DistanceFromPathStart() const
Queryt the stored distance to path start. Note that this is not a recompute – just a member access...
static CurveVectorPtr Create(BoundaryType boundaryType)
Create a curve vector with given boundary type and no members.
AreaSelect
Definition: CurveDetails.h:514
int CurveLocationDetailCompare(CurveLocationDetail const &location0, CurveLocationDetail const &location1) const
return 0 of locations are equal, -1 if location 0 is less than location 1, and 1 if location 0 > loca...
CurveLocationDetail detailB
Definition: CurveVector.h:1096
bool WireCentroid(double &length, DPoint3dR centroid) const
Return the centroid of the contained curves, considered as wires.
CurvePrimitiveType
Enumeration of possible curve primitive types.
Definition: CurvePrimitive.h:53
static void IntersectionRotatedRay(bvector< CurveLocationDetail > &intersectionA, bvector< CurveLocationDetail > &intersectionB, ICurvePrimitiveCP curveA, TransformCR worldToLocal, DRay3dCR rayB)
Collect apparent intersections between rotating curves and a ray.
size_t CurveLocationDetailIndex(CurveLocationDetail const &location) const
return index of curve location detail in vector (only valid for a vector that is a single open or clo...
friend struct CurvePrimitiveChildCurveVector
Definition: CurveVector.h:116
CurveVectorPtr CloneDereferenced(bool allowExtrapolation=false, bool maximumDeref=true) const
Return a "deep copy" with PartialCurve primitives replaced by full curves.
bool ComputeSecondMomentWireProducts(DMatrix4dR products) const
Return the area, centroid, orientation, and principal moments, treating this as a wire...
struct IFacetOptions & IFacetOptionsR
Definition: msgeomstructs_typedefs.h:162
LocalCoordinateSelect
Definition: msgeomstructs_typedefs.h:231
bool ComputeSecondMomentDifferentialWireRotationProducts(DRay3dCR rotationAxis, TransformR rotationToWorld, DMatrix4dR products) const
Return the moment products [xx,xy,xz,xw; etc] of the wire as a differential rotational contribution...
static CurveVectorPtr ConstructSpiralArcSpiralTransition(DPoint3dCR xyz0, DPoint3dCR xyz1, DPoint3dCR xyz2, double arcRadius, double spiralLength)
Return a curveVector with spiral-arc-spiral transtion between two lines, subject to: ul> li>specified...
static CurveVectorPtr AreaAnalysis(CurveVectorCR region, AreaSelect select1, BoolSelect select2, bool reverse)
Return a curve vector containing the "inside" areas by various conditions.
bool TransformInPlace(TransformCR transform)
Apply a transform to all contained curves.
struct DEllipse3d & DEllipse3dR
Definition: msgeomstructs_typedefs.h:114
static bool IsSinglePointPair(CurveVectorR intersectionA, CurveVectorR intersectionB, size_t i, double &fractionA, DPoint3dR pointA, double &fractionB, DPoint3dR pointB)
Convenience function for extracting single point intersection from the output of CurveCurveIntersecti...
Expected to contain (only) multiple CurveVectors, all of which are either BOUNDARY_TYPE_Open or BOUND...
Definition: CurveVector.h:101
static bool TransverseRegionIntersectionSegments(CurveVectorCR regionA, CurveVectorCR regionB, bvector< DSegment3d > &segments)
Determine the line of intersection of the planes of the two containing planes.
CurveVectorPtr CloneInLocalCoordinates(LocalCoordinateSelect frameType, TransformR localToWorld, TransformR worldToLocal, DRange3dR localRange) const
Return curve copy and transforms for a local coordinate system related to the curves.
struct DRange3d & DRange3dR
Definition: msgeomstructs_typedefs.h:108
struct CurveVector * CurveVectorP
Definition: msgeomstructs_typedefs.h:172
RefCountedPtr< struct CurveVectorWithDistanceIndex > CurveVectorWithDistanceIndexPtr
Definition: GeomApi.h:114
static CurveVectorPtr AreaUnion(CurveVectorCR regionA, CurveVectorCR regionB, CurvePrimitivePtrPairVector *newToOld=NULL)
Return a curve vector containing the union of input areas.
bool AreStartEndAlmostEqual() const
Query: Does this have start and end points and are the points almost equal?
void AppendSplitCurvesByPlane(DPlane3dCR plane, CurveVectorP belowCollector, CurveVectorP aboveCollector, CurveVectorP onCollector)
Return curves (not regions) that are below, above, and on a plane.
static void CollectBlends(ICurvePrimitiveR curveA, ICurvePrimitiveR curveB, BlendType blendType, double distanceA, double distanceB, bool extend, bvector< BlendDetail > &blendCurves)
Compute all possible blend curves between pairs of curves from two sources.
BentleyStatus
Definition: Bentley.h:208
bool DistanceXYFromPathStart(PathLocationDetail const &detail, double &distance) const
! Given a path location, find the projected curve distance from the path start.
Curves should join head to tail in a single path. The path is not expected to be closed.
Definition: CurveVector.h:94
CurveVectorPtr FindParentOfPrimitive(ICurvePrimitiveCP primitive) const
Search the tree (below the calling instance) for the curve vector which is the immediate parent of gi...
struct DRange3d const & DRange3dCR
Definition: msgeomstructs_typedefs.h:108
Collector object for various searches.
Definition: CurveDetails.h:646
CurveVectorPtr AssembleChains()
Join curve primitives head to tail.
static CurveVectorPtr AreaDifference(CurveVectorCR regionA, CurveVectorCR regionB, CurvePrimitivePtrPairVector *newToOld=NULL)
Return a curve vector containing the difference of input areas.
bool IsEmpty() const
Return true if there are no curves.
struct ICurvePrimitive & ICurvePrimitiveR
Definition: msgeomstructs_typedefs.h:166
bool GetAnyFrenetFrame(TransformR frame) const
Deep search for any curve primitive that has a well defined coordinate frame.
bool IsUnionRegion() const
Query: is this a collection of areas with union rules?
struct CurveLocationDetail & CurveLocationDetailR
Definition: msgeomstructs_typedefs.h:167
bool GetStartEnd(DPoint3dR pointA, DPoint3dR pointB) const
Return first/last among children.
bool GetRange(DRange3dR range) const
Return the xyz range of contained curves.
struct DMatrix4d & DMatrix4dR
Definition: msgeomstructs_typedefs.h:97
void AnnounceKeyPoints(DPoint3dCR spacePoint, CurveKeyPointCollector &collector, bool extend0, bool extend1) const
Search for various keypoints (as requested by the collector) During recursion, extension bits are cha...
static void IntersectionsXY(CurveVectorR intersectionA, CurveVectorR intersectionB, CurveVectorR curveA, CurveVectorR curveB, DMatrix4dCP pWorldToLocal)
Collect apparent intersections between curves as viewed in XY plane, optionally after a transform...
A Bentley supplied implementation std::vector.
Definition: stdcxx/bvector.h:77
bool ClosestPointBounded(DPoint3dCR spacePoint, CurveLocationDetailR location) const
Search for the closest point on any contained curve.
struct DPlane3d const & DPlane3dCR
Definition: msgeomstructs_typedefs.h:113
struct DPoint3d & DPoint3dR
Definition: msgeomstructs_typedefs.h:79
bool IsRectangle(TransformR localToWorld, TransformR worldToLocal) const
Query: Is this a rectangle?
static CurveVectorPtr CreateDisk(DEllipse3dCR arc, BoundaryType boundaryType=CurveVector::BOUNDARY_TYPE_Outer, bool forceXYOrientation=false)
Create a (deep) curve vector structure for a complete elliptic (circular) disk.
Definition: CurveVector.h:110
DEllipse3d arc
Definition: CurveVector.h:1097
static bool GetPartialCurveDetailPair(CurveVectorR intersectionA, CurveVectorR intersectionB, size_t i, PartialCurveDetailR detailA, PartialCurveDetailR detailB)
Convenience function for extracting PartialCurveDetail data from two arrays returned by CurveCurve::I...
struct ICurvePrimitive const & ICurvePrimitiveCR
Definition: msgeomstructs_typedefs.h:166
bool CentroidAreaXY(DPoint3dR centroid, double &area) const
Return the centroid and area of the curve vector as viewed in the xy plane.
struct SolidLocationDetail & SolidLocationDetailR
Definition: msgeomstructs_typedefs.h:186
A 1d interval with low and high values.
Definition: DRange1d.h:41
struct DMatrix4d const * DMatrix4dCP
Definition: msgeomstructs_typedefs.h:97
bool IsSameStructureAndGeometry(CurveVectorCR other, double tolerance=0.0) const
Recursive check for match (tree structure.
CurveVectorPtr CloneWithSplits(CurveVectorCR splitterCurves, bool primitivesOnly=false)
Return a curve vector that is a clone, but with all primitives split at intersections with any splitt...
CurveVector::InOutClassification ClosestCurveOrRegionPoint(DPoint3dCR spacePoint, DPoint3dR curveOrRegionPoint) const
Search for closest point on curve.
BoundaryType
Classification of expected structure within a CurveVector.
Definition: CurveVector.h:86
struct CurveVector & CurveVectorR
Definition: msgeomstructs_typedefs.h:172
struct Transform const & TransformCR
Definition: msgeomstructs_typedefs.h:134
CurveVectorPtr GenerateAllParts(int indexA, double fractionA, int indexB, double fractionB) const
Return a CurveVector (BOUNDARY_TYPE_None) which is a collection of open CurveVectors that collectivel...
static bool ClosestApproach(CurveLocationDetailR pointOnA, CurveLocationDetailR pointOnB, ICurvePrimitiveP curveA, ICurvePrimitiveP curveB)
Find a single point where curveA and curveB have closest approach.
static CurveVectorPtr CreateSpiralLineToLineShift(int transitionType, DPoint3dCR pointA, DPoint3dCR shoulderB, DPoint3dCR shoulderC, DPoint3dCR pointD)
Return a curveVector with spiral transition between two lines, with shoulder points controlling the s...
bool ClosestPointBoundedXY(DPoint3dCR spacePoint, DMatrix4dCP worldToLocal, CurveLocationDetailR location) const
Search for the closest point on any contained curve, using only xy (viewed) coordinates.
no specific properties expected for contained curves or points.
Definition: CurveVector.h:92
struct CurveLocationDetail const & CurveLocationDetailCR
Definition: msgeomstructs_typedefs.h:167
A PathLocationDetail is a detailed description of where a point is along multi-curve path...
Definition: CurveVector.h:1189
void AppendSplitCurvesByRegion(CurveVectorCR region, CurveVectorP insideCollector, CurveVectorP outsideCollector, CurveVectorP onCollector)
Return curves (not regions) that are inside, outside, or on a region.
bool AddSpacedPoints(bvector< double > const &distances, bvector< CurveLocationDetail > &locations) const
Compute points at (many) specified distances along the (many) curves in the CurveVector.
bool SearchFirstIntersectionWithCircleXY(PathLocationDetail const &startLocation, double signedRadius, PathLocationDetail &intersectionLocation) const
! Start at specified location.
struct ICurvePrimitive const * ICurvePrimitiveCP
Definition: msgeomstructs_typedefs.h:166
CurveLocationDetail GetCurveLocationDetail() const
Query CurveLocationDetail with fractional position for queries.
bool TryUVFractionToXYZ(double uFraction, double vFraction, DPoint3dR xyz, DVec3dR dXdu, DVec3dR dXdv) const
convert u,v fraction to xyz and derivatives.
Expected to contain (only) multiple CurveVectors, all of which have area.
Definition: CurveVector.h:104
double ReorderForSmallGaps()
Reorder curve primitives to produce small head-to-tail gaps.
bool SetExtendedPath(CurveVectorPtr &path, double extensionDistance, PathLocationDetail &boundedStart, PathLocationDetail &boundedEnd, bool measureExtensionInView=false, double maxExtensionFactor=4.0)
Announce the path to be indexed.
CurveVectorPtr CloneReversed() const
Return a new curve vector that has all components reversed.
struct CurveOffsetOptions const & CurveOffsetOptionsCR
Definition: msgeomstructs_typedefs.h:170
struct DEllipse3d const & DEllipse3dCR
Definition: msgeomstructs_typedefs.h:114
Definition: CurveVector.h:111
bool ComputeSecondMomentAreaProducts(DMatrix4dR products) const
Return the area, centroid, orientation, and principal moments, treating this as a thin planar sheet...
Detail about a computed fillet.
Definition: CurveVector.h:1094
pointer data()
Definition: stdcxx/bvector.h:322
#define BEGIN_BENTLEY_GEOMETRY_NAMESPACE
Definition: Bentley.r.h:29
struct DPoint3d const & DPoint3dCR
Definition: msgeomstructs_typedefs.h:79
PathLocationDetail AtStart() const
Return the start location.
bool IsPlanarWithDefaultNormal(TransformR localToWorld, TransformR worldToLocal, DRange3dR range, DVec3dCP normal) const
Test if the contained curves are planar.
static CurveVectorPtr ReduceToCCWAreas(CurveVectorCR regionA)
Return a curve vector containing only clockwise areas.
static CurveVectorPtr AreaIntersection(CurveVectorCR regionA, CurveVectorCR regionB, CurvePrimitivePtrPairVector *newToOld=NULL)
Return a curve vector containing the intersection of input areas.
double FastLength() const
Sum lengths of contained curves, using fast method that may overestimate the length but is reasonable...
ICurvePrimitive::CurvePrimitiveType HasSingleCurvePrimitive() const
Return true if the curve vector has a single element and that element is a primitive.
CurveVectorPtr CloneWithFillets(double radius) const
return a (deep) clone with fillets inserted between successive curves.
CurveVector::InOutClassification RayPierceInOnOut(DRay3dCR ray, SolidLocationDetailR hitDetail) const
Test for a ray hit in the curve vector's planar region.
struct DRay3d const & DRay3dCR
Definition: msgeomstructs_typedefs.h:120
static CurveVectorWithDistanceIndexPtr Create()
Constructor for xy viewing.
Curves should join head to tail in a single closed path; this area expected to be an outer (or only) ...
Definition: CurveVector.h:96
void AddStrokePoints(bvector< DPoint3d > &points, IFacetOptionsR options) const
Add stroke points form all children to output.
bool FixupXYOuterInner(bool fullGeometryCheck=false)
Update order, boundary type, and direction of contained loops.
bool SwapAt(size_t index0, size_t index1)
Swap the entries at given indices. Return false if either index is out of bounds. ...
double FastMaxAbs() const
Return a fast estimate of the maximum absoluted value in any coordinate. This will examine all curves...
DPoint3d PointAndUnitTangent(DVec3dR unitTangent) const
Query xyz coordinates and normalized tangent vector. (This reevaluates the curve) ...
struct DPoint2d const * DPoint2dCP
Definition: msgeomstructs_typedefs.h:78
CurveVectorPtr CloneBetweenCyclicIndexedFractions(int index0, double fraction0, int index1, double fraction1) const
Return a new vector containing curves from index0,fraction0 to index1,fraction1 with the (signed int!...
PathLocationDetail SearchClosestPointBounded(DPoint3dCR spacePoint, bool computeDistanceAlong) const
! Search for curve point closest to given space point.
CurveVectorPtr AreaOffset(CurveOffsetOptionsCR options) const
return a (deep) clone with all areas increased or decreased according to the offset distance...
double Length() const
Sum lengths of contained curves.
BoolSelect
Definition: CurveDetails.h:524
bool AppendClosedCurvePlaneIntersections(DPlane3dCR plane, bvector< CurveLocationDetailPair > &intersections, double tolerance=0.0) const
Compute intersections of closed CurveVector with a plane and organize as start end pairs by parity ru...
static CurveVectorPtr CreateLinear(bvector< DPoint3d > const &points, BoundaryType boundaryType=CurveVector::BOUNDARY_TYPE_Open, bool forceXYOrientation=false)
Create a linestring or polygon from xyz data.
static CurveVectorPtr CreateRectangle(double x0, double y0, double x1, double y1, double z, BoundaryType boundaryType=CurveVector::BOUNDARY_TYPE_Outer)
Create a rectangle from xy corners.
BentleyStatus ToBsplineCurve(MSBsplineCurveR curve) const
Represent a curve vector that denotes an open or closed path as a single bspline curve.
bool IsParityRegion() const
Query: Is this a collection of loops with parity rules?
static CurveVectorPtr ConstructSpiralArcSpiralTransitionPseudoOffset(DPoint3dCR primaryPoint0, DPoint3dCR primaryPoint1, DPoint3dCR primaryPoint2, double primaryRadius, double primarySpiralLength, double offsetDistance)
Construct a spiral-arc-spiral transition that is an (approximate) offset of a primary transition...
double DistanceSquaredToPoint(DPoint3dCR xyz) const
distance squared to given point.
static void CollectFilletArcs(ICurvePrimitiveR curveA, ICurvePrimitiveR curveB, double radius, bool extend, bvector< FilletDetail > &arcs)
compute all possible fillet arcs between primitives.
CurveVectorPtr Clone() const
Return a "deep copy".
A 3d low and high corner pair for range boxes.
Definition: drange3d.h:20
void SwapContents(CurveVectorR other)
Swap bvectors and type.
CurveLocationDetail detailA
Definition: CurveVector.h:1096
void FindPrimitivesWithNearbyStartEnd(bvector< CurveLocationDetail > &data, DPoint3dCR xyz, double tolerance) const
Search for children whose start or end is close to a search point.
A CurveVector is a collection of curve primitives.
Definition: CurveVector.h:78
bool IsOpenPath() const
Query: Is this an open path?
4x4 matrix used for perspective (homogeneous coordinate) calculations.
Definition: dmatrix4d.h:18