7#ifndef MI_NEURAYLIB_IFREEFORM_SURFACE_H
8#define MI_NEURAYLIB_IFREEFORM_SURFACE_H
22class ITexture_surface;
38 BASIS_TYPE_FORCE_32_BIT = 0xffffffffU
53 DIMENSION_FORCE_32_BIT = 0xffffffffU
68 CURVE_TYPE_FORCE_32_BIT = 0xffffffffU
97 public base::Interface_declare<0x5b54fda0,0x1034,0x48a2,0x9d,0xd1,0x4d,0x14,0xaa,0xba,0xa2,0xa7,
98 neuraylib::IScene_element>
293 public base::Interface_declare<0x8bc55fb4,0x91cb,0x4b0c,0xa2,0x3a,0x1a,0x67,0x71,0x61,0x73,0xf0>
601 public base::Interface_declare<0xa4e79414,0x6b74,0x422c,0x93,0x83,0x8a,0x08,0x41,0xf9,0x0a,0x27>
655 public base::Interface_declare<0x1aae0632,0xcac0,0x4cab,0xb7,0xb4,0x26,0x6c,0x8a,0xf5,0x44,0x4e>
874 public base::Interface_declare<0x5d39fdcb,0x9a3d,0x42ed,0xb3,0x90,0xc3,0x20,0x3d,0x31,0xa9,0x9d>
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
Interface representing an attribute vector for triangle meshes, polygon meshes, and subdivision surfa...
Definition: iattribute_vector.h:184
A curve segment used by freeform surfaces.
Definition: ifreeform_surface.h:656
virtual Sint32 set_degree(Uint32 degree)=0
Sets the basis degree.
virtual Sint32 set_control_point(Uint32 index, Float64_2_struct p)=0
Sets a control point.
virtual Uint32 get_control_points_size() const =0
Returns the number of control points.
virtual Sint32 set_basis_type(Basis_type type)=0
Sets the basis type.
virtual Uint32 get_parameters_size() const =0
Returns the size of the parameter vector.
virtual Sint32 get_control_point(Uint32 index, Float64_2_struct &p) const =0
Returns a control point.
virtual Sint32 get_weight(Uint32 index, Float32 &weight) const =0
Returns a weight.
virtual void get_range(Float64 &range_min, Float64 &range_max) const =0
Returns the parameter range.
virtual Sint32 set_parameter(Uint32 index, Float64 value)=0
Sets a parameter.
virtual Sint32 set_weight(Uint32 index, Float32 weight)=0
Sets a weight.
virtual Uint32 get_degree() const =0
Returns the basis degree.
virtual void set_rational(bool rational)=0
Sets the rational flag.
virtual Uint32 get_patches_size() const =0
Returns the number of patches.
virtual Sint32 set_control_point(Uint32 index, Float32_2_struct p)=0
Sets a control point.
virtual bool get_rational() const =0
Returns the rational flag.
virtual Sint32 get_weight(Uint32 index, Float64 &weight) const =0
Returns a weight.
virtual Basis_type get_basis_type() const =0
Returns the basis type.
virtual Sint32 set_weight(Uint32 index, Float64 weight)=0
Sets a weight.
virtual Sint32 set_patches_size(Uint32 count)=0
Sets the number of patches.
virtual Sint32 set_range(Float64 range_min, Float64 range_max)=0
Sets the parameter range.
virtual Float64 get_parameter(Uint32 index) const =0
Returns a parameter.
virtual Sint32 get_control_point(Uint32 index, Float32_2_struct &p) const =0
Returns a control point.
A curve used by freeform surfaces.
Definition: ifreeform_surface.h:602
virtual Sint32 remove_curve_segment(Curve_segment_handle_struct s)=0
Removes a curve segment.
virtual Curve_type get_type() const =0
Returns the curve type.
virtual const ICurve_segment * access_curve_segment(Curve_segment_handle_struct s) const =0
Returns a curve segment (const).
virtual Sint32 set_type(Curve_type curve_type)=0
Sets the curve type.
virtual ICurve_segment * edit_curve_segment(Curve_segment_handle_struct s)=0
Returns a curve segment (mutable).
virtual Uint32 get_curve_segments_size() const =0
Returns the number of curve segments.
virtual ICurve_segment * add_curve_segment()=0
Adds and returns a new curve segment.
A surface of a freeform surface.
Definition: ifreeform_surface.h:294
virtual Sint32 remove_curve(Curve_handle_struct c)=0
Removes a curve.
virtual Sint32 set_control_point(Uint32 index_u, Uint32 index_v, Float64_3_struct p)=0
Sets a control point.
virtual const ICurve * access_curve(Curve_handle_struct c) const =0
Returns a curve (const).
virtual Uint32 get_parameters_size(Parameter_space_dimension dim) const =0
Returns the size of the parameter vector.
virtual Sint32 set_basis_type(Basis_type type)=0
Sets the basis type.
virtual Sint32 get_weight(Uint32 index_u, Uint32 index_v, Float64 &weight) const =0
Returns a weight.
virtual Sint32 set_patches_size(Parameter_space_dimension dim, Uint32 count)=0
Sets the number of patches.
virtual Uint32 texture_surfaces_size() const =0
Returns the number of texture surfaces.
virtual Sint32 set_weight(Uint32 index_u, Uint32 index_v, Float32 weight)=0
Sets a weight.
virtual bool get_rational() const =0
Returns the rational flag.
virtual Uint32 get_control_points_size(Parameter_space_dimension dim) const =0
Returns the number of control points.
virtual Sint32 set_range(Parameter_space_dimension dim, Float64 range_min, Float64 range_max)=0
Sets the parameter range.
virtual Sint32 get_control_point(Uint32 index_u, Uint32 index_v, Float64_3_struct &p) const =0
Returns a control point.
virtual Sint32 set_parameter(Parameter_space_dimension dim, Uint32 index, Float64 value)=0
Sets a parameter.
virtual void set_rational(bool rational)=0
Sets the rational flag.
virtual Sint32 set_weight(Uint32 index_u, Uint32 index_v, Float64 weight)=0
Sets a weight.
virtual ICurve * edit_curve(Curve_handle_struct c)=0
Returns a curve (mutable).
virtual Uint32 get_patches_size(Parameter_space_dimension dim) const =0
Returns the number of patches.
virtual Sint32 set_degree(Parameter_space_dimension dim, Uint32 degree)=0
Sets the basis degree.
virtual Uint32 get_degree(Parameter_space_dimension dim) const =0
Returns the basis degree.
virtual ITexture_surface * edit_texture_surface(Texture_surface_handle_struct t) const =0
Returns a texture surface (mutable).
virtual ITexture_surface * add_texture_surface()=0
Adds and returns a new texture surface.
virtual Uint32 curves_size() const =0
Returns the number of curves.
virtual Sint32 get_range(Parameter_space_dimension dim, Float64 &range_min, Float64 &range_max) const =0
Returns the parameter range.
virtual ICurve * add_curve()=0
Adds and returns a new curve.
virtual Sint32 get_control_point(Uint32 index_u, Uint32 index_v, Float32_3_struct &p) const =0
Returns a control point.
virtual const ITexture_surface * access_texture_surface(Texture_surface_handle_struct t) const =0
Returns a texture surface (const).
virtual Sint32 get_weight(Uint32 index_u, Uint32 index_v, Float32 &weight) const =0
Returns a weight.
virtual Float64 get_parameter(Parameter_space_dimension dim, Uint32 index) const =0
Returns a parameter.
virtual Basis_type get_basis_type() const =0
Returns the basis type.
virtual Sint32 remove_texture_surface(Texture_surface_handle_struct t)=0
Removes a texture surface.
virtual Sint32 set_control_point(Uint32 index_u, Uint32 index_v, Float32_3_struct p)=0
Sets a control point.
A texture surface associated with freeform surfaces.
Definition: ifreeform_surface.h:875
virtual Uint32 get_texture_coordinate_length() const =0
Returns the length of the texture coordinates.
virtual Sint32 set_texture_coordinate(Uint32 index_u, Uint32 index_v, const Float64 *d, Uint32 n)=0
Sets a texture coordinate.
virtual Sint32 set_texture_coordinates_size(Parameter_space_dimension dim, Uint32 count)=0
Sets the size of the texture coordinates.
virtual Sint32 get_texture_coordinate(Uint32 index_u, Uint32 index_v, Float64 *d, Uint32 n) const =0
Returns a texture coordinate.
virtual Sint32 get_texture_coordinate(Uint32 index_u, Uint32 index_v, Float32 *f, Uint32 n) const =0
Returns a texture coordinate.
virtual Uint32 get_texture_coordinates_size(Parameter_space_dimension dim) const =0
Returns the size of the texture coordinates.
virtual Sint32 set_texture_coordinate(Uint32 index_u, Uint32 index_v, const Float32 *f, Uint32 n)=0
Sets a texture coordinate.
virtual Sint32 set_texture_coordinate_length(Uint32 length)=0
Sets the length of the texture coordinates.
#define mi_static_assert(expr)
Compile time assertion that raises a compilation error if the constant expression expr evaluates to f...
Definition: assert.h:65
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
double Float64
64-bit float.
Definition: types.h:52
float Float32
32-bit float.
Definition: types.h:51
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Float32 length(Float32 a)
Returns the Euclidean norm of the scalar a (its absolute value).
Definition: function.h:1114
Basis_type
Different basis types that are supported by freeform surfaces.
Definition: ifreeform_surface.h:30
Curve_type
Different curve types that are supported by freeform surfaces.
Definition: ifreeform_surface.h:60
Parameter_space_dimension
Distinguishes the two dimensions of the parameter space of freeform surfaces.
Definition: ifreeform_surface.h:45
Mesh_attribute_name
Symbolic constants for mesh attributes.
Definition: iattribute_vector.h:60
@ BASIS_BEZIER
Represents a Bezier basis.
Definition: ifreeform_surface.h:32
@ BASIS_BSPLINE
Represents a B-spline basis.
Definition: ifreeform_surface.h:35
@ HOLE_CURVE
A hole curve cuts away all parts of the surface inside the curve.
Definition: ifreeform_surface.h:65
@ TRIM_CURVE
A trim curve cuts away all parts of the surface outside the curve.
Definition: ifreeform_surface.h:62
@ DIMENSION_V
Represents the V-dimension of the parameter space.
Definition: ifreeform_surface.h:50
@ DIMENSION_U
Represents the U-dimension of the parameter space.
Definition: ifreeform_surface.h:47
Attribute vectors, used for triangle and polygon meshes.
Simple integer-based handles used by mesh interfaces.
Base class for all scene elements.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Storage class for an axis-aligned N-dimensional bounding box class template of fixed dimension.
Definition: bbox.h:47
Storage class for a NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:90
Generic storage class template for math vector representations storing DIM elements of type T.
Definition: vector.h:135
Handle class for type-safety.
Definition: identifier.h:56
Typedefs for types from the math API.