[BACK]Return to hermite.hh CVS log [TXT][DIR] Up to [Development] / performer / src / pyper

File: [Development] / performer / src / pyper / hermite.hh (download)

Revision 1.1, Mon May 21 21:40:00 2001 UTC (16 years, 4 months ago) by flynnt
Branch: MAIN
CVS Tags: HEAD

Doing some cleanup and adding the pfgtk example and the python wrapper for
Performer (pyper).

/*
 * $Source: /oss/CVS/cvs/performer/src/pyper/hermite.hh,v $
 * $Revision: 1.1 $
 * $Author: flynnt $
 * $Date: 2001/05/21 21:40:00 $
 * Purpose:
 *
 * (c) 1996, 1997, 1998 by Polar Pyramid.
 */


#if !defined(HERMITE_HH)
#define HERMITE_HH

#define mulher(MAT1, MAT2) \
  MAT2[0][0] = 2.0*MAT1[0][0] - 2.0*MAT1[1][0] + MAT1[2][0] + MAT1[3][0]; \
  MAT2[1][0] = -3.0*MAT1[0][0] + 3.0*MAT1[1][0] - 2.0*MAT1[2][0] - MAT1[3][0]; \
  MAT2[2][0] = MAT1[2][0] ; \
  MAT2[3][0] = MAT1[0][0] ; \
  MAT2[0][1] = 2.0*MAT1[0][1] - 2.0*MAT1[1][1] + MAT1[2][1] + MAT1[3][1]; \
  MAT2[1][1] = -3.0*MAT1[0][1] + 3.0*MAT1[1][1] - 2.0*MAT1[2][1] - MAT1[3][1]; \
  MAT2[2][1] = MAT1[2][1] ; \
  MAT2[3][1] = MAT1[0][1] ; \
  MAT2[0][2] = 2.0*MAT1[0][2] - 2.0*MAT1[1][2] + MAT1[2][2] + MAT1[3][2]; \
  MAT2[1][2] = -3.0*MAT1[0][2] + 3.0*MAT1[1][2] - 2.0*MAT1[2][2] - MAT1[3][2]; \
  MAT2[2][2] = MAT1[2][2] ; \
  MAT2[3][2] = MAT1[0][2] ;


inline pfVec3 cubpos(float m[4][3], float t)
{
  float f1 = t*t, f2 = t*f1;
  return pfVec3
  (
    f2*m[0][0]+f1*m[1][0]+t*m[2][0]+m[3][0],
    f2*m[0][1]+f1*m[1][1]+t*m[2][1]+m[3][1],
    f2*m[0][2]+f1*m[1][2]+t*m[2][2]+m[3][2]
  );
}


inline pfVec3 cubtan(float m[4][3], float t)
{
  float f1 = 3.0f*t*t, f2 = 2.0f*t;
  return pfVec3
  ( 
    f1*m[0][0]+f2*m[1][0]+m[2][0],
    f1*m[0][1]+f2*m[1][1]+m[2][1],
    f1*m[0][2]+f2*m[1][2]+m[2][2]
  );
}

#endif