
#########################
A3DUVParameterizationData
#########################

.. c:struct:: A3DUVParameterizationData

   Structure for parameterizing surfaces. 
   
   
      2.0
   
   
   
   This structure is used in surface definitions (see :ref:`Surfaces Module <group__a3d__srf>`\ ). Its members specify a trimming domain (2-dimensional range) and parameterization settings.
   
   It describes a surface reparameterization regarding the implicit parameterization that corresponds to its canonical form. Here are some important points: 
   
   
   - *Default settings.* If reparameterization is unnecessary (the implicit parameterization is used), the :c:member:`m_dUCoeffA <A3DUVParameterizationData.m_dUCoeffA>` and :c:member:`m_dVCoeffA <A3DUVParameterizationData.m_dVCoeffA>` members must be set to 1, the :c:member:`m_dUCoeffB <A3DUVParameterizationData.m_dUCoeffB>` and :c:member:`m_dVCoeffB <A3DUVParameterizationData.m_dVCoeffB>` members must be set to 0, and the :c:member:`m_bSwapUV <A3DUVParameterizationData.m_bSwapUV>` should be set to false. 
   - *UV domain.* The :c:member:`m_sUVDomain <A3DUVParameterizationData.m_sUVDomain>` member defines the 2-dimensional range for a surface. Its coordinates are in the **final** parameterization space. Parts of the object that are outside the bounding box are excluded from the view. The domain's units are specific for the surface type. For example, the units for a cylinder are degrees and linear units (typically millimeters).
   
   
   Here is the evaluation formula for a given parameterization setting: 
   
   
   ::
   
      if (!swap_uv)
      {
          implicit_param.u = parameterization_on_u_coeff_a * param.u + parameterization_on_u_coeff_b
          implicit_param.v = parameterization_on_v_coeff_a * param.v + parameterization_on_v_coeff_b
      }
      else
      {
          implicit_param.u = parameterization_on_v_coeff_a * param.v + parameterization_on_v_coeff_b
          implicit_param.v = parameterization_on_u_coeff_a * param.u + parameterization_on_u_coeff_b
      }
   
   To ensure that ``implicit_param.u(min) < implicit_param.v(min)`` and ``implicit_param.u(max) < implicit_param.v(max)``\ , you must specify parameterization values.
   
   This example shows the settings to reparameterize a cylinder of 25mm height, having an implicit parameterization of 2 PI radian in u and height in v, to a domain of (0,0) and (1,1): 
   
   
   - :c:member:`m_dUCoeffA <A3DUVParameterizationData.m_dUCoeffA>` = 2 PI 
   - :c:member:`m_dUCoeffB <A3DUVParameterizationData.m_dUCoeffB>` = 0. 
   - :c:member:`m_dVCoeffA <A3DUVParameterizationData.m_dVCoeffA>` = 25 
   - :c:member:`m_dVCoeffB <A3DUVParameterizationData.m_dVCoeffB>` = 0. 
   - :c:member:`m_bSwapUV <A3DUVParameterizationData.m_bSwapUV>` = false
   
   
   And this example shows the member settings to retain the implicit parameterization (reparameterization is unnecessary): 
   
   
   - :c:member:`m_dUCoeffA <A3DUVParameterizationData.m_dUCoeffA>` = 1. 
   - :c:member:`m_dUCoeffB <A3DUVParameterizationData.m_dUCoeffB>` = 0. 
   - :c:member:`m_dVCoeffA <A3DUVParameterizationData.m_dVCoeffA>` = 1. 
   - :c:member:`m_dVCoeffB <A3DUVParameterizationData.m_dVCoeffB>` = 0. 
   - :c:member:`m_bSwapUV <A3DUVParameterizationData.m_bSwapUV>` = false 
   
   
   Index
   =====
   
   .. rubric:: Variables
   
   
   .. rst-class:: api-xref-list
   
   
   * :c:member:`~A3DUVParameterizationData.m_sUVDomain`
   * :c:member:`~A3DUVParameterizationData.m_bSwapUV`
   * :c:member:`~A3DUVParameterizationData.m_dUCoeffA`
   * :c:member:`~A3DUVParameterizationData.m_dVCoeffA`
   * :c:member:`~A3DUVParameterizationData.m_dUCoeffB`
   * :c:member:`~A3DUVParameterizationData.m_dVCoeffB`
   
   



.. rst-class:: kind-group kind-variable

.. rubric:: Variables
   :class: kind-group-title


.. c:member:: A3DDomainData A3DUVParameterizationData.m_sUVDomain

      .. rst-class:: sig-pretty-signature
      
         | :c:struct:`~A3DDomainData`
      
      Definition domain. 
      



.. c:member:: A3DBool A3DUVParameterizationData.m_bSwapUV

      .. rst-class:: sig-pretty-signature
      
         | :c:type:`~A3DBool`
      
      Need to swap U and V coordinates. 
      



.. c:member:: A3DDouble A3DUVParameterizationData.m_dUCoeffA

      .. rst-class:: sig-pretty-signature
      
         | :c:type:`~A3DDouble`
      
      Coefficient for reparameterization along u vector. 
      



.. c:member:: A3DDouble A3DUVParameterizationData.m_dVCoeffA

      .. rst-class:: sig-pretty-signature
      
         | :c:type:`~A3DDouble`
      
      Coefficient for reparameterization along v vector. 
      



.. c:member:: A3DDouble A3DUVParameterizationData.m_dUCoeffB

      .. rst-class:: sig-pretty-signature
      
         | :c:type:`~A3DDouble`
      
      Coefficient for reparameterization along u vector. 
      



.. c:member:: A3DDouble A3DUVParameterizationData.m_dVCoeffB

      .. rst-class:: sig-pretty-signature
      
         | :c:type:`~A3DDouble`
      
      Coefficient for reparameterization along v vector. 
      




