Difference between revisions of "User:Le Forgeron/UVMeshable"
Jump to navigation
Jump to search
Le Forgeron (talk | contribs) (Created page with "{{User:Le_Forgeron/HgPovray38/soon}} == UVMeshable == === A bit of programming === UVMeshable objects are shapes that provides the UVMeshable interface: <source lang="c"> c...") |
Le Forgeron (talk | contribs) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{User:Le_Forgeron/HgPovray38/ | + | {{User:Le_Forgeron/HgPovray38/available}} |
== UVMeshable == | == UVMeshable == | ||
Line 10: | Line 10: | ||
{ | { | ||
public: | public: | ||
− | virtual void evalVertex( | + | virtual void evalVertex( Vector3d& r, const DBL u, const DBL v )const; |
− | virtual void evalNormal( | + | virtual void evalNormal( Vector3d& r, const DBL u, const DBL v )const; |
− | virtual void minUV( | + | virtual void minUV( Vector2d& r )const; |
− | virtual void maxUV( | + | virtual void maxUV( Vector2d& r )const; |
}; | }; | ||
</source> | </source> | ||
− | === Which shapes are | + | === Which shapes are UVMeshable === |
− | So far the following shapes are | + | So far the following shapes are UVMeshable: |
* <code>nurbs</code> (see [[User:Le_Forgeron/nurbs]]) | * <code>nurbs</code> (see [[User:Le_Forgeron/nurbs]]) | ||
− | * <code>rational_bezier_patch</code> (see [[User:Le_Forgeron/rational_bezier_patch]] | + | * <code>rational_bezier_patch</code> (see [[User:Le_Forgeron/rational_bezier_patch]]) |
− | * <code>sphere</code> | + | * <code>sphere</code> |
+ | * <code>cone</code> | ||
+ | * <code>cylinder</code> | ||
+ | * <code>ovus</code> | ||
+ | * <code>lemon</code> | ||
+ | * <code>torus</code> | ||
+ | * <code>disc</code> | ||
+ | * <code>parametric</code> | ||
=== Access to data of UVMeshable objects === | === Access to data of UVMeshable objects === | ||
Line 29: | Line 36: | ||
* Returns the vertex vector that corresponds to the given uv-coordinates '''uv_vertex( UVMeshableObject, Ucoordinate, Vcoordinate )''' | * Returns the vertex vector that corresponds to the given uv-coordinates '''uv_vertex( UVMeshableObject, Ucoordinate, Vcoordinate )''' | ||
* Returns the normal vector that corresponds to the given uv-coordinates '''uv_normal( UVMeshableObject, Ucoordinate, Vcoordinate )''' | * Returns the normal vector that corresponds to the given uv-coordinates '''uv_normal( UVMeshableObject, Ucoordinate, Vcoordinate )''' | ||
+ | |||
+ | === Turning UVMeshable into mesh === | ||
+ | |||
+ | <source lang="pov"> | ||
+ | #include "NurbsMesh.inc" | ||
+ | #declare UResolution = 92; | ||
+ | #declare VResolution = 92; | ||
+ | mesh { | ||
+ | UVMeshable( UVMeshableObject, UResolution, VResolution ) | ||
+ | } | ||
+ | </source> | ||
+ | <gallery> | ||
+ | image:LeForgeronUVMeshableCone.png | ||
+ | image:LeForgeronUVMeshableCylinder.png | ||
+ | image:LeForgeronUVMeshableLemon.png | ||
+ | image:LeForgeronUVMeshableOvus.png | ||
+ | image:LeForgeronUVMeshableSphere.png | ||
+ | image:LeForgeronUVMeshableTorus.png | ||
+ | image:LeForgeronUVMeshableParametric.png | ||
+ | </gallery> | ||
+ | |||
+ | [[Image:LeForgeronUVMeshableMany.png]] |
Latest revision as of 16:40, 14 June 2020
- Everything about HgPovray38 in User:Le_Forgeron/HgPovray38
- Code is available on branch hgpovray38 at https://github.com/LeForgeron/povray
UVMeshable
A bit of programming
UVMeshable objects are shapes that provides the UVMeshable interface:
class UVMeshable
{
public:
virtual void evalVertex( Vector3d& r, const DBL u, const DBL v )const;
virtual void evalNormal( Vector3d& r, const DBL u, const DBL v )const;
virtual void minUV( Vector2d& r )const;
virtual void maxUV( Vector2d& r )const;
};
Which shapes are UVMeshable
So far the following shapes are UVMeshable:
nurbs
(see User:Le_Forgeron/nurbs)rational_bezier_patch
(see User:Le_Forgeron/rational_bezier_patch)sphere
cone
cylinder
ovus
lemon
torus
disc
parametric
Access to data of UVMeshable objects
- Returns the minimal uv-coordinates uv_min( UVMeshableObject )
- Returns the maximal uv-coordinates uv_max( UVMeshableObject )
- Returns the vertex vector that corresponds to the given uv-coordinates uv_vertex( UVMeshableObject, Ucoordinate, Vcoordinate )
- Returns the normal vector that corresponds to the given uv-coordinates uv_normal( UVMeshableObject, Ucoordinate, Vcoordinate )
Turning UVMeshable into mesh
#include "NurbsMesh.inc"
#declare UResolution = 92;
#declare VResolution = 92;
mesh {
UVMeshable( UVMeshableObject, UResolution, VResolution )
}