/usr/include/vtk-7.1/vtkAttributesErrorMetric.h is in libvtk7-dev 7.1.1+dfsg1-2.
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 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkAttributesErrorMetric.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkAttributesErrorMetric
* @brief Objects that compute
* attribute-based error during cell tessellation.
*
*
* It is a concrete error metric, based on an attribute criterium:
* the variation of the active attribute/component value from a linear ramp
*
* @sa
* vtkGenericCellTessellator vtkGenericSubdivisionErrorMetric
*/
#ifndef vtkAttributesErrorMetric_h
#define vtkAttributesErrorMetric_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkGenericSubdivisionErrorMetric.h"
class vtkGenericAttributeCollection;
class vtkGenericDataSet;
class VTKCOMMONDATAMODEL_EXPORT vtkAttributesErrorMetric : public vtkGenericSubdivisionErrorMetric
{
public:
/**
* Construct the error metric with a default relative attribute accuracy
* equal to 0.1.
*/
static vtkAttributesErrorMetric *New();
//@{
/**
* Standard VTK type and error macros.
*/
vtkTypeMacro(vtkAttributesErrorMetric,vtkGenericSubdivisionErrorMetric);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@}
//@{
/**
* Absolute tolerance of the active scalar (attribute+component).
* Subdivision is required if the square distance between the real attribute
* at the mid point on the edge and the interpolated attribute is greater
* than AbsoluteAttributeTolerance.
* This is the attribute accuracy.
* 0.01 will give better result than 0.1.
*/
vtkGetMacro(AbsoluteAttributeTolerance, double);
//@}
/**
* Set the absolute attribute accuracy to `value'. See
* GetAbsoluteAttributeTolerance() for details.
* It is particularly useful when some concrete implementation of
* vtkGenericAttribute does not support GetRange() request, called
* internally in SetAttributeTolerance(). It may happen when the
* implementation support higher order attributes but
* cannot compute the range.
* \pre valid_range_value: value>0
*/
void SetAbsoluteAttributeTolerance(double value);
//@{
/**
* Relative tolerance of the active scalar (attribute+component).
* Subdivision is required if the square distance between the real attribute
* at the mid point on the edge and the interpolated attribute is greater
* than AttributeTolerance.
* This is the attribute accuracy.
* 0.01 will give better result than 0.1.
*/
vtkGetMacro(AttributeTolerance, double);
//@}
/**
* Set the relative attribute accuracy to `value'. See
* GetAttributeTolerance() for details.
* \pre valid_range_value: value>0 && value<1
*/
void SetAttributeTolerance(double value);
/**
* Does the edge need to be subdivided according to the distance between
* the value of the active attribute/component at the midpoint and the mean
* value between the endpoints?
* The edge is defined by its `leftPoint' and its `rightPoint'.
* `leftPoint', `midPoint' and `rightPoint' have to be initialized before
* calling RequiresEdgeSubdivision().
* Their format is global coordinates, parametric coordinates and
* point centered attributes: xyx rst abc de...
* `alpha' is the normalized abscissa of the midpoint along the edge.
* (close to 0 means close to the left point, close to 1 means close to the
* right point)
* \pre leftPoint_exists: leftPoint!=0
* \pre midPoint_exists: midPoint!=0
* \pre rightPoint_exists: rightPoint!=0
* \pre clamped_alpha: alpha>0 && alpha<1
* \pre valid_size: sizeof(leftPoint)=sizeof(midPoint)=sizeof(rightPoint)
* =GetAttributeCollection()->GetNumberOfPointCenteredComponents()+6
*/
int RequiresEdgeSubdivision(double *leftPoint, double *midPoint, double *rightPoint,
double alpha) VTK_OVERRIDE;
/**
* Return the error at the mid-point. The type of error depends on the state
* of the concrete error metric. For instance, it can return an absolute
* or relative error metric.
* See RequiresEdgeSubdivision() for a description of the arguments.
* \pre leftPoint_exists: leftPoint!=0
* \pre midPoint_exists: midPoint!=0
* \pre rightPoint_exists: rightPoint!=0
* \pre clamped_alpha: alpha>0 && alpha<1
* \pre valid_size: sizeof(leftPoint)=sizeof(midPoint)=sizeof(rightPoint)
* =GetAttributeCollection()->GetNumberOfPointCenteredComponents()+6
* \post positive_result: result>=0
*/
double GetError(double *leftPoint, double *midPoint,
double *rightPoint, double alpha) VTK_OVERRIDE;
protected:
vtkAttributesErrorMetric();
~vtkAttributesErrorMetric() VTK_OVERRIDE;
/**
* Compute the square absolute attribute tolerance, only if the cached value
* is obsolete.
*/
void ComputeSquareAbsoluteAttributeTolerance();
double AttributeTolerance;
double SquareAbsoluteAttributeTolerance; // cached value computed from
// AttributeTolerance and active attribute/component
double AbsoluteAttributeTolerance;
int DefinedByAbsolute;
vtkTimeStamp SquareAbsoluteAttributeToleranceComputeTime;
double Range; // cached value computed from active attribute/component
vtkGenericAttributeCollection *AttributeCollection;
private:
vtkAttributesErrorMetric(const vtkAttributesErrorMetric&) VTK_DELETE_FUNCTION;
void operator=(const vtkAttributesErrorMetric&) VTK_DELETE_FUNCTION;
};
#endif
|