300 lines
12 KiB
C
300 lines
12 KiB
C
/* -----------------------------------------------------------------------------
|
|
|
|
PicoModel Library
|
|
|
|
Copyright (c) 2002, Randy Reddig & seaw0lf
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
are permitted provided that the following conditions are met:
|
|
|
|
Redistributions of source code must retain the above copyright notice, this list
|
|
of conditions and the following disclaimer.
|
|
|
|
Redistributions in binary form must reproduce the above copyright notice, this
|
|
list of conditions and the following disclaimer in the documentation and/or
|
|
other materials provided with the distribution.
|
|
|
|
Neither the names of the copyright holders nor the names of its contributors may
|
|
be used to endorse or promote products derived from this software without
|
|
specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
----------------------------------------------------------------------------- */
|
|
|
|
#if (!defined MDC_NORMAL_TABLE_INCLUDED)
|
|
#define MDC_NORMAL_TABLE_INCLUDED
|
|
|
|
/* mdc decoding normal table */
|
|
const float mdcNormals[ 256 ][ 3 ] =
|
|
{
|
|
{ 1.000000f, 0.000000f, 0.000000f },
|
|
{ 0.980785f, 0.195090f, 0.000000f },
|
|
{ 0.923880f, 0.382683f, 0.000000f },
|
|
{ 0.831470f, 0.555570f, 0.000000f },
|
|
{ 0.707107f, 0.707107f, 0.000000f },
|
|
{ 0.555570f, 0.831470f, 0.000000f },
|
|
{ 0.382683f, 0.923880f, 0.000000f },
|
|
{ 0.195090f, 0.980785f, 0.000000f },
|
|
{ -0.000000f, 1.000000f, 0.000000f },
|
|
{ -0.195090f, 0.980785f, 0.000000f },
|
|
{ -0.382683f, 0.923880f, 0.000000f },
|
|
{ -0.555570f, 0.831470f, 0.000000f },
|
|
{ -0.707107f, 0.707107f, 0.000000f },
|
|
{ -0.831470f, 0.555570f, 0.000000f },
|
|
{ -0.923880f, 0.382683f, 0.000000f },
|
|
{ -0.980785f, 0.195090f, 0.000000f },
|
|
{ -1.000000f, -0.000000f, 0.000000f },
|
|
{ -0.980785f, -0.195090f, 0.000000f },
|
|
{ -0.923880f, -0.382683f, 0.000000f },
|
|
{ -0.831470f, -0.555570f, 0.000000f },
|
|
{ -0.707107f, -0.707107f, 0.000000f },
|
|
{ -0.555570f, -0.831469f, 0.000000f },
|
|
{ -0.382684f, -0.923880f, 0.000000f },
|
|
{ -0.195090f, -0.980785f, 0.000000f },
|
|
{ 0.000000f, -1.000000f, 0.000000f },
|
|
{ 0.195090f, -0.980785f, 0.000000f },
|
|
{ 0.382684f, -0.923879f, 0.000000f },
|
|
{ 0.555570f, -0.831470f, 0.000000f },
|
|
{ 0.707107f, -0.707107f, 0.000000f },
|
|
{ 0.831470f, -0.555570f, 0.000000f },
|
|
{ 0.923880f, -0.382683f, 0.000000f },
|
|
{ 0.980785f, -0.195090f, 0.000000f },
|
|
{ 0.980785f, 0.000000f, -0.195090f },
|
|
{ 0.956195f, 0.218245f, -0.195090f },
|
|
{ 0.883657f, 0.425547f, -0.195090f },
|
|
{ 0.766809f, 0.611510f, -0.195090f },
|
|
{ 0.611510f, 0.766809f, -0.195090f },
|
|
{ 0.425547f, 0.883657f, -0.195090f },
|
|
{ 0.218245f, 0.956195f, -0.195090f },
|
|
{ -0.000000f, 0.980785f, -0.195090f },
|
|
{ -0.218245f, 0.956195f, -0.195090f },
|
|
{ -0.425547f, 0.883657f, -0.195090f },
|
|
{ -0.611510f, 0.766809f, -0.195090f },
|
|
{ -0.766809f, 0.611510f, -0.195090f },
|
|
{ -0.883657f, 0.425547f, -0.195090f },
|
|
{ -0.956195f, 0.218245f, -0.195090f },
|
|
{ -0.980785f, -0.000000f, -0.195090f },
|
|
{ -0.956195f, -0.218245f, -0.195090f },
|
|
{ -0.883657f, -0.425547f, -0.195090f },
|
|
{ -0.766809f, -0.611510f, -0.195090f },
|
|
{ -0.611510f, -0.766809f, -0.195090f },
|
|
{ -0.425547f, -0.883657f, -0.195090f },
|
|
{ -0.218245f, -0.956195f, -0.195090f },
|
|
{ 0.000000f, -0.980785f, -0.195090f },
|
|
{ 0.218245f, -0.956195f, -0.195090f },
|
|
{ 0.425547f, -0.883657f, -0.195090f },
|
|
{ 0.611510f, -0.766809f, -0.195090f },
|
|
{ 0.766809f, -0.611510f, -0.195090f },
|
|
{ 0.883657f, -0.425547f, -0.195090f },
|
|
{ 0.956195f, -0.218245f, -0.195090f },
|
|
{ 0.923880f, 0.000000f, -0.382683f },
|
|
{ 0.892399f, 0.239118f, -0.382683f },
|
|
{ 0.800103f, 0.461940f, -0.382683f },
|
|
{ 0.653281f, 0.653281f, -0.382683f },
|
|
{ 0.461940f, 0.800103f, -0.382683f },
|
|
{ 0.239118f, 0.892399f, -0.382683f },
|
|
{ -0.000000f, 0.923880f, -0.382683f },
|
|
{ -0.239118f, 0.892399f, -0.382683f },
|
|
{ -0.461940f, 0.800103f, -0.382683f },
|
|
{ -0.653281f, 0.653281f, -0.382683f },
|
|
{ -0.800103f, 0.461940f, -0.382683f },
|
|
{ -0.892399f, 0.239118f, -0.382683f },
|
|
{ -0.923880f, -0.000000f, -0.382683f },
|
|
{ -0.892399f, -0.239118f, -0.382683f },
|
|
{ -0.800103f, -0.461940f, -0.382683f },
|
|
{ -0.653282f, -0.653281f, -0.382683f },
|
|
{ -0.461940f, -0.800103f, -0.382683f },
|
|
{ -0.239118f, -0.892399f, -0.382683f },
|
|
{ 0.000000f, -0.923880f, -0.382683f },
|
|
{ 0.239118f, -0.892399f, -0.382683f },
|
|
{ 0.461940f, -0.800103f, -0.382683f },
|
|
{ 0.653281f, -0.653282f, -0.382683f },
|
|
{ 0.800103f, -0.461940f, -0.382683f },
|
|
{ 0.892399f, -0.239117f, -0.382683f },
|
|
{ 0.831470f, 0.000000f, -0.555570f },
|
|
{ 0.790775f, 0.256938f, -0.555570f },
|
|
{ 0.672673f, 0.488726f, -0.555570f },
|
|
{ 0.488726f, 0.672673f, -0.555570f },
|
|
{ 0.256938f, 0.790775f, -0.555570f },
|
|
{ -0.000000f, 0.831470f, -0.555570f },
|
|
{ -0.256938f, 0.790775f, -0.555570f },
|
|
{ -0.488726f, 0.672673f, -0.555570f },
|
|
{ -0.672673f, 0.488726f, -0.555570f },
|
|
{ -0.790775f, 0.256938f, -0.555570f },
|
|
{ -0.831470f, -0.000000f, -0.555570f },
|
|
{ -0.790775f, -0.256938f, -0.555570f },
|
|
{ -0.672673f, -0.488726f, -0.555570f },
|
|
{ -0.488725f, -0.672673f, -0.555570f },
|
|
{ -0.256938f, -0.790775f, -0.555570f },
|
|
{ 0.000000f, -0.831470f, -0.555570f },
|
|
{ 0.256938f, -0.790775f, -0.555570f },
|
|
{ 0.488725f, -0.672673f, -0.555570f },
|
|
{ 0.672673f, -0.488726f, -0.555570f },
|
|
{ 0.790775f, -0.256938f, -0.555570f },
|
|
{ 0.707107f, 0.000000f, -0.707107f },
|
|
{ 0.653281f, 0.270598f, -0.707107f },
|
|
{ 0.500000f, 0.500000f, -0.707107f },
|
|
{ 0.270598f, 0.653281f, -0.707107f },
|
|
{ -0.000000f, 0.707107f, -0.707107f },
|
|
{ -0.270598f, 0.653282f, -0.707107f },
|
|
{ -0.500000f, 0.500000f, -0.707107f },
|
|
{ -0.653281f, 0.270598f, -0.707107f },
|
|
{ -0.707107f, -0.000000f, -0.707107f },
|
|
{ -0.653281f, -0.270598f, -0.707107f },
|
|
{ -0.500000f, -0.500000f, -0.707107f },
|
|
{ -0.270598f, -0.653281f, -0.707107f },
|
|
{ 0.000000f, -0.707107f, -0.707107f },
|
|
{ 0.270598f, -0.653281f, -0.707107f },
|
|
{ 0.500000f, -0.500000f, -0.707107f },
|
|
{ 0.653282f, -0.270598f, -0.707107f },
|
|
{ 0.555570f, 0.000000f, -0.831470f },
|
|
{ 0.481138f, 0.277785f, -0.831470f },
|
|
{ 0.277785f, 0.481138f, -0.831470f },
|
|
{ -0.000000f, 0.555570f, -0.831470f },
|
|
{ -0.277785f, 0.481138f, -0.831470f },
|
|
{ -0.481138f, 0.277785f, -0.831470f },
|
|
{ -0.555570f, -0.000000f, -0.831470f },
|
|
{ -0.481138f, -0.277785f, -0.831470f },
|
|
{ -0.277785f, -0.481138f, -0.831470f },
|
|
{ 0.000000f, -0.555570f, -0.831470f },
|
|
{ 0.277785f, -0.481138f, -0.831470f },
|
|
{ 0.481138f, -0.277785f, -0.831470f },
|
|
{ 0.382683f, 0.000000f, -0.923880f },
|
|
{ 0.270598f, 0.270598f, -0.923880f },
|
|
{ -0.000000f, 0.382683f, -0.923880f },
|
|
{ -0.270598f, 0.270598f, -0.923880f },
|
|
{ -0.382683f, -0.000000f, -0.923880f },
|
|
{ -0.270598f, -0.270598f, -0.923880f },
|
|
{ 0.000000f, -0.382683f, -0.923880f },
|
|
{ 0.270598f, -0.270598f, -0.923880f },
|
|
{ 0.195090f, 0.000000f, -0.980785f },
|
|
{ -0.000000f, 0.195090f, -0.980785f },
|
|
{ -0.195090f, -0.000000f, -0.980785f },
|
|
{ 0.000000f, -0.195090f, -0.980785f },
|
|
{ 0.980785f, 0.000000f, 0.195090f },
|
|
{ 0.956195f, 0.218245f, 0.195090f },
|
|
{ 0.883657f, 0.425547f, 0.195090f },
|
|
{ 0.766809f, 0.611510f, 0.195090f },
|
|
{ 0.611510f, 0.766809f, 0.195090f },
|
|
{ 0.425547f, 0.883657f, 0.195090f },
|
|
{ 0.218245f, 0.956195f, 0.195090f },
|
|
{ -0.000000f, 0.980785f, 0.195090f },
|
|
{ -0.218245f, 0.956195f, 0.195090f },
|
|
{ -0.425547f, 0.883657f, 0.195090f },
|
|
{ -0.611510f, 0.766809f, 0.195090f },
|
|
{ -0.766809f, 0.611510f, 0.195090f },
|
|
{ -0.883657f, 0.425547f, 0.195090f },
|
|
{ -0.956195f, 0.218245f, 0.195090f },
|
|
{ -0.980785f, -0.000000f, 0.195090f },
|
|
{ -0.956195f, -0.218245f, 0.195090f },
|
|
{ -0.883657f, -0.425547f, 0.195090f },
|
|
{ -0.766809f, -0.611510f, 0.195090f },
|
|
{ -0.611510f, -0.766809f, 0.195090f },
|
|
{ -0.425547f, -0.883657f, 0.195090f },
|
|
{ -0.218245f, -0.956195f, 0.195090f },
|
|
{ 0.000000f, -0.980785f, 0.195090f },
|
|
{ 0.218245f, -0.956195f, 0.195090f },
|
|
{ 0.425547f, -0.883657f, 0.195090f },
|
|
{ 0.611510f, -0.766809f, 0.195090f },
|
|
{ 0.766809f, -0.611510f, 0.195090f },
|
|
{ 0.883657f, -0.425547f, 0.195090f },
|
|
{ 0.956195f, -0.218245f, 0.195090f },
|
|
{ 0.923880f, 0.000000f, 0.382683f },
|
|
{ 0.892399f, 0.239118f, 0.382683f },
|
|
{ 0.800103f, 0.461940f, 0.382683f },
|
|
{ 0.653281f, 0.653281f, 0.382683f },
|
|
{ 0.461940f, 0.800103f, 0.382683f },
|
|
{ 0.239118f, 0.892399f, 0.382683f },
|
|
{ -0.000000f, 0.923880f, 0.382683f },
|
|
{ -0.239118f, 0.892399f, 0.382683f },
|
|
{ -0.461940f, 0.800103f, 0.382683f },
|
|
{ -0.653281f, 0.653281f, 0.382683f },
|
|
{ -0.800103f, 0.461940f, 0.382683f },
|
|
{ -0.892399f, 0.239118f, 0.382683f },
|
|
{ -0.923880f, -0.000000f, 0.382683f },
|
|
{ -0.892399f, -0.239118f, 0.382683f },
|
|
{ -0.800103f, -0.461940f, 0.382683f },
|
|
{ -0.653282f, -0.653281f, 0.382683f },
|
|
{ -0.461940f, -0.800103f, 0.382683f },
|
|
{ -0.239118f, -0.892399f, 0.382683f },
|
|
{ 0.000000f, -0.923880f, 0.382683f },
|
|
{ 0.239118f, -0.892399f, 0.382683f },
|
|
{ 0.461940f, -0.800103f, 0.382683f },
|
|
{ 0.653281f, -0.653282f, 0.382683f },
|
|
{ 0.800103f, -0.461940f, 0.382683f },
|
|
{ 0.892399f, -0.239117f, 0.382683f },
|
|
{ 0.831470f, 0.000000f, 0.555570f },
|
|
{ 0.790775f, 0.256938f, 0.555570f },
|
|
{ 0.672673f, 0.488726f, 0.555570f },
|
|
{ 0.488726f, 0.672673f, 0.555570f },
|
|
{ 0.256938f, 0.790775f, 0.555570f },
|
|
{ -0.000000f, 0.831470f, 0.555570f },
|
|
{ -0.256938f, 0.790775f, 0.555570f },
|
|
{ -0.488726f, 0.672673f, 0.555570f },
|
|
{ -0.672673f, 0.488726f, 0.555570f },
|
|
{ -0.790775f, 0.256938f, 0.555570f },
|
|
{ -0.831470f, -0.000000f, 0.555570f },
|
|
{ -0.790775f, -0.256938f, 0.555570f },
|
|
{ -0.672673f, -0.488726f, 0.555570f },
|
|
{ -0.488725f, -0.672673f, 0.555570f },
|
|
{ -0.256938f, -0.790775f, 0.555570f },
|
|
{ 0.000000f, -0.831470f, 0.555570f },
|
|
{ 0.256938f, -0.790775f, 0.555570f },
|
|
{ 0.488725f, -0.672673f, 0.555570f },
|
|
{ 0.672673f, -0.488726f, 0.555570f },
|
|
{ 0.790775f, -0.256938f, 0.555570f },
|
|
{ 0.707107f, 0.000000f, 0.707107f },
|
|
{ 0.653281f, 0.270598f, 0.707107f },
|
|
{ 0.500000f, 0.500000f, 0.707107f },
|
|
{ 0.270598f, 0.653281f, 0.707107f },
|
|
{ -0.000000f, 0.707107f, 0.707107f },
|
|
{ -0.270598f, 0.653282f, 0.707107f },
|
|
{ -0.500000f, 0.500000f, 0.707107f },
|
|
{ -0.653281f, 0.270598f, 0.707107f },
|
|
{ -0.707107f, -0.000000f, 0.707107f },
|
|
{ -0.653281f, -0.270598f, 0.707107f },
|
|
{ -0.500000f, -0.500000f, 0.707107f },
|
|
{ -0.270598f, -0.653281f, 0.707107f },
|
|
{ 0.000000f, -0.707107f, 0.707107f },
|
|
{ 0.270598f, -0.653281f, 0.707107f },
|
|
{ 0.500000f, -0.500000f, 0.707107f },
|
|
{ 0.653282f, -0.270598f, 0.707107f },
|
|
{ 0.555570f, 0.000000f, 0.831470f },
|
|
{ 0.481138f, 0.277785f, 0.831470f },
|
|
{ 0.277785f, 0.481138f, 0.831470f },
|
|
{ -0.000000f, 0.555570f, 0.831470f },
|
|
{ -0.277785f, 0.481138f, 0.831470f },
|
|
{ -0.481138f, 0.277785f, 0.831470f },
|
|
{ -0.555570f, -0.000000f, 0.831470f },
|
|
{ -0.481138f, -0.277785f, 0.831470f },
|
|
{ -0.277785f, -0.481138f, 0.831470f },
|
|
{ 0.000000f, -0.555570f, 0.831470f },
|
|
{ 0.277785f, -0.481138f, 0.831470f },
|
|
{ 0.481138f, -0.277785f, 0.831470f },
|
|
{ 0.382683f, 0.000000f, 0.923880f },
|
|
{ 0.270598f, 0.270598f, 0.923880f },
|
|
{ -0.000000f, 0.382683f, 0.923880f },
|
|
{ -0.270598f, 0.270598f, 0.923880f },
|
|
{ -0.382683f, -0.000000f, 0.923880f },
|
|
{ -0.270598f, -0.270598f, 0.923880f },
|
|
{ 0.000000f, -0.382683f, 0.923880f },
|
|
{ 0.270598f, -0.270598f, 0.923880f },
|
|
{ 0.195090f, 0.000000f, 0.980785f },
|
|
{ -0.000000f, 0.195090f, 0.980785f },
|
|
{ -0.195090f, -0.000000f, 0.980785f },
|
|
{ 0.000000f, -0.195090f, 0.980785f }
|
|
};
|
|
|
|
#endif // !! MDC_NORMAL_TABLE_INCLUDED
|