ROOT logo
// $Id: AGeoBezierPgon.h 10 2010-11-28 06:35:46Z oxon $
// Author: Akira Okumura 2011/07/08

/******************************************************************************
 * Copyright (C) 2006-, Akira Okumura                                         *
 * All rights reserved.                                                       *
 *****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//
// AGeoBezierPgon
//
// Geometry class for Pgon-like volume, but the side surfaces are defined by
// a Bezier curve (http://en.wikipedia.org/wiki/Bˇzier_curve)
//
///////////////////////////////////////////////////////////////////////////////

#ifndef A_GEO_BEZIER_PGON_H
#define A_GEO_BEZIER_PGON_H

#ifndef ROOT_TGeoPgon
#include "TGeoPgon.h"
#endif

#ifndef ROOT_TVector2
#include "TVector2.h"
#endif

class AGeoBezierPgon : public TGeoPgon {
protected:
   Double_t fLength; // fDZ will be fLength/2
   Double_t fR1; // Half of the upper aperture
   Double_t fR2; // Half of the lower aperture
   TVector2 fP1; // Relative coordinates of the control point 1
   TVector2 fP2; // Relative coordinates of the control point 2
   Int_t    fNcontrol; // Number of control points (0, 1, or 2)

public:
   AGeoBezierPgon();
   AGeoBezierPgon(Double_t phi, Double_t dphi, Int_t nedges, Int_t nz, Double_t r1, Double_t r2, Double_t dz);
   AGeoBezierPgon(const char* name, Double_t phi, Double_t dphi, Int_t nedges, Int_t nz, Double_t r1, Double_t r2, Double_t dz);
   virtual ~AGeoBezierPgon();

   virtual void Bezier(Double_t t, Double_t& r, Double_t& z);
   virtual void SetControlPoints(Double_t r1, Double_t z1);
   virtual void SetControlPoints(Double_t r1, Double_t z1, Double_t r2, Double_t z2);
   virtual void SetSections();

   ClassDef(AGeoBezierPgon, 1)
};

#endif // A_GEO_BEZIER_PGON_H
 AGeoBezierPgon.h:1
 AGeoBezierPgon.h:2
 AGeoBezierPgon.h:3
 AGeoBezierPgon.h:4
 AGeoBezierPgon.h:5
 AGeoBezierPgon.h:6
 AGeoBezierPgon.h:7
 AGeoBezierPgon.h:8
 AGeoBezierPgon.h:9
 AGeoBezierPgon.h:10
 AGeoBezierPgon.h:11
 AGeoBezierPgon.h:12
 AGeoBezierPgon.h:13
 AGeoBezierPgon.h:14
 AGeoBezierPgon.h:15
 AGeoBezierPgon.h:16
 AGeoBezierPgon.h:17
 AGeoBezierPgon.h:18
 AGeoBezierPgon.h:19
 AGeoBezierPgon.h:20
 AGeoBezierPgon.h:21
 AGeoBezierPgon.h:22
 AGeoBezierPgon.h:23
 AGeoBezierPgon.h:24
 AGeoBezierPgon.h:25
 AGeoBezierPgon.h:26
 AGeoBezierPgon.h:27
 AGeoBezierPgon.h:28
 AGeoBezierPgon.h:29
 AGeoBezierPgon.h:30
 AGeoBezierPgon.h:31
 AGeoBezierPgon.h:32
 AGeoBezierPgon.h:33
 AGeoBezierPgon.h:34
 AGeoBezierPgon.h:35
 AGeoBezierPgon.h:36
 AGeoBezierPgon.h:37
 AGeoBezierPgon.h:38
 AGeoBezierPgon.h:39
 AGeoBezierPgon.h:40
 AGeoBezierPgon.h:41
 AGeoBezierPgon.h:42
 AGeoBezierPgon.h:43
 AGeoBezierPgon.h:44
 AGeoBezierPgon.h:45
 AGeoBezierPgon.h:46
 AGeoBezierPgon.h:47
 AGeoBezierPgon.h:48
 AGeoBezierPgon.h:49
 AGeoBezierPgon.h:50
 AGeoBezierPgon.h:51
 AGeoBezierPgon.h:52