Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / GeomAPI / GeomAPI_XYZ.cpp
index 30c246323a26d18feb7e9e8b9117816852c4b5b9..f413005fd0aebc80ab6744fef5787a82920b4a85 100644 (file)
@@ -50,9 +50,35 @@ const boost::shared_ptr<GeomAPI_XYZ> GeomAPI_XYZ::added(
   return aResult;
 }
 
+const boost::shared_ptr<GeomAPI_XYZ> GeomAPI_XYZ::decreased(
+  const boost::shared_ptr<GeomAPI_XYZ>& theArg)
+{
+  boost::shared_ptr<GeomAPI_XYZ> aResult(new GeomAPI_XYZ(MY_XYZ->X() - theArg->x(),
+    MY_XYZ->Y() - theArg->y(), MY_XYZ->Z() - theArg->z()));
+  return aResult;
+}
+
 const boost::shared_ptr<GeomAPI_XYZ> GeomAPI_XYZ::multiplied(const double theArg)
 {
   boost::shared_ptr<GeomAPI_XYZ> aResult(new GeomAPI_XYZ(MY_XYZ->X() * theArg,
     MY_XYZ->Y() * theArg, MY_XYZ->Z() * theArg));
   return aResult;
 }
+
+double GeomAPI_XYZ::dot(const boost::shared_ptr<GeomAPI_XYZ>& theArg) const
+{
+  return MY_XYZ->Dot(theArg->impl<gp_XYZ>());
+}
+
+const boost::shared_ptr<GeomAPI_XYZ> GeomAPI_XYZ::cross(const boost::shared_ptr<GeomAPI_XYZ>& theArg) const
+{
+  gp_XYZ aResult = MY_XYZ->Crossed(theArg->impl<gp_XYZ>());
+  return boost::shared_ptr<GeomAPI_XYZ>(new GeomAPI_XYZ(aResult.X(), aResult.Y(), aResult.Z()));
+}
+
+double GeomAPI_XYZ::distance(const boost::shared_ptr<GeomAPI_XYZ>& theOther) const
+{
+  gp_XYZ aResult(theOther->x() - x(), theOther->y() - y(), theOther->z() - z());
+  return aResult.Modulus();
+}
+