inline void gp_Ax3::SetAxis(const gp_Ax1& A1)
{
- Standard_Real dot = A1.Direction().Dot(vxdir);
- if(Abs(Abs(dot) - 1.) <= Precision::Angular())
- {
- if(dot > 0)
- {
- vxdir = vydir;
- vydir = axis.Direction();
- }
- else
- vxdir = axis.Direction();
- axis = A1;
- }
- else
- {
- Standard_Boolean direct = Direct();
- axis = A1;
- vxdir = axis.Direction().CrossCrossed (vxdir, axis.Direction());
- if(direct) { vydir = axis.Direction().Crossed(vxdir); }
- else { vydir = vxdir.Crossed(axis.Direction()); }
- }
+ axis.SetLocation(A1.Location());
+ SetDirection(A1.Direction());
}
inline void gp_Ax3::SetDirection(const gp_Dir& V)