I want to reproduce the movement of a point with varying acceleration in C#

I think it is possible to use the normal vectors on the uneven surface to find the acceleration at each position. I would like to use the acceleration to find the velocity at each position, but how do I program this?

Vector nv is 0,0,1 so normal_xy is 0,0,0 so theta is NaN (not a valid number).

Use radians, not degrees (bc Math.Cos ask for radians). Do not use same variable names in different scopes, change pt_1 and velocity_01 variables and keep them in the function arguments. And as a side note, your code is difficult to read because is verbose, variables like normal_x are not needed because normal.X give you the same information with the same cost.
golf_demo (1).gh (245.6 KB)