|
|
/*
File: QD3DMath.h Contains: Math & matrix routines and definitions. Version: Technology: Quickdraw 3D 1.6 Release: QuickTime 7.3 Copyright: (c) 2007 (c) 1995-1998 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/
*/ #ifndef __QD3DMATH__
#define __QD3DMATH__
#ifndef __QD3D__
#include <QD3D.h>
#endif
#include <float.h>
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" { #endif
#if PRAGMA_IMPORT
#pragma import on
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=power
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
#if PRAGMA_ENUM_ALWAYSINT
#if defined(__fourbyteints__) && !__fourbyteints__
#define __QD3DMATH__RESTORE_TWOBYTEINTS
#pragma fourbyteints on
#endif
#pragma enumsalwaysint on
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=int
#elif PRAGMA_ENUM_PACK
#if __option(pack_enums)
#define __QD3DMATH__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
#endif
/******************************************************************************
** ** ** Constant Definitions ** ** ** *****************************************************************************/ /*
* Real zero definition */
#ifdef FLT_EPSILON
#define kQ3RealZero (FLT_EPSILON)
#else
#define kQ3RealZero ((float)1.19209290e-07)
#endif
#ifdef FLT_MAX
#define kQ3MaxFloat (FLT_MAX)
#else
#define kQ3MaxFloat ((float)3.40282347e+38)
#endif
/*
* Values of PI */ #define kQ3Pi ((float)3.1415926535898)
#define kQ32Pi ((float)(2.0 * 3.1415926535898))
#define kQ3PiOver2 ((float)(3.1415926535898 / 2.0))
#define kQ33PiOver2 ((float)(3.0 * 3.1415926535898 / 2.0))
/******************************************************************************
** ** ** Miscellaneous Functions ** ** ** *****************************************************************************/ #define Q3Math_DegreesToRadians(x) ((float)((x) * kQ3Pi / 180.0f))
#define Q3Math_RadiansToDegrees(x) ((float)((x) * 180.0f / kQ3Pi))
#define Q3Math_Min(x,y) ((x) <= (y) ? (x) : (y))
#define Q3Math_Max(x,y) ((x) >= (y) ? (x) : (y))
/******************************************************************************
** ** ** Point and Vector Creation ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON
/*
* Q3Point2D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_Set( TQ3Point2D * point2D, float x, float y);
/*
* Q3Param2D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_Set( TQ3Param2D * param2D, float u, float v);
/*
* Q3Point3D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_Set( TQ3Point3D * point3D, float x, float y, float z);
/*
* Q3RationalPoint3D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint3D * ) Q3RationalPoint3D_Set( TQ3RationalPoint3D * point3D, float x, float y, float w);
/*
* Q3RationalPoint4D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint4D * ) Q3RationalPoint4D_Set( TQ3RationalPoint4D * point4D, float x, float y, float z, float w);
/*
* Q3Vector2D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Set( TQ3Vector2D * vector2D, float x, float y);
/*
* Q3Vector3D_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Set( TQ3Vector3D * vector3D, float x, float y, float z);
/*
* Q3PolarPoint_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3PolarPoint * ) Q3PolarPoint_Set( TQ3PolarPoint * polarPoint, float r, float theta);
/*
* Q3SphericalPoint_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3SphericalPoint * ) Q3SphericalPoint_Set( TQ3SphericalPoint * sphericalPoint, float rho, float theta, float phi);
/******************************************************************************
** ** ** Point and Vector Dimension Conversion ** ** ** *****************************************************************************/ /*
* Q3Point2D_To3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point2D_To3D( const TQ3Point2D * point2D, TQ3Point3D * result);
/*
* Q3RationalPoint3D_To2D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3RationalPoint3D_To2D( const TQ3RationalPoint3D * point3D, TQ3Point2D * result);
/*
* Q3Point3D_To4D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint4D * ) Q3Point3D_To4D( const TQ3Point3D * point3D, TQ3RationalPoint4D * result);
/*
* Q3RationalPoint4D_To3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3RationalPoint4D_To3D( const TQ3RationalPoint4D * point4D, TQ3Point3D * result);
/*
* Q3Vector2D_To3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector2D_To3D( const TQ3Vector2D * vector2D, TQ3Vector3D * result);
/*
* Q3Vector3D_To2D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector3D_To2D( const TQ3Vector3D * vector3D, TQ3Vector2D * result);
/******************************************************************************
** ** ** Point Subtraction ** ** ** *****************************************************************************/ /*
* Q3Point2D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Point2D_Subtract( const TQ3Point2D * p1, const TQ3Point2D * p2, TQ3Vector2D * result);
/*
* Q3Param2D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Param2D_Subtract( const TQ3Param2D * p1, const TQ3Param2D * p2, TQ3Vector2D * result);
/*
* Q3Point3D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Point3D_Subtract( const TQ3Point3D * p1, const TQ3Point3D * p2, TQ3Vector3D * result);
/******************************************************************************
** ** ** Point Distance ** ** ** *****************************************************************************/ /*
* Q3Point2D_Distance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Point2D_Distance( const TQ3Point2D * p1, const TQ3Point2D * p2);
/*
* Q3Point2D_DistanceSquared() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Point2D_DistanceSquared( const TQ3Point2D * p1, const TQ3Point2D * p2);
/*
* Q3Param2D_Distance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Param2D_Distance( const TQ3Param2D * p1, const TQ3Param2D * p2);
/*
* Q3Param2D_DistanceSquared() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Param2D_DistanceSquared( const TQ3Param2D * p1, const TQ3Param2D * p2);
/*
* Q3RationalPoint3D_Distance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3RationalPoint3D_Distance( const TQ3RationalPoint3D * p1, const TQ3RationalPoint3D * p2);
/*
* Q3RationalPoint3D_DistanceSquared() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3RationalPoint3D_DistanceSquared( const TQ3RationalPoint3D * p1, const TQ3RationalPoint3D * p2);
/*
* Q3Point3D_Distance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Point3D_Distance( const TQ3Point3D * p1, const TQ3Point3D * p2);
/*
* Q3Point3D_DistanceSquared() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Point3D_DistanceSquared( const TQ3Point3D * p1, const TQ3Point3D * p2);
/*
* Q3RationalPoint4D_Distance() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3RationalPoint4D_Distance( const TQ3RationalPoint4D * p1, const TQ3RationalPoint4D * p2);
/*
* Q3RationalPoint4D_DistanceSquared() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3RationalPoint4D_DistanceSquared( const TQ3RationalPoint4D * p1, const TQ3RationalPoint4D * p2);
/******************************************************************************
** ** ** Point Relative Ratio ** ** ** *****************************************************************************/ /*
* Q3Point2D_RRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_RRatio( const TQ3Point2D * p1, const TQ3Point2D * p2, float r1, float r2, TQ3Point2D * result);
/*
* Q3Param2D_RRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_RRatio( const TQ3Param2D * p1, const TQ3Param2D * p2, float r1, float r2, TQ3Param2D * result);
/*
* Q3Point3D_RRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_RRatio( const TQ3Point3D * p1, const TQ3Point3D * p2, float r1, float r2, TQ3Point3D * result);
/*
* Q3RationalPoint4D_RRatio() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint4D * ) Q3RationalPoint4D_RRatio( const TQ3RationalPoint4D * p1, const TQ3RationalPoint4D * p2, float r1, float r2, TQ3RationalPoint4D * result);
/******************************************************************************
** ** ** Point / Vector Addition & Subtraction ** ** ** *****************************************************************************/ /*
* Q3Point2D_Vector2D_Add() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_Vector2D_Add( const TQ3Point2D * point2D, const TQ3Vector2D * vector2D, TQ3Point2D * result);
/*
* Q3Param2D_Vector2D_Add() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_Vector2D_Add( const TQ3Param2D * param2D, const TQ3Vector2D * vector2D, TQ3Param2D * result);
/*
* Q3Point3D_Vector3D_Add() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_Vector3D_Add( const TQ3Point3D * point3D, const TQ3Vector3D * vector3D, TQ3Point3D * result);
/*
* Q3Point2D_Vector2D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_Vector2D_Subtract( const TQ3Point2D * point2D, const TQ3Vector2D * vector2D, TQ3Point2D * result);
/*
* Q3Param2D_Vector2D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_Vector2D_Subtract( const TQ3Param2D * param2D, const TQ3Vector2D * vector2D, TQ3Param2D * result);
/*
* Q3Point3D_Vector3D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_Vector3D_Subtract( const TQ3Point3D * point3D, const TQ3Vector3D * vector3D, TQ3Point3D * result);
/******************************************************************************
** ** ** Vector Scale ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Scale() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Scale( const TQ3Vector2D * vector2D, float scalar, TQ3Vector2D * result);
/*
* Q3Vector3D_Scale() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Scale( const TQ3Vector3D * vector3D, float scalar, TQ3Vector3D * result);
/******************************************************************************
** ** ** Vector Length ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Length() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Vector2D_Length(const TQ3Vector2D * vector2D);
/*
* Q3Vector3D_Length() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Vector3D_Length(const TQ3Vector3D * vector3D);
/******************************************************************************
** ** ** Vector Normalize ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Normalize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Normalize( const TQ3Vector2D * vector2D, TQ3Vector2D * result);
/*
* Q3Vector3D_Normalize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Normalize( const TQ3Vector3D * vector3D, TQ3Vector3D * result);
/******************************************************************************
** ** ** Vector/Vector Addition and Subtraction ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Add() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Add( const TQ3Vector2D * v1, const TQ3Vector2D * v2, TQ3Vector2D * result);
/*
* Q3Vector3D_Add() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Add( const TQ3Vector3D * v1, const TQ3Vector3D * v2, TQ3Vector3D * result);
/*
* Q3Vector2D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Subtract( const TQ3Vector2D * v1, const TQ3Vector2D * v2, TQ3Vector2D * result);
/*
* Q3Vector3D_Subtract() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Subtract( const TQ3Vector3D * v1, const TQ3Vector3D * v2, TQ3Vector3D * result);
/******************************************************************************
** ** ** Cross Product ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Cross() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Vector2D_Cross( const TQ3Vector2D * v1, const TQ3Vector2D * v2);
/*
* Q3Vector3D_Cross() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Cross( const TQ3Vector3D * v1, const TQ3Vector3D * v2, TQ3Vector3D * result);
/*
* Q3Point3D_CrossProductTri() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Point3D_CrossProductTri( const TQ3Point3D * point1, const TQ3Point3D * point2, const TQ3Point3D * point3, TQ3Vector3D * crossVector);
/******************************************************************************
** ** ** Dot Product ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Dot() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Vector2D_Dot( const TQ3Vector2D * v1, const TQ3Vector2D * v2);
/*
* Q3Vector3D_Dot() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Vector3D_Dot( const TQ3Vector3D * v1, const TQ3Vector3D * v2);
/******************************************************************************
** ** ** Point and Vector Transformation ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Transform( const TQ3Vector2D * vector2D, const TQ3Matrix3x3 * matrix3x3, TQ3Vector2D * result);
/*
* Q3Vector3D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Transform( const TQ3Vector3D * vector3D, const TQ3Matrix4x4 * matrix4x4, TQ3Vector3D * result);
/*
* Q3Point2D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_Transform( const TQ3Point2D * point2D, const TQ3Matrix3x3 * matrix3x3, TQ3Point2D * result);
/*
* Q3Param2D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_Transform( const TQ3Param2D * param2D, const TQ3Matrix3x3 * matrix3x3, TQ3Param2D * result);
/*
* Q3Point3D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_Transform( const TQ3Point3D * point3D, const TQ3Matrix4x4 * matrix4x4, TQ3Point3D * result);
/*
* Q3RationalPoint4D_Transform() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint4D * ) Q3RationalPoint4D_Transform( const TQ3RationalPoint4D * point4D, const TQ3Matrix4x4 * matrix4x4, TQ3RationalPoint4D * result);
/*
* Q3Point3D_To3DTransformArray() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Point3D_To3DTransformArray( const TQ3Point3D * inPoint3D, const TQ3Matrix4x4 * matrix, TQ3Point3D * outPoint3D, long numPoints, unsigned long inStructSize, unsigned long outStructSize);
/*
* Q3Point3D_To4DTransformArray() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Point3D_To4DTransformArray( const TQ3Point3D * inPoint3D, const TQ3Matrix4x4 * matrix, TQ3RationalPoint4D * outPoint4D, long numPoints, unsigned long inStructSize, unsigned long outStructSize);
/*
* Q3RationalPoint4D_To4DTransformArray() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3RationalPoint4D_To4DTransformArray( const TQ3RationalPoint4D * inPoint4D, const TQ3Matrix4x4 * matrix, TQ3RationalPoint4D * outPoint4D, long numPoints, unsigned long inStructSize, unsigned long outStructSize);
/******************************************************************************
** ** ** Vector Negation ** ** ** *****************************************************************************/ /*
* Q3Vector2D_Negate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector2D * ) Q3Vector2D_Negate( const TQ3Vector2D * vector2D, TQ3Vector2D * result);
/*
* Q3Vector3D_Negate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_Negate( const TQ3Vector3D * vector3D, TQ3Vector3D * result);
/******************************************************************************
** ** ** Point conversion from cartesian to polar ** ** ** *****************************************************************************/ /*
* Q3Point2D_ToPolar() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3PolarPoint * ) Q3Point2D_ToPolar( const TQ3Point2D * point2D, TQ3PolarPoint * result);
/*
* Q3PolarPoint_ToPoint2D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3PolarPoint_ToPoint2D( const TQ3PolarPoint * polarPoint, TQ3Point2D * result);
/*
* Q3Point3D_ToSpherical() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3SphericalPoint * ) Q3Point3D_ToSpherical( const TQ3Point3D * point3D, TQ3SphericalPoint * result);
/*
* Q3SphericalPoint_ToPoint3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3SphericalPoint_ToPoint3D( const TQ3SphericalPoint * sphericalPoint, TQ3Point3D * result);
/******************************************************************************
** ** ** Point Affine Combinations ** ** ** *****************************************************************************/ /*
* Q3Point2D_AffineComb() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point2D * ) Q3Point2D_AffineComb( const TQ3Point2D * points2D, const float * weights, unsigned long nPoints, TQ3Point2D * result);
/*
* Q3Param2D_AffineComb() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Param2D * ) Q3Param2D_AffineComb( const TQ3Param2D * params2D, const float * weights, unsigned long nPoints, TQ3Param2D * result);
/*
* Q3RationalPoint3D_AffineComb() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint3D * ) Q3RationalPoint3D_AffineComb( const TQ3RationalPoint3D * points3D, const float * weights, unsigned long numPoints, TQ3RationalPoint3D * result);
/*
* Q3Point3D_AffineComb() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_AffineComb( const TQ3Point3D * points3D, const float * weights, unsigned long numPoints, TQ3Point3D * result);
/*
* Q3RationalPoint4D_AffineComb() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3RationalPoint4D * ) Q3RationalPoint4D_AffineComb( const TQ3RationalPoint4D * points4D, const float * weights, unsigned long numPoints, TQ3RationalPoint4D * result);
/******************************************************************************
** ** ** Matrix Functions ** ** ** *****************************************************************************/ /*
* Q3Matrix3x3_Copy() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_Copy( const TQ3Matrix3x3 * matrix3x3, TQ3Matrix3x3 * result);
/*
* Q3Matrix4x4_Copy() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_Copy( const TQ3Matrix4x4 * matrix4x4, TQ3Matrix4x4 * result);
/*
* Q3Matrix3x3_SetIdentity() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_SetIdentity(TQ3Matrix3x3 * matrix3x3);
/*
* Q3Matrix4x4_SetIdentity() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetIdentity(TQ3Matrix4x4 * matrix4x4);
/*
* Q3Matrix3x3_Transpose() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_Transpose( const TQ3Matrix3x3 * matrix3x3, TQ3Matrix3x3 * result);
/*
* Q3Matrix4x4_Transpose() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_Transpose( const TQ3Matrix4x4 * matrix4x4, TQ3Matrix4x4 * result);
/*
* Q3Matrix3x3_Invert() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_Invert( const TQ3Matrix3x3 * matrix3x3, TQ3Matrix3x3 * result);
/*
* Q3Matrix4x4_Invert() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_Invert( const TQ3Matrix4x4 * matrix4x4, TQ3Matrix4x4 * result);
/*
* Q3Matrix3x3_Adjoint() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_Adjoint( const TQ3Matrix3x3 * matrix3x3, TQ3Matrix3x3 * result);
/*
* Q3Matrix3x3_Multiply() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_Multiply( const TQ3Matrix3x3 * matrixA, const TQ3Matrix3x3 * matrixB, TQ3Matrix3x3 * result);
/*
* Q3Matrix4x4_Multiply() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_Multiply( const TQ3Matrix4x4 * matrixA, const TQ3Matrix4x4 * matrixB, TQ3Matrix4x4 * result);
/*
* Q3Matrix3x3_SetTranslate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_SetTranslate( TQ3Matrix3x3 * matrix3x3, float xTrans, float yTrans);
/*
* Q3Matrix3x3_SetScale() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_SetScale( TQ3Matrix3x3 * matrix3x3, float xScale, float yScale);
/*
* Q3Matrix3x3_SetRotateAboutPoint() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix3x3 * ) Q3Matrix3x3_SetRotateAboutPoint( TQ3Matrix3x3 * matrix3x3, const TQ3Point2D * origin, float angle);
/*
* Q3Matrix4x4_SetTranslate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetTranslate( TQ3Matrix4x4 * matrix4x4, float xTrans, float yTrans, float zTrans);
/*
* Q3Matrix4x4_SetScale() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetScale( TQ3Matrix4x4 * matrix4x4, float xScale, float yScale, float zScale);
/*
* Q3Matrix4x4_SetRotateAboutPoint() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotateAboutPoint( TQ3Matrix4x4 * matrix4x4, const TQ3Point3D * origin, float xAngle, float yAngle, float zAngle);
/*
* Q3Matrix4x4_SetRotateAboutAxis() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotateAboutAxis( TQ3Matrix4x4 * matrix4x4, const TQ3Point3D * origin, const TQ3Vector3D * orientation, float angle);
/*
* Q3Matrix4x4_SetRotate_X() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotate_X( TQ3Matrix4x4 * matrix4x4, float angle);
/*
* Q3Matrix4x4_SetRotate_Y() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotate_Y( TQ3Matrix4x4 * matrix4x4, float angle);
/*
* Q3Matrix4x4_SetRotate_Z() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotate_Z( TQ3Matrix4x4 * matrix4x4, float angle);
/*
* Q3Matrix4x4_SetRotate_XYZ() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotate_XYZ( TQ3Matrix4x4 * matrix4x4, float xAngle, float yAngle, float zAngle);
/*
* Q3Matrix4x4_SetRotateVectorToVector() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetRotateVectorToVector( TQ3Matrix4x4 * matrix4x4, const TQ3Vector3D * v1, const TQ3Vector3D * v2);
/*
* Q3Matrix4x4_SetQuaternion() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Matrix4x4 * ) Q3Matrix4x4_SetQuaternion( TQ3Matrix4x4 * matrix, const TQ3Quaternion * quaternion);
/*
* Q3Matrix3x3_Determinant() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Matrix3x3_Determinant(const TQ3Matrix3x3 * matrix3x3);
/*
* Q3Matrix4x4_Determinant() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Matrix4x4_Determinant(const TQ3Matrix4x4 * matrix4x4);
/******************************************************************************
** ** ** Quaternion Routines ** ** ** *****************************************************************************/ /*
* Q3Quaternion_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_Set( TQ3Quaternion * quaternion, float w, float x, float y, float z);
/*
* Q3Quaternion_SetIdentity() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetIdentity(TQ3Quaternion * quaternion);
/*
* Q3Quaternion_Copy() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_Copy( const TQ3Quaternion * quaternion, TQ3Quaternion * result);
/*
* Q3Quaternion_IsIdentity() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Boolean ) Q3Quaternion_IsIdentity(const TQ3Quaternion * quaternion);
/*
* Q3Quaternion_Invert() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_Invert( const TQ3Quaternion * quaternion, TQ3Quaternion * result);
/*
* Q3Quaternion_Normalize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_Normalize( const TQ3Quaternion * quaternion, TQ3Quaternion * result);
/*
* Q3Quaternion_Dot() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( float ) Q3Quaternion_Dot( const TQ3Quaternion * q1, const TQ3Quaternion * q2);
/*
* Q3Quaternion_Multiply() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_Multiply( const TQ3Quaternion * q1, const TQ3Quaternion * q2, TQ3Quaternion * result);
/*
* Q3Quaternion_SetRotateAboutAxis() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotateAboutAxis( TQ3Quaternion * quaternion, const TQ3Vector3D * axis, float angle);
/*
* Q3Quaternion_SetRotate_XYZ() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotate_XYZ( TQ3Quaternion * quaternion, float xAngle, float yAngle, float zAngle);
/*
* Q3Quaternion_SetRotate_X() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotate_X( TQ3Quaternion * quaternion, float angle);
/*
* Q3Quaternion_SetRotate_Y() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotate_Y( TQ3Quaternion * quaternion, float angle);
/*
* Q3Quaternion_SetRotate_Z() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotate_Z( TQ3Quaternion * quaternion, float angle);
/*
* Q3Quaternion_SetMatrix() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetMatrix( TQ3Quaternion * quaternion, const TQ3Matrix4x4 * matrix);
/*
* Q3Quaternion_SetRotateVectorToVector() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_SetRotateVectorToVector( TQ3Quaternion * quaternion, const TQ3Vector3D * v1, const TQ3Vector3D * v2);
/*
* Q3Quaternion_MatchReflection() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_MatchReflection( const TQ3Quaternion * q1, const TQ3Quaternion * q2, TQ3Quaternion * result);
/*
* Q3Quaternion_InterpolateFast() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_InterpolateFast( const TQ3Quaternion * q1, const TQ3Quaternion * q2, float t, TQ3Quaternion * result);
/*
* Q3Quaternion_InterpolateLinear() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Quaternion * ) Q3Quaternion_InterpolateLinear( const TQ3Quaternion * q1, const TQ3Quaternion * q2, float t, TQ3Quaternion * result);
/*
* Q3Vector3D_TransformQuaternion() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Vector3D * ) Q3Vector3D_TransformQuaternion( const TQ3Vector3D * vector3D, const TQ3Quaternion * quaternion, TQ3Vector3D * result);
/*
* Q3Point3D_TransformQuaternion() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Point3D * ) Q3Point3D_TransformQuaternion( const TQ3Point3D * point3D, const TQ3Quaternion * quaternion, TQ3Point3D * result);
/******************************************************************************
** ** ** Volume Routines ** ** ** *****************************************************************************/ /*
* Q3BoundingBox_Copy() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_Copy( const TQ3BoundingBox * src, TQ3BoundingBox * dest);
/*
* Q3BoundingBox_Union() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_Union( const TQ3BoundingBox * v1, const TQ3BoundingBox * v2, TQ3BoundingBox * result);
/*
* Q3BoundingBox_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_Set( TQ3BoundingBox * bBox, const TQ3Point3D * min, const TQ3Point3D * max, TQ3Boolean isEmpty);
/*
* Q3BoundingBox_UnionPoint3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_UnionPoint3D( const TQ3BoundingBox * bBox, const TQ3Point3D * point3D, TQ3BoundingBox * result);
/*
* Q3BoundingBox_UnionRationalPoint4D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_UnionRationalPoint4D( const TQ3BoundingBox * bBox, const TQ3RationalPoint4D * point4D, TQ3BoundingBox * result);
/*
* Q3BoundingBox_SetFromPoints3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_SetFromPoints3D( TQ3BoundingBox * bBox, const TQ3Point3D * points3D, unsigned long numPoints, unsigned long structSize);
/*
* Q3BoundingBox_SetFromRationalPoints4D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingBox * ) Q3BoundingBox_SetFromRationalPoints4D( TQ3BoundingBox * bBox, const TQ3RationalPoint4D * points4D, unsigned long numPoints, unsigned long structSize);
/******************************************************************************
** ** ** Sphere Routines ** ** ** *****************************************************************************/ /*
* Q3BoundingSphere_Copy() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_Copy( const TQ3BoundingSphere * src, TQ3BoundingSphere * dest);
/*
* Q3BoundingSphere_Union() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_Union( const TQ3BoundingSphere * s1, const TQ3BoundingSphere * s2, TQ3BoundingSphere * result);
/*
* Q3BoundingSphere_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_Set( TQ3BoundingSphere * bSphere, const TQ3Point3D * origin, float radius, TQ3Boolean isEmpty);
/*
* Q3BoundingSphere_UnionPoint3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_UnionPoint3D( const TQ3BoundingSphere * bSphere, const TQ3Point3D * point3D, TQ3BoundingSphere * result);
/*
* Q3BoundingSphere_UnionRationalPoint4D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_UnionRationalPoint4D( const TQ3BoundingSphere * bSphere, const TQ3RationalPoint4D * point4D, TQ3BoundingSphere * result);
/*
* Q3BoundingSphere_SetFromPoints3D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_SetFromPoints3D( TQ3BoundingSphere * bSphere, const TQ3Point3D * points3D, unsigned long numPoints, unsigned long structSize);
/*
* Q3BoundingSphere_SetFromRationalPoints4D() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3BoundingSphere * ) Q3BoundingSphere_SetFromRationalPoints4D( TQ3BoundingSphere * bSphere, const TQ3RationalPoint4D * points4D, unsigned long numPoints, unsigned long structSize);
#endif /* CALL_NOT_IN_CARBON */
#if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DMATH__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DMATH__RESTORE_PACKED_ENUMS)
#pragma options(pack_enums)
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
} #endif
#endif /* __QD3DMATH__ */
|