Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

VNVector.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 
00015 #include "nvsgcommon.h"
00016 
00017 #include  "nvmath/nvmath.h"
00018 #include  "nvmath/Vec3f.h"
00019 
00020 namespace nvsg
00021 {  
00022 
00024 
00026   class VNVector
00027   {
00028     public:
00029       std::vector<nvmath::Vec3f> normals;   
00030       std::vector<nvmath::Vec3f> vertices;  
00031   };
00032 
00034 
00038   inline VNVector lerp( float alpha           
00039                       , const VNVector &v0    
00040                       , const VNVector &v1    
00041                       )
00042   {
00043     VNVector  vnv;
00044 
00045     __ASSERT( v0.vertices.size() == v1.vertices.size() );
00046     vnv.vertices.resize( v0.vertices.size() );
00047     for ( size_t i=0 ; i<v0.vertices.size() ; i++ )
00048     {
00049       vnv.vertices[i] = nvmath::lerp( alpha, v0.vertices[i], v1.vertices[i] );
00050     }
00051 
00052     __ASSERT( v0.normals.size()  == v1.normals.size() );
00053     vnv.normals.resize( v0.normals.size() );
00054     for ( size_t i=0 ; i<v0.normals.size() ; i++ )
00055     {
00056       vnv.normals[i] = normalize( lerp( alpha, v0.normals[i], v1.normals[i] ) );
00057     }
00058 
00059     return( vnv );
00060   }
00061 
00062 }

Generated on Tue Mar 1 13:19:20 2005 for NVSGSDK by NVIDIA