ftp.nice.ch/pub/next/unix/audio/Cmix.N.s.tar.gz#/cmix/rooms/move/path.c

This is path.c in view mode; [Download] [Up]

#include <stdio.h>
#include "nobug.h"
#define SIZE 512

/* This routine loads the t, x, y, triplets into the two arrays used by
   table() to update sound source location during main loop of move    */

float rholoc[SIZE], thetaloc[SIZE];
int cartflag;
double mindiff;

path (p, n_args)		/* for polar coordinates */
    float *p;
    int n_args;
{
    float rhos[100], thetas[100];
    int i, t;
    static double z = 0.017453292;    /* Pi/180 */

    /* check for proper input triplets */

    if(n_args % 3)
    {
       fprintf(stderr,"Incorrect no. of args. Check triplets!\n");
       exit(-1);
    }
    /* Separate coordinates */

    t = 0;

    for (i = 0; i < n_args; i+=3)
    {
       rhos[t] = thetas[t] = p[i];	/* the time values */
       rhos[t+1] = p[i+1];
       thetas[t+1] = z * p[i+2]; 	/* convert to radians here */
       t += 2;
    }
    /* Load into arrays */

    setline(rhos,t,SIZE,rholoc);
    setline(thetas,t,SIZE,thetaloc);
    cartflag = 0;
}

cpath (p, n_args) 	/* for cartesian coordinates */
    float *p;
    int n_args;
{
    float rhos[100], thetas[100];
    int i, t;

    /* check for proper input triplets */

    if(n_args % 3)
    {
       fprintf(stderr,"Incorrect no. of args. Check triplets!\n");
       exit(-1);
    }
    /* Separate coordinates */

    t = 0;

    for (i = 0; i < n_args; i+=3)
    {
       rhos[t] = thetas[t] = p[i];
       rhos[t+1] = p[i+1];
       thetas[t+1] = p[i+2];
       t += 2;
    }
    /* Load into arrays */

    setline(rhos,t,SIZE,rholoc);
    setline(thetas,t,SIZE,thetaloc);
    cartflag = 1;
}

param (p, n_args)	/* parametric setup for polar coordinates */
float *p;
int n_args;
{
    	int i;
    	float *fun1, *fun2, *floc();

    	if(n_args != 2)
    	{
		fprintf(stderr,"Incorrect no. of args.\n");
       		exit(-1);
    	}
    	fun1 = floc((int) p[0]);
	fun2 = floc((int) p[1]);

	for (i = 0; i < SIZE; i++)
    	{
       		rholoc[i] = *fun1++;
       		thetaloc[i] = *fun2++;
    	}
	fprintf(stderr, "Functions loaded.\n");
	cartflag = 0;
}

cparam (p, n_args)	/* parametric setup for cartesian coordinates */
float *p;
int n_args;
{
    	int i;
    	float *fun1, *fun2, *floc();

    	if(n_args != 2)
    	{
		fprintf(stderr,"Incorrect no. of args.\n");
       		exit(-1);
    	}
    	fun1 = floc((int) p[0]);
	fun2 = floc((int) p[1]);

	for (i = 0; i < SIZE; i++)
    	{
       		rholoc[i] = *fun1++;
       		thetaloc[i] = *fun2++;
    	}
	fprintf(stderr, "Functions loaded.\n");
	cartflag = 1;
}

threshold(p, n_args)
float *p;
int n_args;
{
	mindiff = p[0];
}

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