00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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 }