python, numpy, генерация точек на окружности
Есть некая окружность, на ее сегменте необходимо сгенерить пару десятков точек. Исходные данные такие:
r = 0.1 # радиус
c = np.array([-118.702219 / 1000, -35 / 1000]) # центр
f = np.array([-118.702219 / 1000, 65 / 1000]) # первая точка дуги
ff = np.array([-61.344575 / 1000, 46.915204 / 1000]) # конечная точка дуги
Пробовал так:
def circle_points(r, c, first, final, num=30):
vec1 = f - c
vec2 = ff - c
cos = np.dot(vec1, vec2)/np.linalg.norm(vec1)/np.linalg.norm(vec2)
phi = -1 * np.degrees(np.arccos(cos))
phi_mesh = np.linspace(0, phi, num=num, endpoint=True)
x = first[0] * np.cos(np.deg2rad(phi_mesh)) - first[1] * np.sin(np.deg2rad(phi_mesh))
y = first[0] * np.sin(np.deg2rad(phi_mesh)) + first[1] * np.cos(np.deg2rad(phi_mesh))
return np.hstack((x.reshape(-1, 1), y.reshape(-1, 1)))
и если по Х координате более менее похоже, то по Y вообще не сходится...
array([[-0.11870222, 0.065 ],
[-0.11730681, 0.06748578],
[-0.11585935, 0.06994161],
[-0.11436048, 0.07236641],
[-0.11281087, 0.07475911],
[-0.11121121, 0.07711863],
[-0.10956221, 0.07944394],
[-0.1078646 , 0.08173399],
[-0.10611912, 0.08398779],
[-0.10432657, 0.08620432],
[-0.10248772, 0.0883826 ],
[-0.1006034 , 0.09052167],
[-0.09867445, 0.09262057],
[-0.09670171, 0.09467838],
[-0.09468607, 0.09669418],
[-0.09262842, 0.09866708],
[-0.09052967, 0.1005962 ],
[-0.08839075, 0.10248069],
[-0.08621262, 0.10431971],
[-0.08399623, 0.10611244],
[-0.08174258, 0.10785809],
[-0.07945265, 0.10955589],
[-0.07712748, 0.11120508],
[-0.07476808, 0.11280492],
[-0.07237551, 0.11435472],
[-0.06995083, 0.11585378],
[-0.06749511, 0.11730144],
[-0.06500944, 0.11869705],
[-0.06249493, 0.12003999],
[-0.0599527 , 0.12132968]])