0024587: Separate TCL samples for ray tracing and creation of bottle
[occt.git] / src / IntPatch / IntPatch_Point.cxx
CommitLineData
b311480e 1// Created on: 1992-05-06
2// Created by: Jacques GOUSSARD
3// Copyright (c) 1992-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
973c2be1 8// This library is free software; you can redistribute it and / or modify it
9// under the terms of the GNU Lesser General Public version 2.1 as published
10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
17#include <IntPatch_Point.ixx>
18
19#include <Standard_DomainError.hxx>
20#include <stdio.h>
21
22
23void IntPatch_Point::SetValue (const gp_Pnt& Pt,
24 const Standard_Real Tol,
25 const Standard_Boolean Tangent)
26{
27 onS1 = Standard_False;
28 onS2 = Standard_False;
29 vtxonS1 = Standard_False;
30 vtxonS2 = Standard_False;
31 mult = Standard_False;
32 tgt = Tangent;
33 pt.SetValue(Pt);
34 tol = Tol;
35}
36
37void IntPatch_Point::SetVertex(const Standard_Boolean OnFirst, const Handle(Adaptor3d_HVertex)& V)
38{
39 if (OnFirst) {
40 onS1 = Standard_True;
41 vtxonS1 = Standard_True;
42 vS1 = V;
43 }
44 else {
45 onS2 = Standard_True;
46 vtxonS2 = Standard_True;
47 vS2 = V;
48 }
49}
50
51void IntPatch_Point::SetArc (const Standard_Boolean OnFirst,
52 const Handle(Adaptor2d_HCurve2d)& A,
53 const Standard_Real Param,
54 const IntSurf_Transition& TLine,
55 const IntSurf_Transition& TArc)
56{
57 if (OnFirst) {
58 onS1 = Standard_True;
59 arcS1 = A;
60 traline1 = TLine;
61 tra1 = TArc;
62 prm1 = Param;
63 }
64 else {
65 onS2 = Standard_True;
66 arcS2 = A;
67 traline2 = TLine;
68 tra2 = TArc;
69 prm2 = Param;
70 }
71}
72
73void IntPatch_Point::ReverseTransition()
74{
75 if(onS1)
76 {
77 IntSurf_Transition TLine;
78 switch (traline1.TransitionType())
79 {
566f8441 80 case IntSurf_In: TLine.SetValue(Standard_False,IntSurf_Out); break;
81 case IntSurf_Out: TLine.SetValue(Standard_False,IntSurf_In); break;
82 default:
83 break;
84 }
7fd59977 85 traline1=TLine;
86 IntSurf_Transition TArc;
87 switch (tra1.TransitionType())
88 {
566f8441 89 case IntSurf_In: TArc.SetValue(Standard_False,IntSurf_Out); break;
90 case IntSurf_Out: TArc.SetValue(Standard_False,IntSurf_In); break;
91 default:
92 break;
93 }
7fd59977 94 tra1=TArc;
95 }
96 if(onS2)
97 {
98 IntSurf_Transition TLine;
99 switch (traline2.TransitionType())
100 {
566f8441 101 case IntSurf_In: TLine.SetValue(Standard_False,IntSurf_Out); break;
102 case IntSurf_Out: TLine.SetValue(Standard_False,IntSurf_In); break;
103 default:
104 break;
105 }
7fd59977 106 traline2=TLine;
107 IntSurf_Transition TArc;
108 switch (tra2.TransitionType())
109 {
566f8441 110 case IntSurf_In: TArc.SetValue(Standard_False,IntSurf_Out); break;
111 case IntSurf_Out: TArc.SetValue(Standard_False,IntSurf_In); break;
112 default:
113 break;
114 }
7fd59977 115 tra2=TArc;
116 }
117}
118
119
120#include <IntSurf_Situation.hxx>
121#include <IntSurf_Transition.hxx>
122#include <IntSurf_TypeTrans.hxx>
123
124static void DumpTransition(const IntSurf_Transition& T)
125{
126 IntSurf_TypeTrans typetrans = T.TransitionType();
127 if(typetrans == IntSurf_In) cout<<" In ";
128 else if(typetrans == IntSurf_Out) cout<<" Out ";
129 else if(typetrans == IntSurf_Undecided) cout<<" Und.";
130 else if(typetrans == IntSurf_Touch) {
131 cout<<" Touch ";
132 if(T.Situation() == IntSurf_Inside) cout<<" Inside ";
133 else if(T.Situation() == IntSurf_Outside) cout<<" Outside";
134 else cout<<" Unknown";
135 if(T.IsOpposite()) cout<<" Opposite ";
136 else cout<<" Non_Opposite ";
137 }
138
139 if(typetrans != IntSurf_Undecided) {
140 if(T.IsTangent()) cout<<" Tangent ";
141 else cout<<" Non_Tangent";
142 }
143}
144
145#include <Standard_Transient.hxx>
146
147void IntPatch_Point::Dump() const {
148 cout<<"----------- IntPatch_Point : "<<endl;
149 Standard_Real u1,v1,u2,v2;
150 pt.Parameters(u1,v1,u2,v2);
7fd59977 151
7fd59977 152 printf("P(%15.10f,%15.10f,%15.10f) UV1(%15.10f,%15.10f) UV2(%15.10f,%15.10f) (Para:%15.10f)\n",
153 (double)(pt.Value().X()),
154 (double)(pt.Value().Y()),
155 (double)(pt.Value().Z()),
156 (double)u1,(double)v1,(double)u2,(double)v2,(double)para);
fd03ee4b 157 if(onS1)
158 printf("*OnS1* par=%15.10f arc1=%10p", (double)prm1, (void*)arcS1.operator->());
159 if(vtxonS1)
160 printf(" *Vtx1* vtx1=%10p", (void*)vS1.operator->());
7fd59977 161 if(onS1 || vtxonS1) printf("\n");
fd03ee4b 162 if(onS2)
163 printf("*OnS2* par=%15.10f arc2=%10p", (double)prm2, (void*)arcS2.operator->());
164 if(vtxonS2)
165 printf(" *Vtx2* vtx2=%10lu", (void*)vS2.operator->());
166
167 if(onS2 || vtxonS2)
168 printf("\n");
7fd59977 169 fflush(stdout);
fd03ee4b 170
7fd59977 171 if(onS1 || onS2) {
172 cout<<" tgt:"<<((tgt)? 1 : 0) <<" mult:"<<((mult)? 1 :0);
173 if(onS1) {
174 cout<<"\n-traline1 : "; DumpTransition(traline1);
175 cout<<" -tra1 : "; DumpTransition(tra1);
176 }
177 if(onS2) {
178 cout<<"\n-traline2 : "; DumpTransition(traline2);
179 cout<<" -tra2 : "; DumpTransition(tra2);
180 }
181 cout<<endl;
182 }
183}