mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
Add default value to epsilon.
Change example for python.
This commit is contained in:
parent
89fb854383
commit
72f5adf368
@ -98,7 +98,7 @@ class QgsGeometryUtils
|
||||
:rtype: bool
|
||||
%End
|
||||
|
||||
static bool segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint /Out/, bool &isIntersection /Out/, double tolerance, bool acceptImproperIntersection = false );
|
||||
static bool segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint /Out/, bool &isIntersection /Out/, const double tolerance = 1e-8, bool acceptImproperIntersection = false );
|
||||
%Docstring
|
||||
Compute the intersection between two segments
|
||||
\param p1 First segment start point
|
||||
@ -112,24 +112,23 @@ class QgsGeometryUtils
|
||||
:return: Whether the segments intersect
|
||||
* Example:
|
||||
\code{.py}
|
||||
epsilon = 1e-8
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ), epsilon )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ) )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# Whether the segments intersect, the intersection point, is intersect
|
||||
# (False, 'Point (0 0)', False)
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), epsilon )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ) )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# (False, 'Point (0 5)', True)
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), epsilon, True )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), acceptImproperIntersection=True )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# (True, 'Point (0 5)', True)
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), epsilon )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ) )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# (False, 'Point (0 2)', True)
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), epsilon, True )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), acceptImproperIntersection=True )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# (True, 'Point (0 2)', True)
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, -5 ), QgsPoint( 0, 5 ), QgsPoint( 2, 0 ), QgsPoint( -1, 0 ), epsilon )
|
||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, -5 ), QgsPoint( 0, 5 ), QgsPoint( 2, 0 ), QgsPoint( -1, 0 ) )
|
||||
ret[0], ret[1].asWkt(), ret[2]
|
||||
# (True, 'Point (0 0)', True)
|
||||
\endcode
|
||||
|
@ -63,10 +63,9 @@ void QgsMapToolCircle2TangentsPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e
|
||||
if ( mPoints.size() == 4 )
|
||||
{
|
||||
bool isIntersect = false;
|
||||
const double epsilon = 1e-8;
|
||||
QgsPoint ptInter;
|
||||
QgsGeometryUtils::segmentIntersection( mPoints.at( 0 ), mPoints.at( 1 ),
|
||||
mPoints.at( 2 ), mPoints.at( 3 ), ptInter, isIntersect, epsilon );
|
||||
mPoints.at( 2 ), mPoints.at( 3 ), ptInter, isIntersect );
|
||||
if ( !isIntersect )
|
||||
{
|
||||
QgisApp::instance()->messageBar()->pushMessage( tr( "Error" ), tr( "Segments are parallels" ),
|
||||
@ -173,19 +172,18 @@ void QgsMapToolCircle2TangentsPoint::getPossibleCenter( )
|
||||
QgsGeometry line2p = line2.offsetCurve( + mRadius, 8, QgsGeometry::JoinStyleBevel, 5 );
|
||||
|
||||
bool isIntersect = false;
|
||||
const double epsilon = 1e-8;
|
||||
QgsPoint inter;
|
||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1m.asPolyline().at( 0 ) ), QgsPoint( line1m.asPolyline().at( 1 ) ),
|
||||
QgsPoint( line2m.asPolyline().at( 0 ) ), QgsPoint( line2m.asPolyline().at( 1 ) ), inter, isIntersect, epsilon );
|
||||
QgsPoint( line2m.asPolyline().at( 0 ) ), QgsPoint( line2m.asPolyline().at( 1 ) ), inter, isIntersect );
|
||||
mCenters.append( QgsPointXY( inter ) );
|
||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1m.asPolyline().at( 0 ) ), QgsPoint( line1m.asPolyline().at( 1 ) ),
|
||||
QgsPoint( line2p.asPolyline().at( 0 ) ), QgsPoint( line2p.asPolyline().at( 1 ) ), inter, isIntersect, epsilon );
|
||||
QgsPoint( line2p.asPolyline().at( 0 ) ), QgsPoint( line2p.asPolyline().at( 1 ) ), inter, isIntersect );
|
||||
mCenters.append( QgsPointXY( inter ) );
|
||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1p.asPolyline().at( 0 ) ), QgsPoint( line1p.asPolyline().at( 1 ) ),
|
||||
QgsPoint( line2m.asPolyline().at( 0 ) ), QgsPoint( line2m.asPolyline().at( 1 ) ), inter, isIntersect, epsilon );
|
||||
QgsPoint( line2m.asPolyline().at( 0 ) ), QgsPoint( line2m.asPolyline().at( 1 ) ), inter, isIntersect );
|
||||
mCenters.append( QgsPointXY( inter ) );
|
||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1p.asPolyline().at( 0 ) ), QgsPoint( line1p.asPolyline().at( 1 ) ),
|
||||
QgsPoint( line2p.asPolyline().at( 0 ) ), QgsPoint( line2p.asPolyline().at( 1 ) ), inter, isIntersect, epsilon );
|
||||
QgsPoint( line2p.asPolyline().at( 0 ) ), QgsPoint( line2p.asPolyline().at( 1 ) ), inter, isIntersect );
|
||||
mCenters.append( QgsPointXY( inter ) );
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ bool QgsGeometryUtils::lineIntersection( const QgsPoint &p1, QgsVector v, const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool QgsGeometryUtils::segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint, bool &isIntersection, double tolerance, bool acceptImproperIntersection )
|
||||
bool QgsGeometryUtils::segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint, bool &isIntersection, const double tolerance, bool acceptImproperIntersection )
|
||||
{
|
||||
isIntersection = false;
|
||||
|
||||
|
@ -113,29 +113,28 @@ class CORE_EXPORT QgsGeometryUtils
|
||||
* \returns Whether the segments intersect
|
||||
* * Example:
|
||||
* \code{.py}
|
||||
* epsilon = 1e-8
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ), epsilon )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ) )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # Whether the segments intersect, the intersection point, is intersect
|
||||
* # (False, 'Point (0 0)', False)
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), epsilon )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ) )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # (False, 'Point (0 5)', True)
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), epsilon, True )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 5 ), QgsPoint( 1, 5 ), acceptImproperIntersection=True )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # (True, 'Point (0 5)', True)
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), epsilon )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ) )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # (False, 'Point (0 2)', True)
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), epsilon, True )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 5 ), QgsPoint( 0, 2 ), QgsPoint( 1, 5 ), acceptImproperIntersection=True )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # (True, 'Point (0 2)', True)
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, -5 ), QgsPoint( 0, 5 ), QgsPoint( 2, 0 ), QgsPoint( -1, 0 ), epsilon )
|
||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, -5 ), QgsPoint( 0, 5 ), QgsPoint( 2, 0 ), QgsPoint( -1, 0 ) )
|
||||
* ret[0], ret[1].asWkt(), ret[2]
|
||||
* # (True, 'Point (0 0)', True)
|
||||
* \endcode
|
||||
*/
|
||||
static bool segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint SIP_OUT, bool &isIntersection SIP_OUT, double tolerance, bool acceptImproperIntersection = false );
|
||||
static bool segmentIntersection( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &q1, const QgsPoint &q2, QgsPoint &intersectionPoint SIP_OUT, bool &isIntersection SIP_OUT, const double tolerance = 1e-8, bool acceptImproperIntersection = false );
|
||||
|
||||
/**
|
||||
* \brief Project the point on a segment
|
||||
|
Loading…
x
Reference in New Issue
Block a user