+bool GeomAPI_Lin2d::isRight(const std::shared_ptr<GeomAPI_Pnt2d>& thePoint) const
+{
+ const gp_XY& aDir = MY_LIN2D->Direction().XY();
+ const gp_XY& aLoc = MY_LIN2D->Location().XY();
+ const gp_XY& aPnt = thePoint->impl<gp_Pnt2d>().XY();
+
+ return aDir.Crossed(aPnt - aLoc) > 0;
+}
+
+
+std::shared_ptr<GeomAPI_Pnt2d> GeomAPI_Lin2d::shiftedLocation(double theShift) const
+{
+ gp_Vec2d aVec = MY_LIN2D->Direction();
+ aVec = aVec.GetNormal();
+ aVec.Normalize();
+ aVec.Reverse();
+ aVec.Scale(theShift);
+ gp_Lin2d aLin = MY_LIN2D->Translated(aVec);
+ return std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(aLin.Location().X(), aLin.Location().Y()));
+}