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
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkLagrangianParticleTracker.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 vtkBilinearQuadIntersection
* @brief Class to perform non planar quad intersection
*
* Class for non planar quad intersection.
* This class is an updated and fixed version of the code by Ramsey et al.
* (http://shaunramsey.com/research/bp/).
*/
#ifndef vtkBilinearQuadIntersection_h
#define vtkBilinearQuadIntersection_h
#include "vtkCommonComputationalGeometryModule.h" // For export macro
#include "vtkVector.h"
VTK_ABI_NAMESPACE_BEGIN
class VTKCOMMONCOMPUTATIONALGEOMETRY_EXPORT vtkBilinearQuadIntersection
{
public:
vtkBilinearQuadIntersection(const vtkVector3d& pt00, const vtkVector3d& Pt01,
const vtkVector3d& Pt10, const vtkVector3d& Pt11);
vtkBilinearQuadIntersection() = default;
///@{
/**
* Get direct access to the underlying point data
*/
double* GetP00Data();
double* GetP01Data();
double* GetP10Data();
double* GetP11Data();
//}@
/**
* Compute cartesian coordinates of point in the quad
* using parameteric coordinates
*/
vtkVector3d ComputeCartesianCoordinates(double u, double v);
/**
* Compute the intersection between a ray r->q and the quad
*/
bool RayIntersection(const vtkVector3d& r, const vtkVector3d& q, vtkVector3d& uv);
private:
vtkVector3d Point00;
vtkVector3d Point01;
vtkVector3d Point10;
vtkVector3d Point11;
int AxesSwapping = 0;
};
VTK_ABI_NAMESPACE_END
#endif // vtkBilinearQuadIntersection_h
// VTK-HeaderTest-Exclude: vtkBilinearQuadIntersection.h
|