nawk '
		BEGIN {
				SCALE = .4;
		}
		{
# $0 looks like segmentz-w+x+
# so I want to parse that string, finding out that in this case,
# the variation is in y, and that the other dimensions are set
# as prescribed.
			X = SCALE; Y = SCALE; Z = SCALE; W = SCALE;
			Xiter = 1; Yiter = 1; Ziter = 1; Witer = 1;
			if ( pos = index($0,"x") ) {
# print "pos = "pos", length = "length($0);
				if ( length($0) > pos ) {
					if ( substr($0,pos+1,1) == "+") {
						X *= -1;
					} else {
						X *= 1;
					}
				} else {
					Xiter = 2;
				}
			} else Xiter = 2;
			if ( pos = index($0,"y") ) {
				if ( length($0) > pos ) {
					if ( substr($0,pos+1,1) == "+") {
						Y *= -1;
					} else {
						Y *= 1;
					}
				} else {
					Yiter = 2;
				}
			} else Yiter = 2;
			if ( pos = index($0,"z") ) {
				if ( length($0) > pos ) {
					if ( substr($0,pos+1,1) == "+") {
						Z *= -1;
					} else {
						Z *= 1;
					}
				} else {
					Ziter = 2;
				}
			} else Ziter = 2;
			if ( pos = index($0,"w") ) {
				if ( length($0) > pos ) {
					if ( substr($0,pos+1,1) == "+") {
						W *= -1;
					} else {
						W *= 1;
					}
				} else {
					Witer = 2;
				}
			} else Witer = 2;
			numpts = Xiter*Yiter*Ziter*Witer;

			print "4VECT" >> $0;
			print numpts,numpts,1 >> $0;
			printf("1 ") >> $0;
			for ( i = 0; i< numpts-1; i++ ) printf("0 ") >> $0;
			printf("\n") >> $0;
			printf("\n") >> $0;

			for ( i = 0; i< Xiter; i++ )  {
				for ( j = 0; j< Yiter; j++ )  {
					for ( k = 0; k< Ziter; k++ )  {
						for ( l = 0; l< Witer; l++ )  {
							print (2*i-1)*X,(2*j-1)*Y,(2*k-1)*Z,(2*l-1)*W >> $0;
						}
					}
				}
			}
			printf("\n") >> $0;
			print "1 0 0 1" >> $0;
		}
'
