This file is indexed.

/usr/share/netgen/libsrc/meshing/ruler3.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#ifndef FILE_RULER3
#define FILE_RULER3


/**
  3D element generation rule.
 */
class vnetrule
{
private:
  /// rule is applicable for quality classes above this value
  int quality;
  /// name of rule
  char * name;
  /// point coordinates in reference position
  Array<Point3d> points;
  /// old and new faces in reference numbering
  Array<Element2d> faces;
  /// additional edges of rule
  Array<twoint> edges;

  /// points of freezone in reference coordinates
  Array<Point3d> freezone;
  /// points of freezone in reference coordinates if tolcalss to infty
  Array<Point3d> freezonelimit;
  /// point index, if point equal to mappoint, otherwise 0
  Array<int> freezonepi;
  /// faces of each convex part of freezone
  Array<Array<threeint>*> freefaces;
  /// set of points of each convex part of freezone
  Array<Array<int>*> freesets;
  /// points of transformed freezone
  Array<Point3d> transfreezone;
  /// edges of each convex part of freezone
  Array<Array<twoint>*> freeedges;

  /// face numbers to be deleted
  Array<int> delfaces;
  /// elements to be generated
  Array<Element> elements;
  /// tolerances for points and faces (used ??)
  Array<double> tolerances, linetolerances;
  /// transformation matrix 
  DenseMatrix oldutonewu;
  /// transformation matrix: deviation old point to dev. freezone
  DenseMatrix * oldutofreezone;
  /** transformation matrix: deviation old point to dev. freezone, 
    quality class to infinity */
  DenseMatrix * oldutofreezonelimit;

  // can be deleted:
  // BaseMatrix *outf, *outfl;

  /**
    a point is outside of convex part of freezone, 
    iff mat * (point, 1) >= 0 for each component (correct ?)
    */
  Array<DenseMatrix*> freefaceinequ;
  /// 
  Array<fourint> orientations;
  /**
    flags specified in rule-description file:
    t .. test rule
    */
  Array<char> flags;

  /**
    topological distance of face to base element
    non-connected: > 100  (??) 
    */
  Array<int> fnearness;
  Array<int> pnearness;
  int maxpnearness;

  /// number of old points in rule
  int noldp;
  /// number of new poitns in rule
  int noldf;
  /// box containing free-zone
public:  
  // double fzminx, fzmaxx, fzminy, fzmaxy, fzminz, fzmaxz;
  Box3d fzbox;

public:
  
  ///
  vnetrule ();
  ///
  ~vnetrule ();
  ///
  int GetNP () const { return points.Size(); }
  ///
  int GetNF () const { return faces.Size(); }
  ///
  int GetNE () const { return elements.Size(); }
  ///
  int GetNO () const { return orientations.Size(); }
  ///
  int GetNEd () const { return edges.Size(); }
  ///
  int GetNOldP () const { return noldp; }
  ///
  int GetNOldF () const { return noldf; }
  ///
  int GetNDelF () const { return delfaces.Size(); }
  ///
  int GetQuality () const { return quality; }
  ///
  int GetFNearness (int fi) const { return fnearness.Get(fi); }
  ///
  int GetPNearness (int pi) const { return pnearness.Get(pi); }
  ///
  int GetMaxPNearness () const { return maxpnearness; }


  ///
  const Point3d & GetPoint (int i) const { return points.Get(i); }
  ///
  const Element2d & GetFace (int i) const { return faces.Get(i); }
  ///
  const Element & GetElement (int i) const { return elements.Get(i); }
  ///
  const twoint & GetEdge (int i) const { return edges.Get(i); }
  ///
  int GetDelFace (int i) const { return delfaces.Get(i); }
  ///
  int IsDelFace (int fn) const;
  
  ///
  float CalcPointDist (int pi, const Point3d & p) const;
  ///
  double PointDistFactor (int pi) const
    {
      return tolerances.Get(pi);
    }
  ///
  void SetFreeZoneTransformation (const Vector & allp,
				  int tolclass);
  ///
  int IsInFreeZone (const Point3d & p) const;
  /**
    0 not in free-zone
    1 in free-zone
    -1 maybe 
   */
  int IsTriangleInFreeZone (const Point3d & p1, const Point3d & p2,
                            const Point3d & p3, const Array<int> & pi, int newone);
  ///
  int IsQuadInFreeZone (const Point3d & p1, const Point3d & p2,
			const Point3d & p3, const Point3d & p4,
			const Array<int> & pi, int newone);
  ///
  int IsTriangleInFreeSet (const Point3d & p1, const Point3d & p2,
                           const Point3d & p3, int fs, const Array<int> & pi, int newone);

  ///
  int IsQuadInFreeSet (const Point3d & p1, const Point3d & p2,
		       const Point3d & p3, const Point3d & p4,
		       int fs, const Array<int> & pi, int newone);
  
  ///
  int ConvexFreeZone () const;
  
  /// if t1 and t2 are neighbourtriangles, NTP returns the opposite Point of t1 in t2
  int NeighbourTrianglePoint (const threeint & t1, const threeint & t2) const;
  ///
  const Point3d & GetTransFreeZone (int i) { return transfreezone.Get(i); }

  ///
  int GetNP (int fn) const
  { return faces.Get(fn).GetNP(); }
  ///
  int GetPointNr (int fn, int endp) const
  { return faces.Get(fn).PNum(endp); }
  ///
  int GetPointNrMod (int fn, int endp) const
  { return faces.Get(fn).PNumMod(endp); }
  ///
  const fourint & GetOrientation (int i) { return orientations.Get(i); }

  ///
  int TestFlag (char flag) const;

  ///
  const DenseMatrix & GetOldUToNewU () const { return oldutonewu; }
  //
  //  const DenseMatrix & GetOldUToFreeZone () const { return oldutofreezone; }
  //
  //  const DenseMatrix & GetOldUToFreeZoneLimit () const 
  //    { return oldutofreezonelimit; }
  ///
  const char * Name () const { return name; }
  ///
  void LoadRule (istream & ist);

  ///
  const Array<Point3d> & GetTransFreeZone () { return transfreezone; }
  ///
  int TestOk () const;

  ///
  friend void TestRules ();
  ///
  //  friend void Plot3DRule (const ROT3D & r, char key);
};



#endif