**I hope this helps future generations of random googlers. Please improve and update if needed - **

Its not the most desirable outcome, but a nice compromise for where I’m at in my math -

Furthest from z on the object, 0 degrees y rotation (local) is applied - so spikes point up. As z-0 is approached, rotation comes closer to 90 degrees. Since the z-rotation is calculated 1-360 degrees, the cone spins, retaining the first angle.

I figured this is good for a sphere, but what if its squashed. It still looks great for my project.

```
#ROTATION CALCULATOR
#make adjustment in function depending on which values are negative
obj_center= bpy.data.objects['Golden Points Object'].location
x1, y1, z1 = obj_center[0], obj_center[1], obj_center[2]
x2, y2, z2 = vertice.co[0], vertice.co[1], vertice.co[2],
hyp = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
adj = x2 - x1
opp = y2 - y1
sin = opp / hyp
if x2 > 0 and y2 > 0: # Quadrant 1
sin = opp/hyp
z_rot = math.asin(sin)
elif x2 < 0 and y2 > 0: # Quadrant 2
cos = adj/hyp
z_rot = math.acos(cos)
elif x2 < 0 and y2 < 0: # Quadrant 3
tan = (opp/hyp) / (adj/hyp)
#since is in third quadrant of unit circle, must add 180 deg
#first convert deg to rad
add180 = 180 * (math.pi/180)
z_rot = math.atan(tan) + add180
elif x2 > 0 and y2 < 0: # Quadrant 4
tan = (opp/hyp) / (adj/hyp)
#since is in fourth quadrant of unit circle, must add 360 deg
#first convert deg to rad
add360 = 360 * (math.pi/180)
z_rot = math.atan(tan) + add360
#decide y rotation in degrees
y_rot = math.fabs(1-z2) * 90
y_rot = y_rot*(math.pi/180)
#/ROTATION CALCULATOR
```

Of course it would be much better to catch up and learn matrices/euler angles. All in time I suppose.

### Attachments