You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2243 lines
53 KiB
2243 lines
53 KiB
/* |
|
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__ */ |
|
|
|
|