This is SpiralGenerator.m in view mode; [Download] [Up]
/* File: SpiralGenerator.m - Spiral generator for 'PrimeSpiral' * * By: Christopher Lane * Symbolic Systems Resources Group * Knowledge Systems Laboratory * Stanford University * * Date: 24 February 1990 * * Copyright: 1990 by The Leland Stanford Junior University. This program * may be distributed without restriction for non-commercial use. */ #ifdef DEBUG #import <stdio.h> #endif #import "SpiralGenerator.h" @implementation SpiralGenerator + new { self = [super new]; count = 1; remain = 2; distance = 1; direction = RIGHT; return self; } - generate:(unsigned int) number :(NXPoint *) point { int dx = 0, dy = 0; for(; count <= number; count++) { if(!--remain) { switch(direction) { case UP: distance++; direction = LEFT; break; case DOWN: distance++; default: direction--; break; } remain = distance; } switch(direction) { case LEFT: --dx; break; case RIGHT: ++dx; break; case UP: ++dy; break; case DOWN: --dy; break; } } point->x += (float) dx; point->y += (float) dy; #ifdef DEBUG (void) printf("\t(%g, %g)\n", point->x, point->y); #endif return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.