269 int n = TMath::Min(n0,n1);
282 Double_t dx0 = b0->At(1)->X() - b0->At(0)->X();
283 Double_t dy0 = b0->At(1)->Y() - b0->At(0)->Y();
284 Double_t dx1 = b1->
At(1)->
X() - b1->
At(0)->
X();
285 Double_t dy1 = b1->
At(1)->
Y() - b1->
At(0)->
Y();
287 Double_t
s = TMath::Sqrt(dx1*dx1+dy1*dy1)/TMath::Sqrt(dx0*dx0+dy0*dy0);
288 Double_t th =
Phi(dx1,dy1)-
Phi(dx0,dy0);
290 a =
s*TMath::Cos(th);
291 b = -
s*TMath::Sin(th);
292 c =
s*TMath::Sin(th);
293 d =
s*TMath::Cos(th);
294 p = b1->
At(0)->
X() -
a*b0->At(0)->X() - b*b0->At(0)->Y();
295 q = b1->
At(0)->
Y() - c*b0->At(0)->X() -
d*b0->At(0)->Y();
314 for(
int i=0; i<n; i++) {
316 sx0 = sx0 *i*
r + b0->At(i)->X() *
r;
317 sy0 = sy0 *i*
r + b0->At(i)->Y() *
r;
318 sx1 = sx1 *i*
r + b1->
At(i)->
X() *
r;
319 sy1 = sy1 *i*
r + b1->
At(i)->
Y() *
r;
320 sx0x0 = sx0x0 *i*
r + b0->At(i)->X() * b0->At(i)->X() *
r;
321 sy0y0 = sy0y0 *i*
r + b0->At(i)->Y() * b0->At(i)->Y() *
r;
322 sx0y0 = sx0y0 *i*
r + b0->At(i)->X() * b0->At(i)->Y() *
r;
323 sx0x1 = sx0x1 *i*
r + b0->At(i)->X() * b1->
At(i)->
X() *
r;
324 sx0y1 = sx0y1 *i*
r + b0->At(i)->X() * b1->
At(i)->
Y() *
r;
325 sx1y0 = sx1y0 *i*
r + b1->
At(i)->
X() * b0->At(i)->Y() *
r;
326 sy0y1 = sy0y1 *i*
r + b0->At(i)->Y() * b1->
At(i)->
Y() *
r;
329 Double_t sp0 = sx0x1 - sx0*sx1;
330 Double_t sp1 = sx1y0 - sx1*sy0;
331 Double_t sq0 = sx0y1 - sx0*sy1;
332 Double_t sq1 = sy0y1 - sy0*sy1;
334 Double_t sar = sx0x0 - sx0*sx0;
335 Double_t sbr = sx0y0 - sx0*sy0;
337 Double_t sdr = sy0y0 - sy0*sy0;
338 Double_t det = sar*sdr-sbr*scr;
340 if ( det < 0.0000000001 ) {
Log(1,
"EdbAffine2D::Calculate",
"determinant is too small: %g",det);
return 0; }
342 Double_t sa = sdr/det;
343 Double_t sb = -sbr/det;
344 Double_t sc = -scr/det;
345 Double_t
sd = sar/det;
355 Log(3,
"Calculate",
"Aff2D( %6d ): %9.6f %9.6f %9.6f %9.6f %12.6f %12.6f",
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
void d()
Definition: RecDispEX.C:381
void a()
Definition: check_aligned.C:59
void sd()
Definition: check_vertex.C:185
Double_t Phi(Double_t x, Double_t y) const
Definition: EdbAffine.cxx:376
virtual Float_t Y() const =0
virtual Float_t X() const =0
virtual Int_t N() const =0
virtual EdbPoint * At(int i) const =0
q
Definition: testBGReduction_AllMethods.C:55
p
Definition: testBGReduction_AllMethods.C:8
void r(int rid=2)
Definition: test.C:201
EdbSegP * s
Definition: tlg2pattern.C:32