// Copyright (c) 1995-1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. // JCV, LPA 07/92 inline gp_Ax1::gp_Ax1() : loc(0.,0.,0.), vdir(0.,0.,1.) { } inline gp_Ax1::gp_Ax1 (const gp_Pnt& P, const gp_Dir& V) : loc(P), vdir(V) { } inline void gp_Ax1::SetDirection (const gp_Dir& V) { vdir = V; } inline void gp_Ax1::SetLocation (const gp_Pnt& P) { loc = P; } inline const gp_Dir& gp_Ax1::Direction () const { return vdir; } inline const gp_Pnt& gp_Ax1::Location () const { return loc; } inline Standard_Boolean gp_Ax1::IsNormal (const gp_Ax1& Other, const Standard_Real AngularTolerance) const { return vdir.IsNormal(Other.vdir, AngularTolerance); } inline Standard_Boolean gp_Ax1::IsOpposite (const gp_Ax1& Other, const Standard_Real AngularTolerance) const { return vdir.IsOpposite(Other.vdir, AngularTolerance); } inline Standard_Boolean gp_Ax1::IsParallel (const gp_Ax1& Other, const Standard_Real AngularTolerance) const { return vdir.IsParallel(Other.vdir, AngularTolerance); } inline Standard_Real gp_Ax1::Angle (const gp_Ax1& Other) const { return vdir.Angle (Other.vdir); } inline void gp_Ax1::Reverse () { vdir.Reverse(); } inline gp_Ax1 gp_Ax1::Reversed () const { gp_Dir D = vdir.Reversed(); return gp_Ax1(loc, D); } inline void gp_Ax1::Rotate (const gp_Ax1& A1, const Standard_Real Ang) { loc.Rotate(A1, Ang); vdir.Rotate(A1 , Ang); } inline gp_Ax1 gp_Ax1::Rotated (const gp_Ax1& A1, const Standard_Real Ang) const { gp_Ax1 A = *this; A.Rotate (A1, Ang); return A; } inline void gp_Ax1::Scale (const gp_Pnt& P, const Standard_Real S) { loc.Scale (P, S); if (S < 0.0) vdir.Reverse(); } inline gp_Ax1 gp_Ax1::Scaled (const gp_Pnt& P, const Standard_Real S) const { gp_Ax1 A1 = *this; A1.Scale (P, S); return A1; } inline void gp_Ax1::Transform (const gp_Trsf& T) { loc.Transform(T); vdir.Transform(T); } inline gp_Ax1 gp_Ax1::Transformed (const gp_Trsf& T) const { gp_Ax1 A1 = *this; A1.Transform (T); return A1; } inline void gp_Ax1::Translate (const gp_Vec& V) { loc.Translate (V); } inline gp_Ax1 gp_Ax1::Translated (const gp_Vec& V) const { gp_Ax1 A1 = *this; (A1.loc).Translate (V); return A1; } inline void gp_Ax1::Translate (const gp_Pnt& P1, const gp_Pnt& P2) { loc.Translate (P1, P2); } inline gp_Ax1 gp_Ax1::Translated (const gp_Pnt& P1, const gp_Pnt& P2) const { gp_Ax1 A1 = *this; (A1.loc).Translate (P1, P2); return A1; }