This is Ellipse.m in view mode; [Download] [Up]
#import "Ellipse.h"
#define MAXSECTS 24
struct coefs {
float coef1[MAXSECTS];
float coef2[MAXSECTS];
float coef3[MAXSECTS];
float coef4[MAXSECTS];
float past1[MAXSECTS];
float past2[MAXSECTS];
float past3[MAXSECTS];
float past4[MAXSECTS];
} coefs;
@implementation Ellipse: Object
{
float xnorm;
int nsects;
}
+ create {
id newInstance;
newInstance = [ self new ];
return newInstance;
}
-ellpset: (float *)list
{
/* the first argument in the list is the number of sections */
int m,i,j;
nsects = (int)list[0];
if(nsects > MAXSECTS) {
printf("sorry, only configured for %d sections\n",MAXSECTS);
exit(-4);
}
i=1;
for(m=0;m<nsects;m++) {
coefs.coef1[m] = list[i++];
coefs.coef2[m] = list[i++];
coefs.coef3[m] = list[i++];
coefs.coef4[m] = list[i++];
coefs.past1[m] =
coefs.past2[m] =
coefs.past3[m] =
coefs.past4[m] = 0;
}
xnorm = list[i];
}
-(float)ellipse :(float) signal
{
int m;
float op;
for(m=0;m<nsects;m++) {
op = signal + coefs.coef1[m] * coefs.past1[m]
+ coefs.coef3[m] * coefs.past2[m]
- coefs.coef2[m] * coefs.past3[m]
- coefs.coef4[m] * coefs.past4[m];
coefs.past2[m] = coefs.past1[m];
coefs.past1[m] = signal;
coefs.past4[m] = coefs.past3[m];
coefs.past3[m] = op;
signal = op;
}
return(signal*xnorm);
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.