X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketcherPrs%2FSketcherPrs_Angle.cpp;h=1e35ac4701f089c30dd7a1496e5eb70186596f93;hb=a5746a7f8fd8bcd555fb16f98e312c86ca1210da;hp=8603dd444b790c0801d15a8dcc34b0db2bd56a87;hpb=ec4c89c20d9e981b527288ef230f527e025f4627;p=modules%2Fshaper.git diff --git a/src/SketcherPrs/SketcherPrs_Angle.cpp b/src/SketcherPrs/SketcherPrs_Angle.cpp index 8603dd444..1e35ac470 100644 --- a/src/SketcherPrs/SketcherPrs_Angle.cpp +++ b/src/SketcherPrs/SketcherPrs_Angle.cpp @@ -82,24 +82,15 @@ void SketcherPrs_Angle::Compute(const Handle(PrsMgr_PresentationManager3d)& theP TopoDS_Edge aEdge2 = TopoDS::Edge(aTEdge2); SetMeasuredGeometry(aEdge1, aEdge2); - // Compute intersection point - TopoDS_Vertex aV1, aV2; - TopExp::Vertices(aEdge1, aV1, aV2); - gp_Pnt aPnt1 = BRep_Tool::Pnt(aV1); - gp_Pnt aPnt2 = BRep_Tool::Pnt(aV2); - std::shared_ptr aL1(new GeomAPI_Lin(aPnt1.X(), aPnt1.Y(), aPnt1.Z(), - aPnt2.X(), aPnt2.Y(), aPnt2.Z())); - TopExp::Vertices(aEdge2, aV1, aV2); - aPnt1 = BRep_Tool::Pnt(aV1); - aPnt2 = BRep_Tool::Pnt(aV2); - std::shared_ptr aL2(new GeomAPI_Lin(aPnt1.X(), aPnt1.Y(), aPnt1.Z(), - aPnt2.X(), aPnt2.Y(), aPnt2.Z())); - - std::shared_ptr aInter = aL1->intersect(aL2); - gp_Pnt aCenter = aInter->impl(); - - gp_Pnt aFLyPnt(aFlyoutPnt->x(), aFlyoutPnt->y(), aFlyoutPnt->z()); - double aDist = aCenter.Distance(aFLyPnt); + const gp_Pnt& aCenter = CenterPoint(); + const gp_Pnt& aFirst = FirstPoint(); + const gp_Pnt& aSecond = SecondPoint(); + + gp_Dir aBisector((aFirst.XYZ() + aSecond.XYZ()) * 0.5 - aCenter.XYZ()); + + gp_Pnt aFlyPnt(aFlyoutPnt->x(), aFlyoutPnt->y(), aFlyoutPnt->z()); + gp_XYZ aFlyDir = aFlyPnt.XYZ() - aCenter.XYZ(); + double aDist = aFlyDir.Dot(aBisector.XYZ()); SetFlyout(aDist); // Angle value is in degrees