0024166: Unable to create file with "Save" menu of voxeldemo Qt sample
[occt.git] / src / gp / gp_Lin.cxx
CommitLineData
b311480e 1// Copyright (c) 1995-1999 Matra Datavision
2// Copyright (c) 1999-2012 OPEN CASCADE SAS
3//
4// The content of this file is subject to the Open CASCADE Technology Public
5// License Version 6.5 (the "License"). You may not use the content of this file
6// except in compliance with the License. Please obtain a copy of the License
7// at http://www.opencascade.org and read it completely before using this file.
8//
9// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11//
12// The Original Code and all software distributed under the License is
13// distributed on an "AS IS" basis, without warranty of any kind, and the
14// Initial Developer hereby disclaims all such warranties, including without
15// limitation, any warranties of merchantability, fitness for a particular
16// purpose or non-infringement. Please see the License for the specific terms
17// and conditions governing the rights and limitations under the License.
18
7fd59977 19// JCV 30/08/90 Modif passage version C++ 2.0 sur Sun
20// JCV 1/10/90 Changement de nom du package vgeom -> gp
21// JCV 12/12/90 modifs suite a la premiere revue de projet
22
23#include <gp_Lin.ixx>
24
25Standard_Real gp_Lin::Distance (const gp_Lin& Other) const
26{
27 if (pos.IsParallel (Other.pos, gp::Resolution())) {
28 return Other.Distance(pos.Location());
29 }
30 else {
31 gp_Dir dir(pos.Direction().Crossed(Other.pos.Direction()));
32 Standard_Real D = gp_Vec (pos.Location(),Other.pos.Location())
33 .Dot(gp_Vec(dir));
34 if (D < 0) D = - D;
35 return D;
36 }
37}
38
39void gp_Lin::Mirror (const gp_Pnt& P)
40{ pos.Mirror(P); }
41
42gp_Lin gp_Lin::Mirrored (const gp_Pnt& P) const
43{
44 gp_Lin L = *this;
45 L.pos.Mirror (P);
46 return L;
47}
48
49void gp_Lin::Mirror (const gp_Ax1& A1)
50{ pos.Mirror(A1); }
51
52gp_Lin gp_Lin::Mirrored (const gp_Ax1& A1) const
53{
54 gp_Lin L = *this;
55 L.pos.Mirror (A1);
56 return L;
57}
58
59void gp_Lin::Mirror (const gp_Ax2& A2)
60{ pos.Mirror(A2); }
61
62gp_Lin gp_Lin::Mirrored (const gp_Ax2& A2) const
63{
64 gp_Lin L = *this;
65 L.pos.Mirror (A2);
66 return L;
67}
68