|
|
/*============================================================================
* * Copyright (C) 1999-2000 Microsoft Corporation. All Rights Reserved. * * File: bspline.hpp * Content: Declarations for B-Splines * ****************************************************************************/
#ifndef _BSPLINE_HPP
#define _BSPLINE_HPP
class RDBSpline { public: RDBSpline(DWORD dwWidth, DWORD dwHeight, DWORD dwOrderU, DWORD dwOrderV) { m_dwWidth = dwWidth; m_dwHeight = dwHeight; m_dwOrderU = dwOrderU; m_dwOrderV = dwOrderV; }
void Sample(DWORD dwDataType, double u, double v, const BYTE *B, DWORD dwStride, DWORD dwPitch, BYTE *Q) const; void SampleNormal(DWORD dwDataType, double u, double v, const BYTE *pRow, DWORD dwStride, DWORD dwPitch, BYTE *Q) const; void SampleDegenerateNormal(DWORD dwDataType, const BYTE *pRow, DWORD dwStride, DWORD dwPitch, BYTE *Q) const;
double TexCoordU(double u) const { return (u - double(m_dwOrderU - 1)) / double(m_dwWidth - (m_dwOrderU - 1)); } double TexCoordV(double v) const { return (v - double(m_dwOrderV - 1)) / double(m_dwHeight - (m_dwOrderV - 1)); }
protected: virtual double Basis(unsigned i, unsigned k, double s) const; virtual double BasisPrime(unsigned i, unsigned k, double s) const;
private: DWORD m_dwWidth, m_dwHeight, m_dwOrderU, m_dwOrderV;
double Knot(unsigned i) const { return double(i); } };
#endif // _BSPLINE_HPP
|