IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 3, 2005, 11:58:53 AM (22 years ago)
Author:
desonia
Message:

made psImageRotate take radian rotation value instead of degrees.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/image/psImageManip.c

    r2835 r2860  
    1010 *  @author Ross Harman, MHPCC
    1111 *
    12  *  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2004-12-28 01:42:28 $
     12 *  @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2005-01-03 21:58:53 $
    1414 *
    1515 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    2525#include "psMemory.h"
    2626#include "psImageExtraction.h"
    27 
     27#include "psConstants.h"
    2828#include "psImageErrors.h"
    2929
     
    675675        return NULL;
    676676    }
    677     // put the angle in the range of 0...360.
    678     angle = angle - 360.0f * floor(angle / 360.0f);
    679 
    680     if (fabsf(angle - 90.0f) < FLT_EPSILON) {
     677    // put the angle in the range of 0...2PI.
     678    angle = angle - (2.0*PS_PI) * floor(angle / (2.0*PS_PI));
     679
     680    if (fabsf(angle - PS_PI_2) < FLT_EPSILON) {
    681681        // perform 1/4 rotate counter-clockwise
    682682        psS32 numRows = in->numCols;
     
    702702            PSIMAGE_ROTATE_LEFT_90(U8);
    703703            PSIMAGE_ROTATE_LEFT_90(U16);
    704             //            PSIMAGE_ROTATE_LEFT_90(U32);      Not a requirement
    705             //            PSIMAGE_ROTATE_LEFT_90(U64);      Not a requirement
     704            PSIMAGE_ROTATE_LEFT_90(U32);    //  Not a requirement
     705            PSIMAGE_ROTATE_LEFT_90(U64);    //  Not a requirement
    706706            PSIMAGE_ROTATE_LEFT_90(S8);
    707707            PSIMAGE_ROTATE_LEFT_90(S16);
    708             //            PSIMAGE_ROTATE_LEFT_90(S32);      Not a requirement
    709             //            PSIMAGE_ROTATE_LEFT_90(S64);      Not a requirement
     708            PSIMAGE_ROTATE_LEFT_90(S32);    //  Not a requirement
     709            PSIMAGE_ROTATE_LEFT_90(S64);    //  Not a requirement
    710710            PSIMAGE_ROTATE_LEFT_90(F32);
    711711            PSIMAGE_ROTATE_LEFT_90(F64);
     
    723723            }
    724724        }
    725     } else if (fabsf(angle - 180.0f) < FLT_EPSILON) {
     725    } else if (fabsf(angle - PS_PI) < FLT_EPSILON) {
    726726        // perform 1/2 rotate
    727727        psS32 numRows = in->numRows;
     
    748748            PSIMAGE_ROTATE_180_CASE(U8);
    749749            PSIMAGE_ROTATE_180_CASE(U16);
    750             //            PSIMAGE_ROTATE_180_CASE(U32);    Not a requirement
    751             //            PSIMAGE_ROTATE_180_CASE(U64);    Not a requirement
     750            PSIMAGE_ROTATE_180_CASE(U32);    // Not a requirement
     751            PSIMAGE_ROTATE_180_CASE(U64);    // Not a requirement
    752752            PSIMAGE_ROTATE_180_CASE(S8);
    753753            PSIMAGE_ROTATE_180_CASE(S16);
    754             //            PSIMAGE_ROTATE_180_CASE(S32);    Not a requirement
    755             //            PSIMAGE_ROTATE_180_CASE(S64);    Not a requirement
     754            PSIMAGE_ROTATE_180_CASE(S32);    // Not a requirement
     755            PSIMAGE_ROTATE_180_CASE(S64);    // Not a requirement
    756756            PSIMAGE_ROTATE_180_CASE(F32);
    757757            PSIMAGE_ROTATE_180_CASE(F64);
     
    769769            }
    770770        }
    771     } else if (fabsf(angle - 270.0f) < FLT_EPSILON) {
     771    } else if (fabsf(angle - (PS_PI+PS_PI_2)) < FLT_EPSILON) {
    772772        // perform 1/4 rotate clockwise
    773773        psS32 numRows = in->numCols;
     
    793793            PSIMAGE_ROTATE_RIGHT_90(U8);
    794794            PSIMAGE_ROTATE_RIGHT_90(U16);
    795             //            PSIMAGE_ROTATE_RIGHT_90(U32);    Not a requirement
    796             //            PSIMAGE_ROTATE_RIGHT_90(U64);    Not a requirement
     795            PSIMAGE_ROTATE_RIGHT_90(U32);     // Not a requirement
     796            PSIMAGE_ROTATE_RIGHT_90(U64);     // Not a requirement
    797797            PSIMAGE_ROTATE_RIGHT_90(S8);
    798798            PSIMAGE_ROTATE_RIGHT_90(S16);
    799             //            PSIMAGE_ROTATE_RIGHT_90(S32);    Not a requirement
    800             //            PSIMAGE_ROTATE_RIGHT_90(S64);    Not a requirement
     799            PSIMAGE_ROTATE_RIGHT_90(S32);     // Not a requirement
     800            PSIMAGE_ROTATE_RIGHT_90(S64);     // Not a requirement
    801801            PSIMAGE_ROTATE_RIGHT_90(F32);
    802802            PSIMAGE_ROTATE_RIGHT_90(F64);
     
    822822        float centerX = (float)(numCols) / 2.0f;
    823823        float centerY = (float)(numRows) / 2.0f;
    824         float t = angle * (3.14159265358f / 180.0f);
    825         double cosT = cosf(t);
    826         double sinT = sinf(t);
     824        double cosT = cosf(angle);
     825        double sinT = sinf(angle);
    827826
    828827        // calculate the corners of the rotated image so we know the proper output image size.
     
    897896            PSIMAGE_ROTATE_ARBITRARY_LOOP(U16,MODE); \
    898897            break; \
    899             /*        case PS_TYPE_U32:    Not a requirement */ \
    900             /*            PSIMAGE_ROTATE_ARBITRARY_LOOP(U32,MODE); */ \
    901             /*            break; */ \
    902             /*        case PS_TYPE_U64:    Not a requirement */ \
    903             /*            PSIMAGE_ROTATE_ARBITRARY_LOOP(U64,MODE); */ \
    904             /*            break; */ \
     898        case PS_TYPE_U32:   /* Not a requirement */ \
     899            PSIMAGE_ROTATE_ARBITRARY_LOOP(U32,MODE); \
     900            break; \
     901        case PS_TYPE_U64:   /* Not a requirement */ \
     902            PSIMAGE_ROTATE_ARBITRARY_LOOP(U64,MODE); \
     903            break; \
    905904        case PS_TYPE_S8: \
    906905            PSIMAGE_ROTATE_ARBITRARY_LOOP(S8,MODE); \
     
    909908            PSIMAGE_ROTATE_ARBITRARY_LOOP(S16,MODE); \
    910909            break; \
    911             /*        case PS_TYPE_S32:    Not a requirement */ \
    912             /*            PSIMAGE_ROTATE_ARBITRARY_LOOP(S32,MODE); */ \
    913             /*            break; */ \
    914             /*        case PS_TYPE_S64:    Not a requirement */ \
    915             /*            PSIMAGE_ROTATE_ARBITRARY_LOOP(S64,MODE); */ \
    916             /*            break; */ \
     910        case PS_TYPE_S32:   /* Not a requirement */ \
     911            PSIMAGE_ROTATE_ARBITRARY_LOOP(S32,MODE); \
     912            break; \
     913        case PS_TYPE_S64:   /* Not a requirement */ \
     914            PSIMAGE_ROTATE_ARBITRARY_LOOP(S64,MODE); \
     915            break; \
    917916        case PS_TYPE_F32: \
    918917            PSIMAGE_ROTATE_ARBITRARY_LOOP(F32,MODE); \
Note: See TracChangeset for help on using the changeset viewer.