double QgsCurvePolygon::vertexAngle( QgsVertexId vertex ) const { if ( !mExteriorRing || vertex.ring < 0 || vertex.ring >= 1 + mInteriorRings.size() ) { //makes no sense - conversion of false to double! return false; } QgsCurve *ring = vertex.ring == 0 ? mExteriorRing.get() : mInteriorRings[vertex.ring - 1]; return ring->vertexAngle( vertex ); }
double QgsCompoundCurve::vertexAngle( QgsVertexId vertex ) const { QVector< QPair<int, QgsVertexId> > curveIds = curveVertexId( vertex ); if ( curveIds.size() == 1 ) { QgsCurve *curve = mCurves[curveIds.at( 0 ).first]; return curve->vertexAngle( curveIds.at( 0 ).second ); } else if ( curveIds.size() > 1 ) { QgsCurve *curve1 = mCurves[curveIds.at( 0 ).first]; QgsCurve *curve2 = mCurves[curveIds.at( 1 ).first]; double angle1 = curve1->vertexAngle( curveIds.at( 0 ).second ); double angle2 = curve2->vertexAngle( curveIds.at( 1 ).second ); return QgsGeometryUtils::averageAngle( angle1, angle2 ); } else { return 0.0; } }