Here's a quick Python hack for coordinate generation: import math n_dist=5000 e_dist=2000 s_dist=1500 w_dist=1000 distV=[n_dist,e_dist,s_dist,w_dist,n_dist] radix=0 nverts=120 #!! Must be evenly divisible by 4! quad=nverts / 4 step=(math.pi * 2) / nverts coords=[] angle=math.pi / 2 for i in range(0,nverts): if ((radix % 2) == 0): dy = distV[radix] * abs(math.sin(angle)) dx = distV[(radix+1)%4] * abs(math.cos(angle)) r = math.sqrt(dy*dy + dx*dx) else: dx = distV[radix] * abs(math.cos(angle)) dy = distV[(radix+1)%4] * abs(math.sin(angle)) r = math.sqrt(dy*dy + dx*dx) x = math.cos(angle) * r y = math.sin(angle) * r coords.append([x,y]) print "\t{:.5f} {:.5f},".format(x,y) if ((i % quad) == (quad - 1)): radix += 1 angle -= step coords.append(coords[0]) print str(coords) This isn't exactly what you've drawn, but it does generate points which are derived from both the X and Y components: [![multi-component buffer][1]][1] Changing the weighting of radius `r` and incorporating in an arcpy script to copy a point featureclass to polygon is left as an exercise. [1]: https://i.sstatic.net/O0CVP.jpg