itriangle_connectivity.h File Reference
Description
Triangle connectivities and associated helper classes.
Code Example
itriangle_connectivity.h
//*****************************************************************************
// Copyright 1986, 2016 NVIDIA Corporation. All rights reserved.
//*****************************************************************************
//*****************************************************************************
#ifndef MI_NEURAYLIB_ITRIANGLE_CONNECTIVITY_H
#define MI_NEURAYLIB_ITRIANGLE_CONNECTIVITY_H
#include <mi/neuraylib/iattribute_vector.h>
#include <mi/neuraylib/identifier.h>
#include <mi/neuraylib/version.h>
namespace mi {
namespace neuraylib {
struct Triangle_point_indices_struct
{
Uint32 index[3];
};
class Triangle_point_indices : public Triangle_point_indices_struct
{
public:
Triangle_point_indices() { index[0] = 0; index[1] = 0; index[2] = 0; }
Triangle_point_indices( Uint32 e1, Uint32 e2, Uint32 e3) {
index[0] = e1;
index[1] = e2;
index[2] = e3;
}
Triangle_point_indices( const Triangle_point_indices_struct& other) {
index[0] = other.index[0];
index[1] = other.index[1];
index[2] = other.index[2];
}
Uint32& operator[]( Uint32 i) { return index[i]; }
const Uint32& operator[]( Uint32 i) const { return index[i]; }
int compare( const Triangle_point_indices& other) const {
if ( index[0] < other.index[0]) return -1;
if ( index[0] > other.index[0]) return 1;
if ( index[1] < other.index[1]) return -1;
if ( index[1] > other.index[1]) return 1;
if ( index[2] < other.index[2]) return -1;
if ( index[2] > other.index[2]) return 1;
return 0;
}
bool operator==( const Triangle_point_indices& other) const {
return compare(other) == 0;
}
bool operator!=( const Triangle_point_indices& other) const {
return compare(other) != 0;
}
bool operator< ( const Triangle_point_indices& other) const {
return compare(other) < 0;
}
bool operator< =( const Triangle_point_indices& other) const {
return compare(other) <= 0;
}
bool operator>( const Triangle_point_indices& other) const {
return compare(other) > 0;
}
bool operator>=( const Triangle_point_indices& other) const {
return compare(other) >= 0;
}
};
class ITriangle_connectivity :
public base::Interface_declare<0x47cf1faa,0x609d,0x44ee,0xa3,0x6a,0xca,0x02,0x92,0xf7,0x6a,0x40>
{
public:
virtual Uint32
triangles_size() const = 0;
virtual Sint32
set_triangle_indices( Triangle_handle_struct t, const Uint32* indices) = 0;
virtual Sint32
set_triangle_indices(
Triangle_handle_struct t, Uint32 v0, Uint32 v1, Uint32 v2) = 0;
virtual Sint32
set_triangle_indices(
Triangle_handle_struct t, const Triangle_point_indices_struct &triangle) = 0;
virtual Uint32
get_triangle_index( Triangle_handle_struct t, Uint32 vertex) const = 0;
virtual Triangle_point_indices_struct
triangle_point_indices(
Triangle_handle_struct t) const = 0;
virtual bool is_valid_connectivity() const = 0;
virtual bool has_attribute( Mesh_attribute_name name) const = 0;
virtual IAttribute_vector* create_attribute_vector(
Mesh_attribute_name name, Uint32 dim = 1) const = 0;
virtual const IAttribute_vector* access_attribute_vector( Mesh_attribute_name name) const = 0;
virtual IAttribute_vector* edit_attribute_vector( Mesh_attribute_name name) = 0;
virtual Sint32
attach_attribute_vector( IAttribute_vector* attr) = 0;
virtual Sint32
remove_attribute_vector( Mesh_attribute_name name) = 0;
virtual Connectivity_map_type
get_map_type() const = 0;
};
// end group mi_neuray_leaf_nodes
} // namespace neuraylib
#ifdef MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
using neuraylib::Connectivity_map_type;
using neuraylib::IAttribute_vector;
using neuraylib::ITriangle_connectivity;
using neuraylib::Mesh_attribute_name;
using neuraylib::Triangle_handle_struct;
using neuraylib::Triangle_point_indices;
using neuraylib::Triangle_point_indices_struct;
#endif // MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
} // namespace mi
#endif // MI_NEURAYLIB_ITRIANGLE_CONNECTIVITY_H
Namespaces
- namespace
- Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
- namespace
- Namespace for the neuray API. More...