Вы говорите, что это круг.Я предполагаю, что вы знаете центр (C
) и радиус (r
).Таким образом, круг равен P == |P - C| = r
, что эквивалентно <P-C, P-C> = r*r
и, наконец, <P-C, P-C> - r*r = 0
.
Вы знаете линию, поэтому вы знаете две точки (A
и B
).В параметрических уравнениях это P == A + t(B-A)
.
Для точек, которые являются пересечениями, оба уравнения верны.Таким образом, вы можете заменить второе уравнение на первое, получая <A+t(B-A)-C, A+t(B-A)-C> - r*r = 0
.Если вы развернете это скалярное произведение, вы получите квадратное уравнение по t (то есть K1 * t * t + K2 * t + K3 = 0).
Если вам нужно только знать, есть ли пересечениявычислить определитель (K2*K2 - 4*K1*K3
).Если это отрицательно, линия и круг не пересекаются.Если это положительно, есть два пересечения.Если это ноль, линия касается окружности.
Если вы хотите вычислить координаты пересечения (ей), вычислите значения t
и вставьте их в уравнение параметрической линии, чтобы получитькоординаты