VTK
|
perform fast cell location operations More...
#include <vtkStaticCellLocator.h>
Public Member Functions | |
vtkIdType | FindCell (double pos[3], double vtkNotUsed, vtkGenericCell *cell, double pcoords[3], double *weights) override |
Test a point to find if it is inside a cell. More... | |
vtkIdType | FindCell (double x[3]) override |
Reimplemented from vtkAbstractCellLocator to support bad compilers. More... | |
void | FindCellsWithinBounds (double *bbox, vtkIdList *cells) override |
Return a list of unique cell ids inside of a given bounding box. More... | |
void | FindCellsAlongLine (const double p1[3], const double p2[3], double tolerance, vtkIdList *cells) override |
Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buckets containing the line. More... | |
int | IntersectWithLine (const double a0[3], const double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell) override |
Return intersection point (if any) AND the cell which was intersected by the finite line. More... | |
int | IntersectWithLine (const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override |
Reimplemented from vtkAbstractCellLocator to support bad compilers. More... | |
int | IntersectWithLine (const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId) override |
Reimplemented from vtkAbstractCellLocator to support bad compilers. More... | |
int | IntersectWithLine (const double p1[3], const double p2[3], vtkPoints *points, vtkIdList *cellIds) override |
Reimplemented from vtkAbstractCellLocator to support bad compilers. More... | |
bool | GetLargeIds () |
Inform the user as to whether large ids are being used. More... | |
virtual void | SetDivisions (int, int, int) |
Set the number of divisions in x-y-z directions. More... | |
virtual void | SetDivisions (int[3]) |
Set the number of divisions in x-y-z directions. More... | |
virtual int * | GetDivisions () |
Set the number of divisions in x-y-z directions. More... | |
virtual void | GetDivisions (int data[3]) |
Set the number of divisions in x-y-z directions. More... | |
void | GenerateRepresentation (int level, vtkPolyData *pd) override |
Satisfy vtkLocator abstract interface. More... | |
void | FreeSearchStructure () override |
Satisfy vtkLocator abstract interface. More... | |
void | BuildLocator () override |
Satisfy vtkLocator abstract interface. More... | |
virtual void | SetMaxNumberOfBuckets (vtkIdType) |
Set the maximum number of buckets in the locator. More... | |
virtual vtkIdType | GetMaxNumberOfBuckets () |
Set the maximum number of buckets in the locator. More... | |
Public Member Functions inherited from vtkAbstractCellLocator | |
vtkAbstractCellLocator * | NewInstance () const |
virtual void | FindClosestPoint (const double x[3], double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2) |
Return the closest point and the cell which is closest to the point x. More... | |
virtual void | FindClosestPoint (const double x[3], double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2) |
Return the closest point and the cell which is closest to the point x. More... | |
virtual vtkIdType | FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2) |
Return the closest point within a specified radius and the cell which is closest to the point x. More... | |
virtual vtkIdType | FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2) |
Return the closest point within a specified radius and the cell which is closest to the point x. More... | |
virtual vtkIdType | FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2, int &inside) |
Return the closest point within a specified radius and the cell which is closest to the point x. More... | |
virtual bool | InsideCellBounds (double x[3], vtkIdType cell_ID) |
Quickly test if a point is inside the bounds of a particular cell. More... | |
virtual void | SetNumberOfCellsPerNode (int) |
Specify the preferred/maximum number of cells in each node/bucket. More... | |
virtual int | GetNumberOfCellsPerNode () |
Specify the preferred/maximum number of cells in each node/bucket. More... | |
virtual void | SetCacheCellBounds (vtkTypeBool) |
Boolean controls whether the bounds of each cell are computed only once and then saved. More... | |
virtual vtkTypeBool | GetCacheCellBounds () |
Boolean controls whether the bounds of each cell are computed only once and then saved. More... | |
virtual void | CacheCellBoundsOn () |
Boolean controls whether the bounds of each cell are computed only once and then saved. More... | |
virtual void | CacheCellBoundsOff () |
Boolean controls whether the bounds of each cell are computed only once and then saved. More... | |
virtual void | SetRetainCellLists (vtkTypeBool) |
Boolean controls whether to maintain list of cells in each node. More... | |
virtual vtkTypeBool | GetRetainCellLists () |
Boolean controls whether to maintain list of cells in each node. More... | |
virtual void | RetainCellListsOn () |
Boolean controls whether to maintain list of cells in each node. More... | |
virtual void | RetainCellListsOff () |
Boolean controls whether to maintain list of cells in each node. More... | |
virtual void | SetLazyEvaluation (vtkTypeBool) |
Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. More... | |
virtual vtkTypeBool | GetLazyEvaluation () |
Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. More... | |
virtual void | LazyEvaluationOn () |
Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. More... | |
virtual void | LazyEvaluationOff () |
Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. More... | |
virtual void | SetUseExistingSearchStructure (vtkTypeBool) |
Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase. More... | |
virtual vtkTypeBool | GetUseExistingSearchStructure () |
Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase. More... | |
virtual void | UseExistingSearchStructureOn () |
Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase. More... | |
virtual void | UseExistingSearchStructureOff () |
Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase. More... | |
Public Member Functions inherited from vtkLocator | |
virtual void | Update () |
Cause the locator to rebuild itself if it or its input dataset has changed. More... | |
virtual void | Initialize () |
Initialize locator. More... | |
virtual void | SetDataSet (vtkDataSet *) |
Build the locator from the points/cells defining this dataset. More... | |
virtual vtkDataSet * | GetDataSet () |
Build the locator from the points/cells defining this dataset. More... | |
virtual void | SetMaxLevel (int) |
Set the maximum allowable level for the tree. More... | |
virtual int | GetMaxLevel () |
Set the maximum allowable level for the tree. More... | |
virtual int | GetLevel () |
Get the level of the locator (determined automatically if Automatic is true). More... | |
virtual void | SetAutomatic (vtkTypeBool) |
Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. More... | |
virtual vtkTypeBool | GetAutomatic () |
Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. More... | |
virtual void | AutomaticOn () |
Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. More... | |
virtual void | AutomaticOff () |
Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. More... | |
virtual void | SetTolerance (double) |
Specify absolute tolerance (in world coordinates) for performing geometric operations. More... | |
virtual double | GetTolerance () |
Specify absolute tolerance (in world coordinates) for performing geometric operations. More... | |
virtual vtkMTimeType | GetBuildTime () |
Return the time of the last data structure build. More... | |
void | Register (vtkObjectBase *o) override |
Handle the PointSet <-> Locator loop. More... | |
void | UnRegister (vtkObjectBase *o) override |
Handle the PointSet <-> Locator loop. More... | |
vtkLocator * | NewInstance () const |
Standard type and print methods. More... | |
Public Member Functions inherited from vtkObject | |
vtkBaseTypeMacro (vtkObject, vtkObjectBase) | |
virtual void | DebugOn () |
Turn debugging output on. More... | |
virtual void | DebugOff () |
Turn debugging output off. More... | |
bool | GetDebug () |
Get the value of the debug flag. More... | |
void | SetDebug (bool debugFlag) |
Set the value of the debug flag. More... | |
virtual void | Modified () |
Update the modification time for this object. More... | |
virtual vtkMTimeType | GetMTime () |
Return this object's modified time. More... | |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
vtkTypeBool | HasObserver (unsigned long event) |
vtkTypeBool | HasObserver (const char *event) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkCommand * | GetCommand (unsigned long tag) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObserver (vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkTypeBool | HasObserver (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkTypeBool | HasObserver (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Allow user to set the AbortFlagOn() with the return value of the callback method. More... | |
int | InvokeEvent (unsigned long event, void *callData) |
This method invokes an event and return whether the event was aborted or not. More... | |
int | InvokeEvent (const char *event, void *callData) |
This method invokes an event and return whether the event was aborted or not. More... | |
Public Member Functions inherited from vtkObjectBase | |
const char * | GetClassName () const |
Return the class name as a string. More... | |
virtual void | Delete () |
Delete a VTK object. More... | |
virtual void | FastDelete () |
Delete a reference to this object. More... | |
void | InitializeObjectBase () |
void | Print (ostream &os) |
Print an object to an ostream. More... | |
int | GetReferenceCount () |
Return the current reference count of this object. More... | |
void | SetReferenceCount (int) |
Sets the reference count. More... | |
void | PrintRevisions (ostream &) |
Legacy. More... | |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
Protected Member Functions | |
vtkStaticCellLocator () | |
~vtkStaticCellLocator () override | |
Protected Member Functions inherited from vtkAbstractCellLocator | |
vtkAbstractCellLocator () | |
~vtkAbstractCellLocator () override | |
virtual bool | StoreCellBounds () |
This command is used internally by the locator to copy all cell Bounds into the internal CellBounds array. More... | |
virtual void | FreeCellBounds () |
This command is used internally by the locator to copy all cell Bounds into the internal CellBounds array. More... | |
Protected Member Functions inherited from vtkLocator | |
vtkLocator () | |
~vtkLocator () override | |
void | ReportReferences (vtkGarbageCollector *) override |
Protected Member Functions inherited from vtkObject | |
vtkObject () | |
~vtkObject () override | |
void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr) |
These methods allow a command to exclusively grab all events. More... | |
void | InternalReleaseFocus () |
These methods allow a command to exclusively grab all events. More... | |
Protected Member Functions inherited from vtkObjectBase | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | CollectRevisions (ostream &) |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Protected Attributes | |
double | Bounds [6] |
int | Divisions [3] |
double | H [3] |
vtkIdType | MaxNumberOfBuckets |
bool | LargeIds |
vtkCellBinner * | Binner |
vtkCellProcessor * | Processor |
unsigned char * | CellHasBeenVisited |
unsigned char | QueryNumber |
Protected Attributes inherited from vtkAbstractCellLocator | |
int | NumberOfCellsPerNode |
vtkTypeBool | RetainCellLists |
vtkTypeBool | CacheCellBounds |
vtkTypeBool | LazyEvaluation |
vtkTypeBool | UseExistingSearchStructure |
vtkGenericCell * | GenericCell |
double(* | CellBounds )[6] |
Protected Attributes inherited from vtkLocator | |
vtkDataSet * | DataSet |
vtkTypeBool | Automatic |
double | Tolerance |
int | MaxLevel |
int | Level |
vtkTimeStamp | BuildTime |
Protected Attributes inherited from vtkObject | |
bool | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
Protected Attributes inherited from vtkObjectBase | |
vtkAtomicInt32 | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
Friends | |
struct | vtkCellBinner |
struct | vtkCellProcessor |
typedef vtkAbstractCellLocator | Superclass |
Standard methods to instantiate, print and obtain type-related information. More... | |
static vtkStaticCellLocator * | New () |
Standard methods to instantiate, print and obtain type-related information. More... | |
static vtkTypeBool | IsTypeOf (const char *type) |
Standard methods to instantiate, print and obtain type-related information. More... | |
static vtkStaticCellLocator * | SafeDownCast (vtkObjectBase *o) |
Standard methods to instantiate, print and obtain type-related information. More... | |
virtual vtkTypeBool | IsA (const char *type) |
Standard methods to instantiate, print and obtain type-related information. More... | |
vtkStaticCellLocator * | NewInstance () const |
Standard methods to instantiate, print and obtain type-related information. More... | |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Standard methods to instantiate, print and obtain type-related information. More... | |
virtual vtkObjectBase * | NewInstanceInternal () const |
Standard methods to instantiate, print and obtain type-related information. More... | |
Additional Inherited Members | |
Public Types inherited from vtkAbstractCellLocator | |
typedef vtkLocator | Superclass |
Public Types inherited from vtkLocator | |
typedef vtkObject | Superclass |
Standard type and print methods. More... | |
Static Public Member Functions inherited from vtkAbstractCellLocator | |
static vtkTypeBool | IsTypeOf (const char *type) |
static vtkAbstractCellLocator * | SafeDownCast (vtkObjectBase *o) |
Static Public Member Functions inherited from vtkLocator | |
static vtkTypeBool | IsTypeOf (const char *type) |
Standard type and print methods. More... | |
static vtkLocator * | SafeDownCast (vtkObjectBase *o) |
Standard type and print methods. More... | |
Static Public Member Functions inherited from vtkObject | |
static vtkObject * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More... | |
static void | BreakOnError () |
This method is called when vtkErrorMacro executes. More... | |
static void | SetGlobalWarningDisplay (int val) |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static void | GlobalWarningDisplayOn () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static void | GlobalWarningDisplayOff () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static int | GetGlobalWarningDisplay () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
Static Public Member Functions inherited from vtkObjectBase | |
static vtkTypeBool | IsTypeOf (const char *name) |
Return 1 if this class type is the same type of (or a subclass of) the named class. More... | |
static vtkObjectBase * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More... | |
perform fast cell location operations
vtkStaticCellLocator is a type of vtkAbstractCellLocator that accelerates certain operations when performing spatial operations on cells. These operations include finding a point that contains a cell, and intersecting cells with a line.
vtkStaticCellLocator is an accelerated version of vtkCellLocator. It is threaded (via vtkSMPTools), and supports one-time static construction (i.e., incremental cell insertion is not supported).
Definition at line 52 of file vtkStaticCellLocator.h.
Standard methods to instantiate, print and obtain type-related information.
Definition at line 62 of file vtkStaticCellLocator.h.
|
protected |
|
overrideprotected |
|
static |
Standard methods to instantiate, print and obtain type-related information.
|
static |
Standard methods to instantiate, print and obtain type-related information.
|
virtual |
Standard methods to instantiate, print and obtain type-related information.
Reimplemented from vtkAbstractCellLocator.
|
static |
Standard methods to instantiate, print and obtain type-related information.
|
protectedvirtual |
Standard methods to instantiate, print and obtain type-related information.
Reimplemented from vtkAbstractCellLocator.
vtkStaticCellLocator* vtkStaticCellLocator::NewInstance | ( | ) | const |
Standard methods to instantiate, print and obtain type-related information.
|
overridevirtual |
Standard methods to instantiate, print and obtain type-related information.
Reimplemented from vtkAbstractCellLocator.
Set the number of divisions in x-y-z directions.
If the Automatic data member is enabled, the Divisions are set according to the NumberOfCellsPerNode and MaxNumberOfBuckets data members. The number of divisions must be >= 1 in each direction.
|
virtual |
Set the number of divisions in x-y-z directions.
If the Automatic data member is enabled, the Divisions are set according to the NumberOfCellsPerNode and MaxNumberOfBuckets data members. The number of divisions must be >= 1 in each direction.
|
virtual |
Set the number of divisions in x-y-z directions.
If the Automatic data member is enabled, the Divisions are set according to the NumberOfCellsPerNode and MaxNumberOfBuckets data members. The number of divisions must be >= 1 in each direction.
|
virtual |
Set the number of divisions in x-y-z directions.
If the Automatic data member is enabled, the Divisions are set according to the NumberOfCellsPerNode and MaxNumberOfBuckets data members. The number of divisions must be >= 1 in each direction.
|
overridevirtual |
Test a point to find if it is inside a cell.
Returns the cellId if inside or -1 if not.
Reimplemented from vtkAbstractCellLocator.
Reimplemented from vtkAbstractCellLocator to support bad compilers.
Reimplemented from vtkAbstractCellLocator.
Definition at line 87 of file vtkStaticCellLocator.h.
|
overridevirtual |
Return a list of unique cell ids inside of a given bounding box.
The user must provide the vtkIdList to populate. This method returns data only after the locator has been built.
Reimplemented from vtkAbstractCellLocator.
|
overridevirtual |
Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buckets containing the line.
It is possible that an empty cell list is returned. The user must provide the vtkIdList cell list to populate. This method returns data only after the locator has been built.
Reimplemented from vtkAbstractCellLocator.
|
overridevirtual |
Return intersection point (if any) AND the cell which was intersected by the finite line.
The cell is returned as a cell id and as a generic cell.
Reimplemented from vtkAbstractCellLocator.
|
inlineoverridevirtual |
Reimplemented from vtkAbstractCellLocator to support bad compilers.
Reimplemented from vtkAbstractCellLocator.
Definition at line 119 of file vtkStaticCellLocator.h.
|
inlineoverridevirtual |
Reimplemented from vtkAbstractCellLocator to support bad compilers.
Reimplemented from vtkAbstractCellLocator.
Definition at line 128 of file vtkStaticCellLocator.h.
|
inlineoverridevirtual |
Reimplemented from vtkAbstractCellLocator to support bad compilers.
Reimplemented from vtkAbstractCellLocator.
Definition at line 138 of file vtkStaticCellLocator.h.
|
overridevirtual |
Satisfy vtkLocator abstract interface.
Implements vtkLocator.
|
overridevirtual |
Satisfy vtkLocator abstract interface.
Implements vtkLocator.
|
overridevirtual |
Satisfy vtkLocator abstract interface.
Implements vtkLocator.
|
virtual |
Set the maximum number of buckets in the locator.
By default the value is set to VTK_INT_MAX. Note that there are significant performance implications at work here. If the number of buckets is set very large (meaning > VTK_INT_MAX) then internal sorting may be performed using 64-bit integers (which is much slower than using a 32-bit int). Of course, memory requirements may dramatically increase as well. It is recommended that the default value be used; but for extremely large data it may be desired to create a locator with an exceptionally large number of buckets. Note also that during initialization of the locator if the MaxNumberOfBuckets threshold is exceeded, the Divisions are scaled down in such a way as not to exceed the MaxNumberOfBuckets proportionally to the size of the bounding box in the x-y-z directions.
|
virtual |
Set the maximum number of buckets in the locator.
By default the value is set to VTK_INT_MAX. Note that there are significant performance implications at work here. If the number of buckets is set very large (meaning > VTK_INT_MAX) then internal sorting may be performed using 64-bit integers (which is much slower than using a 32-bit int). Of course, memory requirements may dramatically increase as well. It is recommended that the default value be used; but for extremely large data it may be desired to create a locator with an exceptionally large number of buckets. Note also that during initialization of the locator if the MaxNumberOfBuckets threshold is exceeded, the Divisions are scaled down in such a way as not to exceed the MaxNumberOfBuckets proportionally to the size of the bounding box in the x-y-z directions.
|
inline |
Inform the user as to whether large ids are being used.
This flag only has meaning after the locator has been built. Large ids are used when the number of binned points, or the number of bins, is >= the maximum number of buckets (specified by the user). Note that LargeIds are only available on 64-bit architectures.
Definition at line 179 of file vtkStaticCellLocator.h.
|
friend |
Definition at line 54 of file vtkStaticCellLocator.h.
|
friend |
Definition at line 55 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 185 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 186 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 187 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 189 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 190 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 193 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 194 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 197 of file vtkStaticCellLocator.h.
|
protected |
Definition at line 198 of file vtkStaticCellLocator.h.