#!/usr/bin/python -Wall # ================================================================ # John Kerl # kerl at math dot arizona dot edu # 2009-10-08 # Please see http://math.arizona.edu/~kerl/doc/python-talk.pdf for # more information. # ================================================================ import sys, re import tabutil # ---------------------------------------------------------------- def project_3D_to_2D(x, y, z, Pxhat, Pyhat, Pzhat): u = Pxhat[0] * x + Pyhat[0] * y + Pzhat[0] * z v = Pxhat[1] * x + Pyhat[1] * y + Pzhat[1] * z return [u, v] # ---------------------------------------------------------------- def usage(): print >> sys.stderr, '%s: unrecognized argument \'%s\'.' \ % (sys.argv[0], arg) print >> sys.stderr, 'Recognized arguments: -xy, -yz, -xz, -usual.' sys.exit(1) # ---------------------------------------------------------------- Pxhat = [-0.25, -0.25] Pyhat = [1, 0] Pzhat = [0, 1] for arg in sys.argv[1:]: if arg[0] != '-': usage() elif arg == '-xy' : Pxhat = [1, 0]; Pyhat = [0, 1]; Pzhat = [0, 0] elif arg == '-yz' : Pxhat = [0, 0]; Pyhat = [1, 0]; Pzhat = [0, 1] elif arg == '-xz' : Pxhat = [1, 0]; Pyhat = [0, 0]; Pzhat = [0, 1] elif arg == '-usual': Pxhat = [-0.5, -0.5]; Pyhat = [1, 0]; Pzhat = [0, 1] else: usage() columns = tabutil.float_columns_from_file('-') # Read from standard input if len(columns) != 3: print >> sys.stderr, '%s: Need 3 columns; got %d.' \ % (sys.argv[0], len(columns)) sys.exit(1) [xs, ys, zs] = columns for i in range(0, len(xs)): x = xs[i]; y = ys[i]; z = zs[i] [u, v] = project_3D_to_2D(x, y, z, Pxhat, Pyhat, Pzhat) print '%11.7f %11.7f' % (u, v)