ftp.nice.ch/pub/next/graphics/3d/Tester3D.NIHS.bs.tar.gz#/Tester3D/Source/Linear3D.h

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

/* Linear3D.h */

#import "Transformation3D.h"

#define L3D_X_AXIS 0
#define L3D_Y_AXIS 1
#define L3D_Z_AXIS 2

	/*
		these are constants to be used when calling rotate to choose an
		axis. 
	*/
		
@interface Linear3D:Transformation3D
{
	float coeff[4][3];
}
	/*
		coeff is the coefficients of the transformation matrix
		and the translation.
	*/

+new;

	/* initializes coeff such that the transformation is the identity */


- operateOn:(vector3D *)theVect;

	/* 
		will perform matrix multiplication with the vector3D pointed to by
		theVect, using the first three rows of the array coeff as a 3D 
		matrix, and adding the fourth as a translation vector.
		It will leave the result in the vector3D pointed to by theVect.
	*/
	
- operateOn:(vector3D *)theVects howMany:(int)count;

	/* 
		will perform the same operation as operateOn: to the array of vector3D
		pointed to by theVects. It will leave the array itself modified.
	*/

- concatBefore:aLinear;
- concatAfter:aLinear;

	/* 
		These methods combine the receiver with another Linear3D transformation
		in such a way the the receiver will be modified to perform both
		operations in succession, by doing simple matrix multiplication. 
		concatBefore: will make the receiver a 
		Linear3D such that it performs the receiver's original operation first,
		and aLinear's second. concatAfter: causes the receiver to perform it's
		original operation after aLinear's.
	*/

- rotation:(int)axis:(float)angle;

	/* 
		causes the values in coeff to be set such that it represents a rotation
		transformation of angle degrees, around the axis determined by axis
		using the constants L3D_X_AXIS,L3D_Y_AXIS and L3D_Z_AXIS.
	*/
		

- scaling:(float)x:(float)y:(float)z;

	/* 
		causes the values in coeff to be set such that it represents a scaling
		transformation,where x,y,z represent the scaling in each direction.
	*/

- translation:(float)x:(float)y:(float)z;

	/* 
		causes the values in coeff to be set such that it represents a
		translation transformation.
	*/

- (float)coefficient:(int)row column:(int)column;

	/* returns coeff[row][column] */
	
@end

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