ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/i386-next-nextstep3/2.7.2.2.f.2/include/3Dkit/next3d.h

This is next3d.h in view mode; [Download] [Up]

/*
 *  Copyright (c) 1991, 1992 by NeXT Computer, Inc as an unpublished work.
 *  All rights reserved.
 *
 */

#ifndef _next3dh_
#define _next3dh_

#import <ri/ri.h>
#import <objc/hashtable.h>

typedef enum {
    N3D_Perspective,
    N3D_Orthographic
} N3DProjectionType;

typedef enum {
    N3D_AmbientLight,
    N3D_PointLight,
    N3D_DistantLight,
    N3D_SpotLight
} N3DLightType;
    
typedef enum {
    N3D_AllAxes,
    N3D_XAxis,
    N3D_YAxis,
    N3D_ZAxis,
    N3D_XYAxes,
    N3D_XZAxes,
    N3D_YZAxes
} N3DAxis;

typedef enum {
	N3D_HiddenRendering = 0, 
	N3D_InOrderRendering, 
	N3D_NoRendering
} N3DHider;

typedef enum {
	N3D_PointCloud = 0, 
	N3D_WireFrame, 
	N3D_ShadedWireFrame, 
	N3D_FacetedSolids, 
	N3D_SmoothSolids
} N3DSurfaceType;

/*
 *  Macros for quick structure copies.  Turns into small code when
 *  compiled with -O.
 */
 
#define N3D_CopyMatrix( s_, d_ )  do { \
		    struct _cms { RtMatrix _m; }; \
		    *((struct _cms *)(d_)) = *((struct _cms *)(s_)); \
		    } while (0)
#define N3D_CopyPoint( s_, d_ )  do { \
		    struct _cps { RtPoint _p; }; \
		    *((struct _cps *)(d_)) = *((struct _cps *)(s_)); \
		    } while (0)
#define N3D_CopyBound( s_, d_ )  do { \
		    struct _cps { RtBound _b; }; \
		    *((struct _cps *)(d_)) = *((struct _cps *)(s_)); \
		    } while (0)
#define N3D_ConvertBoundToPoints( b_, p_ )	do { \
		    (p_)[0][0] = (b_)[0]; \
		    (p_)[0][1] = (b_)[2]; \
		    (p_)[0][2] = (b_)[4]; \
		    (p_)[1][0] = (b_)[1]; \
		    (p_)[1][1] = (b_)[3]; \
		    (p_)[1][2] = (b_)[5]; \
		    } while (0)
#define N3D_ConvertPointsToBound( p_, b_ )	do { \
		    (b_)[0] = (p_)[0][0]; \
		    (b_)[1] = (p_)[1][0]; \
		    (b_)[2] = (p_)[0][1]; \
		    (b_)[3] = (p_)[1][1]; \
		    (b_)[4] = (p_)[0][2]; \
		    (b_)[5] = (p_)[1][2]; \
		    } while (0)
/*
 *  Single-value macros for accessing point coords.
 */
#define N3D_XComp( _p )	((_p)[0])
#define N3D_YComp( _p )	((_p)[1])
#define N3D_ZComp( _p )	((_p)[2])
#define N3D_WComp( _p )	((_p)[3])

void N3DMult3DPoint( RtPoint p, RtMatrix m, RtPoint result );
void N3DMult3DPoints( RtPoint *p, int count, RtMatrix m, RtPoint *result );
void N3DIntersectLinePlane( RtPoint *L, RtPoint pnorm, RtPoint ppoint,
			RtPoint *psect );
void N3DMultiplyMatrix( RtMatrix a, RtMatrix b, RtMatrix result );
float N3DInvertMatrix( RtMatrix m, RtMatrix inverse_m );

/* Various and sundry useful globals */
extern NXAtom N3DRIBPboardType;
extern const RtPoint N3DOrigin;
extern const RtMatrix N3DIdentityMatrix;


#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.