This file is indexed.

/usr/share/netgen/libsrc/csg/extrusion.hpp is in netgen-headers 4.9.13.dfsg-8build2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#ifndef _EXTRUSION_HPP
#define _EXTRUSION_HPP

namespace netgen
{

  class Extrusion;

  class ExtrusionFace : public Surface
  {
  private:
    const SplineSeg<2> * profile;
    const SplineGeometry<3> * path;
    Vec<3> glob_z_direction;

    bool deletable;
  
    Array< const SplineSeg3<3> * > spline3_path;
    Array< const LineSeg<3> * > line_path;
  
    mutable Array < Vec<3> > x_dir, y_dir, z_dir, loc_z_dir;
    mutable Array < Point<3> > p0;

    mutable Vec<3> profile_tangent;
    mutable double profile_par;
  
    mutable Vector profile_spline_coeff;

    mutable int latest_seg;
    mutable double latest_t;
    mutable Point<2> latest_point2d;
    mutable Point<3> latest_point3d;


  private:
    void Orthogonalize(const Vec<3> & v1, Vec<3> & v2) const;

    void Init(void);

  public:
    double CalcProj(const Point<3> & point3d, Point<2> & point2d,
		    int seg) const;
    void CalcProj(const Point<3> & point3d, Point<2> & point2d,
		  int & seg, double & t) const;

  public:
    ExtrusionFace(const SplineSeg<2> * profile_in,
		  const SplineGeometry<3> * path_in,
		  const Vec<3> & z_direction);

    ExtrusionFace(const Array<double> & raw_data);
    

    ~ExtrusionFace();
  
    virtual int IsIdentic (const Surface & s2, int & inv, double eps) const; 
  
    virtual double CalcFunctionValue (const Point<3> & point) const;
    virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
    virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
    virtual double HesseNorm () const;

    virtual double MaxCurvature () const;
    //virtual double MaxCurvatureLoc (const Point<3> & /* c */ , 
    //				  double /* rad */) const;

    virtual void Project (Point<3> & p) const;

    virtual Point<3> GetSurfacePoint () const;
    virtual void Print (ostream & str) const;
  
    virtual void GetTriangleApproximation (TriangleApproximation & tas, 
					   const Box<3> & boundingbox, 
					   double facets) const;

    const SplineGeometry<3> & GetPath(void) const {return *path;}
    const SplineSeg<2> & GetProfile(void) const {return *profile;}

    bool BoxIntersectsFace(const Box<3> & box) const;

    void LineIntersections ( const Point<3> & p,
			     const Vec<3> & v,
			     const double eps,
			     int & before,
			     int & after,
			     bool & intersecting ) const;

    INSOLID_TYPE VecInFace ( const Point<3> & p,
			     const Vec<3> & v,
			     const double eps ) const;

    const Vec<3> & GetYDir ( void ) const {return y_dir[latest_seg];}
    const Vec<3> & GetProfileTangent (void) const {return profile_tangent;}
    double GetProfilePar(void) const {return profile_par;}

    void GetRawData(Array<double> & data) const;

    void CalcLocalCoordinates (int seg, double t, 
			       Vec<3> & ex, Vec<3> & ey, Vec<3> & ez) const;

    void CalcLocalCoordinatesDeriv (int seg, double t, 
				    Vec<3> & ex, Vec<3> & ey, Vec<3> & ez,
				    Vec<3> & dex, Vec<3> & dey, Vec<3> & dez) const;

  };



  class Extrusion : public Primitive
  {
  private:
    const SplineGeometry<3> & path;
    const SplineGeometry<2> & profile;

    const Vec<3> & z_direction;

    Array<ExtrusionFace*> faces;

    mutable int latestfacenum;

  public:
    Extrusion(const SplineGeometry<3> & path_in,
	      const SplineGeometry<2> & profile_in,
	      const Vec<3> & z_dir);
    ~Extrusion();
    virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
    virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
				       double eps) const;
    INSOLID_TYPE PointInSolid (const Point<3> & p,
			       double eps,
			       Array<int> * const facenums) const;
    virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
				     const Vec<3> & v,
				     double eps) const;

    // checks if lim s->0 lim t->0  p + t(v1 + s v2) in solid
    virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
				      const Vec<3> & v1,
				      const Vec<3> & v2,
				      double eps) const;

  
    virtual int GetNSurfaces() const;
    virtual Surface & GetSurface (int i = 0);
    virtual const Surface & GetSurface (int i = 0) const;


    virtual void Reduce (const BoxSphere<3> & box);
    virtual void UnReduce ();

  };

}

#endif //_EXTRUSION_HPP