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
|
:rtype: bool
|
||||||
%End
|
%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
|
%Docstring
|
||||||
Compute the intersection between two segments
|
Compute the intersection between two segments
|
||||||
\param p1 First segment start point
|
\param p1 First segment start point
|
||||||
@ -112,24 +112,23 @@ class QgsGeometryUtils
|
|||||||
:return: Whether the segments intersect
|
:return: Whether the segments intersect
|
||||||
* Example:
|
* Example:
|
||||||
\code{.py}
|
\code{.py}
|
||||||
epsilon = 1e-8
|
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ) )
|
||||||
ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ), epsilon )
|
|
||||||
ret[0], ret[1].asWkt(), ret[2]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# Whether the segments intersect, the intersection point, is intersect
|
# Whether the segments intersect, the intersection point, is intersect
|
||||||
# (False, 'Point (0 0)', False)
|
# (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]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# (False, 'Point (0 5)', True)
|
# (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]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# (True, 'Point (0 5)', True)
|
# (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]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# (False, 'Point (0 2)', True)
|
# (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]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# (True, 'Point (0 2)', True)
|
# (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]
|
ret[0], ret[1].asWkt(), ret[2]
|
||||||
# (True, 'Point (0 0)', True)
|
# (True, 'Point (0 0)', True)
|
||||||
\endcode
|
\endcode
|
||||||
|
@ -63,10 +63,9 @@ void QgsMapToolCircle2TangentsPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e
|
|||||||
if ( mPoints.size() == 4 )
|
if ( mPoints.size() == 4 )
|
||||||
{
|
{
|
||||||
bool isIntersect = false;
|
bool isIntersect = false;
|
||||||
const double epsilon = 1e-8;
|
|
||||||
QgsPoint ptInter;
|
QgsPoint ptInter;
|
||||||
QgsGeometryUtils::segmentIntersection( mPoints.at( 0 ), mPoints.at( 1 ),
|
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 )
|
if ( !isIntersect )
|
||||||
{
|
{
|
||||||
QgisApp::instance()->messageBar()->pushMessage( tr( "Error" ), tr( "Segments are parallels" ),
|
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 );
|
QgsGeometry line2p = line2.offsetCurve( + mRadius, 8, QgsGeometry::JoinStyleBevel, 5 );
|
||||||
|
|
||||||
bool isIntersect = false;
|
bool isIntersect = false;
|
||||||
const double epsilon = 1e-8;
|
|
||||||
QgsPoint inter;
|
QgsPoint inter;
|
||||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1m.asPolyline().at( 0 ) ), QgsPoint( line1m.asPolyline().at( 1 ) ),
|
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 ) );
|
mCenters.append( QgsPointXY( inter ) );
|
||||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1m.asPolyline().at( 0 ) ), QgsPoint( line1m.asPolyline().at( 1 ) ),
|
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 ) );
|
mCenters.append( QgsPointXY( inter ) );
|
||||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1p.asPolyline().at( 0 ) ), QgsPoint( line1p.asPolyline().at( 1 ) ),
|
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 ) );
|
mCenters.append( QgsPointXY( inter ) );
|
||||||
QgsGeometryUtils::segmentIntersection( QgsPoint( line1p.asPolyline().at( 0 ) ), QgsPoint( line1p.asPolyline().at( 1 ) ),
|
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 ) );
|
mCenters.append( QgsPointXY( inter ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,7 @@ bool QgsGeometryUtils::lineIntersection( const QgsPoint &p1, QgsVector v, const
|
|||||||
return true;
|
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;
|
isIntersection = false;
|
||||||
|
|
||||||
|
@ -113,29 +113,28 @@ class CORE_EXPORT QgsGeometryUtils
|
|||||||
* \returns Whether the segments intersect
|
* \returns Whether the segments intersect
|
||||||
* * Example:
|
* * Example:
|
||||||
* \code{.py}
|
* \code{.py}
|
||||||
* epsilon = 1e-8
|
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ) )
|
||||||
* ret = QgsGeometryUtils.segmentIntersection( QgsPoint( 0, 0 ), QgsPoint( 0, 1 ), QgsPoint( 1, 1 ), QgsPoint( 1, 0 ), epsilon )
|
|
||||||
* ret[0], ret[1].asWkt(), ret[2]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # Whether the segments intersect, the intersection point, is intersect
|
* # Whether the segments intersect, the intersection point, is intersect
|
||||||
* # (False, 'Point (0 0)', False)
|
* # (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]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # (False, 'Point (0 5)', True)
|
* # (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]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # (True, 'Point (0 5)', True)
|
* # (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]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # (False, 'Point (0 2)', True)
|
* # (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]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # (True, 'Point (0 2)', True)
|
* # (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]
|
* ret[0], ret[1].asWkt(), ret[2]
|
||||||
* # (True, 'Point (0 0)', True)
|
* # (True, 'Point (0 0)', True)
|
||||||
* \endcode
|
* \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
|
* \brief Project the point on a segment
|
||||||
|
Loading…
x
Reference in New Issue
Block a user