/usr/include/vtk-5.8/vtkBivariateLinearTableThreshold.h is in libvtk5-dev 5.8.0-5.
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 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkBivariateLinearTableThreshold.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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2009 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
// .NAME vtkBivariateLinearTableThreshold - performs line-based thresholding
// for vtkTable data.
//
// .SECTION Description
// Class for filtering the rows of a two numeric columns of a vtkTable. The
// columns are treated as the two variables of a line. This filter will
// then iterate through the rows of the table determining if X,Y values pairs
// are above/below/between/near one or more lines.
//
// The "between" mode checks to see if a row is contained within the convex
// hull of all of the specified lines. The "near" mode checks if a row is
// within a distance threshold two one of the specified lines. This class
// is used in conjunction with various plotting classes, so it is useful
// to rescale the X,Y axes to a particular range of values. Distance
// comparisons can be performed in the scaled space by setting the CustomRanges
// ivar and enabling UseNormalizedDistance.
#ifndef __vtkBivariateLinearTableThreshold__h
#define __vtkBivariateLinearTableThreshold__h
#include "vtkTableAlgorithm.h"
#include "vtkSmartPointer.h" //Required for smart pointer internal ivars
class vtkDataArrayCollection;
class vtkDoubleArray;
class vtkIdTypeArray;
class vtkTable;
class VTK_INFOVIS_EXPORT vtkBivariateLinearTableThreshold : public vtkTableAlgorithm
{
public:
static vtkBivariateLinearTableThreshold* New();
vtkTypeMacro(vtkBivariateLinearTableThreshold, vtkTableAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Include the line in the threshold. Essentially whether the threshold operation
// uses > versus >=.
vtkSetMacro(Inclusive,int);
vtkGetMacro(Inclusive,int);
// Description:
// Add a numeric column to the pair of columns to be thresholded. Call twice.
void AddColumnToThreshold(vtkIdType column, vtkIdType component);
// Description:
// Return how many columns have been added. Hopefully 2.
int GetNumberOfColumnsToThreshold();
// Description:
// Return the column number from the input table for the idx'th added column.
void GetColumnToThreshold(vtkIdType idx, vtkIdType& column, vtkIdType& component);
// Description:
// Reset the columns to be thresholded.
void ClearColumnsToThreshold();
// Description:
// Get the output as a table of row ids.
vtkIdTypeArray* GetSelectedRowIds(int selection=0);
//BTX
enum OutputPorts
{
OUTPUT_ROW_IDS=0,
OUTPUT_ROW_DATA
};
enum LinearThresholdType
{
BLT_ABOVE=0,
BLT_BELOW,
BLT_NEAR,
BLT_BETWEEN
};
//ETX
// Description:
// Reset the columns to threshold, column ranges, etc.
void Initialize();
// Description:
// Add a line for thresholding from two x,y points.
void AddLineEquation(double* p1, double* p2);
// Description:
// Add a line for thresholding in point-slope form.
void AddLineEquation(double* p, double slope);
// Description:
// Add a line for thresholding in implicit form (ax + by + c = 0)
void AddLineEquation(double a, double b, double c);
// Description:
// Reset the list of line equations.
void ClearLineEquations();
// Description:
// Set the threshold type. Above: find all rows that are above the specified
// lines. Below: find all rows that are below the specified lines. Near:
// find all rows that are near the specified lines. Between: find all rows
// that are between the specified lines.
vtkGetMacro(LinearThresholdType,int);
vtkSetMacro(LinearThresholdType,int);
void SetLinearThresholdTypeToAbove() { this->SetLinearThresholdType(vtkBivariateLinearTableThreshold::BLT_ABOVE); }
void SetLinearThresholdTypeToBelow() { this->SetLinearThresholdType(vtkBivariateLinearTableThreshold::BLT_BELOW); }
void SetLinearThresholdTypeToNear() { this->SetLinearThresholdType(vtkBivariateLinearTableThreshold::BLT_NEAR); }
void SetLinearThresholdTypeToBetween() { this->SetLinearThresholdType(vtkBivariateLinearTableThreshold::BLT_BETWEEN); }
// Description:
// Manually access the maximum/minimum x,y values. This is used in
// conjunction with UseNormalizedDistance when determining if a row
// passes the threshold.
vtkSetVector2Macro(ColumnRanges,double);
vtkGetVector2Macro(ColumnRanges,double);
// Description:
// The Cartesian distance within which a point will pass the near threshold.
vtkSetMacro(DistanceThreshold,double);
vtkGetMacro(DistanceThreshold,double);
// Description:
// Renormalize the space of the data such that the X and Y axes are
// "square" over the specified ColumnRanges. This essentially scales
// the data space so that ColumnRanges[1]-ColumnRanges[0] = 1.0 and
// ColumnRanges[3]-ColumnRanges[2] = 1.0. Used for scatter plot distance
// calculations. Be sure to set DistanceThreshold accordingly, when used.
vtkSetMacro(UseNormalizedDistance,int);
vtkGetMacro(UseNormalizedDistance,int);
vtkBooleanMacro(UseNormalizedDistance,int);
// Description:
// Convert the two-point line formula to implicit form.
static void ComputeImplicitLineFunction(double* p1, double* p2, double* abc);
// Description:
// Convert the point-slope line formula to implicit form.
static void ComputeImplicitLineFunction(double* p, double slope, double* abc);
protected:
vtkBivariateLinearTableThreshold();
virtual ~vtkBivariateLinearTableThreshold();
double ColumnRanges[2];
double DistanceThreshold;
int Inclusive;
int LinearThresholdType;
int NumberOfLineEquations;
int UseNormalizedDistance;
//BTX
vtkSmartPointer<vtkDoubleArray> LineEquations;
class Internals;
Internals* Implementation;
//ETX
virtual int RequestData(
vtkInformation*,
vtkInformationVector**,
vtkInformationVector*);
virtual int FillInputPortInformation( int port, vtkInformation* info );
virtual int FillOutputPortInformation( int port, vtkInformation* info );
// Description:
// Apply the current threshold to a vtkTable. Fills acceptedIds on success.
virtual int ApplyThreshold(vtkTable* tableToThreshold, vtkIdTypeArray* acceptedIds);
// Description:
// Determine if x,y is above all specified lines.
int ThresholdAbove(double x, double y);
// Description:
// Determine if x,y is below all specified lines.
int ThresholdBelow(double x, double y);
// Description:
// Determine if x,y is near ONE specified line (not all).
int ThresholdNear(double x, double y);
// Description:
// Determine if x,y is between ANY TWO of the specified lines.
int ThresholdBetween(double x, double y);
private:
vtkBivariateLinearTableThreshold(const vtkBivariateLinearTableThreshold&); // Not implemented
void operator=(const vtkBivariateLinearTableThreshold&); // Not implemented
};
#endif
|