FBX SDK Reference Guide: kfbxnurbsurfevalmacrosutil.h Source File
Go to the documentation of this file.
00001 
00004 #ifndef _FBXSDK_NURB_SURFACE_EVALUATOR_MACROS_UTILS_H_
00005 #define _FBXSDK_NURB_SURFACE_EVALUATOR_MACROS_UTILS_H_
00006 
00007 /**************************************************************************************
00008 
00009  Copyright © 2001 - 2008 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL 
00044     #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046 
00047 #include <kaydara.h>
00048 #include <klib/kdebug.h>
00049 
00050 #include <kfbxplugins/kfbxsurfevalmacrosutil.h>
00051 #include <fbxfilesdk_nsbegin.h>
00052 
00053 
00055 #define Compute_NUR_Point_Dimension_With_pBij( )                            \
00056                 *pDestination = (                                           \
00057                         pBij[0]  * (*pPoint00) + pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +  pBij[3] * (*pPoint03) +   \
00058                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +   \
00059                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23) +   \
00060                         pBij[12] * (*pPoint30) + pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32) +  pBij[15]* (*pPoint33)     \
00061                                 ) /pWeight_Table[0] /*Point_Weight*/;
00062 
00063 
00065 #define Compute_NUR_Point_Dimension_With_pBij_V0( )                         \
00066                 *pDestination = (                                           \
00067                         pBij[0]  * (*pPoint00) + pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +  pBij[3] * (*pPoint03) +   \
00068                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +   \
00069                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23)     \
00070                                 ) /pWeight_Table[0] /*Point_Weight*/;
00071 
00072 
00074 #define Compute_NUR_Point_Dimension_With_pBij_V0_U0( )                          \
00075                 *pDestination = (                                           \
00076                         pBij[0]  * (*pPoint00) + pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +    \
00077                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +    \
00078                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22)  \
00079                                 ) /pWeight_Table[0] /*Point_Weight*/;
00080 
00081 
00083 #define Compute_NUR_Point_Dimension_With_pBij_V0_U1( )                          \
00084                 *pDestination = (                                           \
00085                         pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +  pBij[3] * (*pPoint03) +    \
00086                         pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +    \
00087                         pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23)  \
00088                                 ) /pWeight_Table[0] /*Point_Weight*/;
00089 
00090 
00092 #define Compute_NUR_Point_Dimension_With_pBij_U0( )                         \
00093                 *pDestination = (                                           \
00094                         pBij[0]  * (*pPoint00) + pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +    \
00095                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +    \
00096                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +    \
00097                         pBij[12] * (*pPoint30) + pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32)      \
00098                                 ) /pWeight_Table[0] /*Point_Weight*/;
00099 
00100 
00102 #define Compute_NUR_Point_Dimension_With_pBij_U1( )                         \
00103                 *pDestination = (                                           \
00104                         pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +  pBij[3] * (*pPoint03) +    \
00105                         pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +    \
00106                         pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23) +    \
00107                         pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32) +  pBij[15]* (*pPoint33)      \
00108                                 ) /pWeight_Table[0] /*Point_Weight*/;
00109 
00110 
00112 #define Compute_NUR_Point_Dimension_With_pBij_V1( )                         \
00113                 *pDestination = (                                           \
00114                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +   \
00115                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23) +   \
00116                         pBij[12] * (*pPoint30) + pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32) +  pBij[15]* (*pPoint33)     \
00117                                 ) /pWeight_Table[0] /*Point_Weight*/;
00118 
00119 
00121 #define Compute_NUR_Point_Dimension_With_pBij_V1_U0( )                          \
00122                 *pDestination = (                                           \
00123                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +    \
00124                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +    \
00125                         pBij[12] * (*pPoint30) + pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32)      \
00126                                 ) /pWeight_Table[0] /*Point_Weight*/;
00127 
00128 
00130 #define Compute_NUR_Point_Dimension_With_pBij_V1_U1( )                          \
00131                 *pDestination = (                                           \
00132                         pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +    \
00133                         pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23) +    \
00134                         pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32) +  pBij[15]* (*pPoint33)      \
00135                                 ) /pWeight_Table[0] /*Point_Weight*/;
00136 
00137 
00139 #define Compute_NUR_Point_Dimension_With_pBij( )                            \
00140                 *pDestination = (                                           \
00141                         pBij[0]  * (*pPoint00) + pBij[1] * (*pPoint01) + pBij[2] * (*pPoint02) +  pBij[3] * (*pPoint03) +   \
00142                         pBij[4]  * (*pPoint10) + pBij[5] * (*pPoint11) + pBij[6] * (*pPoint12) +  pBij[7] * (*pPoint13) +   \
00143                         pBij[8]  * (*pPoint20) + pBij[9] * (*pPoint21) + pBij[10]* (*pPoint22) +  pBij[11]* (*pPoint23) +   \
00144                         pBij[12] * (*pPoint30) + pBij[13]* (*pPoint31) + pBij[14]* (*pPoint32) +  pBij[15]* (*pPoint33)     \
00145                                 ) /pWeight_Table[0] /*Point_Weight*/;
00146 
00147 
00149 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj( )                \
00150                                                                                 \
00151                 *pPointNormalU =( (                                             \
00152                         pBdij[0] * (*pPoint00) + pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +  pBdij[3] * (*pPoint03) +\
00153                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) +\
00154                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) +\
00155                         pBdij[12]* (*pPoint30) + pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32) +  pBdij[15]* (*pPoint33)  \
00156                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00157                                                                                                                             \
00158                 *pPointNormalV = ((                                                                                         \
00159                         pBidj[0] * (*pPoint00) + pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +  pBidj[3] * (*pPoint03) +\
00160                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) +\
00161                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) +\
00162                         pBidj[12]* (*pPoint30) + pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32) +  pBidj[15]* (*pPoint33)  \
00163                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00164 
00165 
00167 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V0( )             \
00168                                                                                 \
00169                 *pPointNormalU =( (                                             \
00170                         pBdij[0] * (*pPoint00) + pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +  pBdij[3] * (*pPoint03) +\
00171                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) +\
00172                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) \
00173                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00174                                                                                                                             \
00175                 *pPointNormalV = ((                                                                                         \
00176                         pBidj[0] * (*pPoint00) + pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +  pBidj[3] * (*pPoint03) +\
00177                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) +\
00178                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) \
00179                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00180 
00182 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V0_U0( )              \
00183                                                                                 \
00184                 *pPointNormalU =( (                                             \
00185                         pBdij[0] * (*pPoint00) + pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +\
00186                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +\
00187                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) \
00188                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00189                                                                                                                             \
00190                 *pPointNormalV = ((                                                                                         \
00191                         pBidj[0] * (*pPoint00) + pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +\
00192                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +\
00193                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) \
00194                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00195 
00196 
00198 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V0_U1( )              \
00199                                                                                 \
00200                 *pPointNormalU =( (                                             \
00201                         pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +  pBdij[3] * (*pPoint03) +\
00202                         pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) +\
00203                         pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) \
00204                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00205                                                                                                                             \
00206                 *pPointNormalV = ((                                                                                         \
00207                         pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +  pBidj[3] * (*pPoint03) +\
00208                         pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) +\
00209                         pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) \
00210                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00211 
00213 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_U0( )             \
00214                                                                                 \
00215                 *pPointNormalU =( (                                             \
00216                         pBdij[0] * (*pPoint00) + pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +\
00217                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +\
00218                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +\
00219                         pBdij[12]* (*pPoint30) + pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32)    \
00220                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00221                                                                                                                             \
00222                 *pPointNormalV = ((                                                                                         \
00223                         pBidj[0] * (*pPoint00) + pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +\
00224                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +\
00225                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +\
00226                         pBidj[12]* (*pPoint30) + pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32)    \
00227                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00228 
00230 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_U1( )             \
00231                                                                                 \
00232                 *pPointNormalU =( (                                             \
00233                         pBdij[1] * (*pPoint01) + pBdij[2] * (*pPoint02) +  pBdij[3] * (*pPoint03) +\
00234                         pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) +\
00235                         pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) +\
00236                         pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32) +  pBdij[15]* (*pPoint33)   \
00237                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00238                                                                                                                             \
00239                 *pPointNormalV = ((                                                                                         \
00240                         + pBidj[1] * (*pPoint01) + pBidj[2] * (*pPoint02) +  pBidj[3] * (*pPoint03) +\
00241                         + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) +\
00242                         + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) +\
00243                         + pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32) +  pBidj[15]* (*pPoint33)     \
00244                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00245 
00247 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V1( )             \
00248                                                                                 \
00249                 *pPointNormalU =( (                                             \
00250                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) +\
00251                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) +\
00252                         pBdij[12]* (*pPoint30) + pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32) +  pBdij[15]* (*pPoint33)  \
00253                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];                                       \
00254                                                                                                                             \
00255                 *pPointNormalV = ((                                                                                         \
00256                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) +\
00257                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) +\
00258                         pBidj[12]* (*pPoint30) + pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32) +  pBidj[15]* (*pPoint33)  \
00259                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];                                       \
00260 
00262 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V1_U0( )                              \
00263                                                                                                     \
00264                 *pPointNormalU =( (                                                                 \
00265                         pBdij[4] * (*pPoint10) + pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12)+   \
00266                         pBdij[8] * (*pPoint20) + pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22)+   \
00267                         pBdij[12]* (*pPoint30) + pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32)    \
00268                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];               \
00269                                                                                                     \
00270                 *pPointNormalV = ((                                                                 \
00271                         pBidj[4] * (*pPoint10) + pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12)+   \
00272                         pBidj[8] * (*pPoint20) + pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22)+   \
00273                         pBidj[12]* (*pPoint30) + pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32)    \
00274                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];               \
00275 
00277 #define Compute_NUR_Point_NormalUV_Dimension_With_pBdij_pBidj_V1_U1( )                              \
00278                                                                                                     \
00279                 *pPointNormalU =( (                                                                 \
00280                         pBdij[5] * (*pPoint11) + pBdij[6] * (*pPoint12) +  pBdij[7] * (*pPoint13) + \
00281                         pBdij[9] * (*pPoint21) + pBdij[10]* (*pPoint22) +  pBdij[11]* (*pPoint23) + \
00282                         pBdij[13]* (*pPoint31) + pBdij[14]* (*pPoint32) +  pBdij[15]* (*pPoint33)   \
00283                         ) -  pWeight_Table[1] * (*pDestination)  ) /pWeight_Table[0];               \
00284                                                                                                     \
00285                 *pPointNormalV = ((                                                                 \
00286                         pBidj[5] * (*pPoint11) + pBidj[6] * (*pPoint12) +  pBidj[7] * (*pPoint13) + \
00287                         pBidj[9] * (*pPoint21) + pBidj[10]* (*pPoint22) +  pBidj[11]* (*pPoint23) + \
00288                         pBidj[13]* (*pPoint31) + pBidj[14]* (*pPoint32) +  pBidj[15]* (*pPoint33)   \
00289                         ) -  pWeight_Table[2] * (*pDestination)  ) /pWeight_Table[0];               \
00290 
00291 /*
00293 #define Compute_NUR_Point_Dimension( PosiX, PosiY, Dimension )              \
00294                 *pDestination = (                                   \
00295                         pBij[0]  * GetWeightedData( ClipX(PosiX+0), ClipY( PosiY+0 ), Dimension ) + pBij[1] * GetWeightedData( ClipX(PosiX+1), ClipY( PosiY+0 ), Dimension ) + pBij[2] * GetWeightedData( ClipX(PosiX+2), ClipY( PosiY+0 ), Dimension ) +  pBij[3] * GetWeightedData( ClipX(PosiX+3), ClipY( PosiY+0 ), Dimension ) +   \
00296                         pBij[4]  * GetWeightedData( ClipX(PosiX+0), ClipY( PosiY+1 ), Dimension ) + pBij[5] * GetWeightedData( ClipX(PosiX+1), ClipY( PosiY+1 ), Dimension ) + pBij[6] * GetWeightedData( ClipX(PosiX+2), ClipY( PosiY+1 ), Dimension ) +  pBij[7] * GetWeightedData( ClipX(PosiX+3), ClipY( PosiY+1 ), Dimension ) +   \
00297                         pBij[8]  * GetWeightedData( ClipX(PosiX+0), ClipY( PosiY+2 ), Dimension ) + pBij[9] * GetWeightedData( ClipX(PosiX+1), ClipY( PosiY+2 ), Dimension ) + pBij[10]* GetWeightedData( ClipX(PosiX+2), ClipY( PosiY+2 ), Dimension ) +  pBij[11]* GetWeightedData( ClipX(PosiX+3), ClipY( PosiY+2 ), Dimension ) +   \
00298                         pBij[12] * GetWeightedData( ClipX(PosiX+0), ClipY( PosiY+3 ), Dimension ) + pBij[13]* GetWeightedData( ClipX(PosiX+1), ClipY( PosiY+3 ), Dimension ) + pBij[14]* GetWeightedData( ClipX(PosiX+2), ClipY( PosiY+3 ), Dimension ) +  pBij[15]* GetWeightedData( ClipX(PosiX+3), ClipY( PosiY+3 ), Dimension )     \
00299                                 ) / Point_Weight;
00300 */
00301 
00302 
00303 
00304 
00305 //* Table Setup macro util
00306 #define Compute_Blending_FunctionBi()                                           \
00307                                                                                 \
00308                     Bi1 = Compute_Bik( u, Posi_X  , mOrder_U, mKnot_Vector_U);  \
00309                     Bi2 = Compute_Bik( u, Posi_X+1, mOrder_U, mKnot_Vector_U);  \
00310                     Bi3 = Compute_Bik( u, Posi_X+2, mOrder_U, mKnot_Vector_U);  \
00311                     Bi4 = Compute_Bik( u, Posi_X+3, mOrder_U, mKnot_Vector_U);  \
00312 
00313 //* Table Setup macro util
00314 #define Compute_Blending_FunctionBj()                                           \
00315                                                                                 \
00316                     Bj1 = Compute_Bik( v, Posi_Y  , mOrder_V, mKnot_Vector_V);  \
00317                     Bj2 = Compute_Bik( v, Posi_Y+1, mOrder_V, mKnot_Vector_V);  \
00318                     Bj3 = Compute_Bik( v, Posi_Y+2, mOrder_V, mKnot_Vector_V);  \
00319                     Bj4 = Compute_Bik( v, Posi_Y+3, mOrder_V, mKnot_Vector_V);  \
00320 
00321 //* Table Setup macro util
00322 #define Compute_Blending_Tangent_FunctiondBi()                                      \
00323                                                                                     \
00324                     dBi1 = Compute_dBik( u, Posi_X  , mOrder_U, mKnot_Vector_U);    \
00325                     dBi2 = Compute_dBik( u, Posi_X+1, mOrder_U, mKnot_Vector_U);    \
00326                     dBi3 = Compute_dBik( u, Posi_X+2, mOrder_U, mKnot_Vector_U);    \
00327                     dBi4 = Compute_dBik( u, Posi_X+3, mOrder_U, mKnot_Vector_U);    \
00328 
00329 //* Table Setup macro util
00330 #define Compute_Blending_Tangent_FunctiondBj()                                      \
00331                                                                                     \
00332                     dBj1 = Compute_dBik( v, Posi_Y  , mOrder_V, mKnot_Vector_V);    \
00333                     dBj2 = Compute_dBik( v, Posi_Y+1, mOrder_V, mKnot_Vector_V);    \
00334                     dBj3 = Compute_dBik( v, Posi_Y+2, mOrder_V, mKnot_Vector_V);    \
00335                     dBj4 = Compute_dBik( v, Posi_Y+3, mOrder_V,mKnot_Vector_V); \
00336 
00337 //* Table Setup macro util
00338 #define Compute_Point_Weight( PosiX, PosiY )                            \
00339                 Point_Weight =                                          \
00340                         pBij[0] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+0 ) ) + pBij[1] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+0 ) ) + pBij[2] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+0 ) ) + pBij[3] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+0 ) ) + \
00341                         pBij[4] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+1 ) ) + pBij[5] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+1 ) ) + pBij[6] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+1 ) ) + pBij[7] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+1 ) ) + \
00342                         pBij[8] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+2 ) ) + pBij[9] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+2 ) ) + pBij[10]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+2 ) ) + pBij[11]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+2 ) ) + \
00343                         pBij[12]* GetWeightData( ClipX(PosiX+0), ClipY( PosiY+3 ) ) + pBij[13]* GetWeightData( ClipX(PosiX+1), ClipY( PosiY+3 ) ) + pBij[14]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+3 ) ) + pBij[15]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+3 ) );  \
00344 
00345 //* Table Setup macro util
00346 #define Compute_Normal_Point_Weight( PosiX, PosiY )                     \
00347                 Point_NormalU_Weight =                                  \
00348                         pBdij[0] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+0 ) ) + pBdij[1] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+0 ) ) + pBdij[2] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+0 ) ) +  pBdij[3] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+0 ) ) +    \
00349                         pBdij[4] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+1 ) ) + pBdij[5] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+1 ) ) + pBdij[6] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+1 ) ) +  pBdij[7] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+1 ) ) +    \
00350                         pBdij[8] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+2 ) ) + pBdij[9] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+2 ) ) + pBdij[10]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+2 ) ) +  pBdij[11]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+2 ) ) +    \
00351                         pBdij[12]* GetWeightData( ClipX(PosiX+0), ClipY( PosiY+3 ) ) + pBdij[13]* GetWeightData( ClipX(PosiX+1), ClipY( PosiY+3 ) ) + pBdij[14]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+3 ) ) +  pBdij[15]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+3 ) );     \
00352                                                                                                                                                                                                                                                                             \
00353                 Point_NormalV_Weight =                                  \
00354                         pBidj[0] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+0 ) ) + pBidj[1] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+0 ) ) + pBidj[2] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+0 ) ) +  pBidj[3] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+0 ) ) +    \
00355                         pBidj[4] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+1 ) ) + pBidj[5] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+1 ) ) + pBidj[6] * GetWeightData( ClipX(PosiX+2), ClipY( PosiY+1 ) ) +  pBidj[7] * GetWeightData( ClipX(PosiX+3), ClipY( PosiY+1 ) ) +    \
00356                         pBidj[8] * GetWeightData( ClipX(PosiX+0), ClipY( PosiY+2 ) ) + pBidj[9] * GetWeightData( ClipX(PosiX+1), ClipY( PosiY+2 ) ) + pBidj[10]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+2 ) ) +  pBidj[11]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+2 ) ) +    \
00357                         pBidj[12]* GetWeightData( ClipX(PosiX+0), ClipY( PosiY+3 ) ) + pBidj[13]* GetWeightData( ClipX(PosiX+1), ClipY( PosiY+3 ) ) + pBidj[14]* GetWeightData( ClipX(PosiX+2), ClipY( PosiY+3 ) ) +  pBidj[15]* GetWeightData( ClipX(PosiX+3), ClipY( PosiY+3 ) );     \
00358 
00359 #include <fbxfilesdk_nsend.h>
00360 
00361 #endif
00362 
00363