Округлить угол треугольника с определенным радиусом

У меня есть три известные точки, определяющие треугольник: А ( Икс а , у а ) , Б ( Икс б , у б ) и С ( Икс с , у с ) .
Как округлить угол (ABC) определенного радиуса р ?

Я знаю, что наклон А Б край: ( у а у б ) / ( Икс а Икс б ) .

Мой круг с центром (неизвестно) О : ( Икс о , у о ) будет иметь уравнение ( у а у о ) 2 + ( Икс а Икс о ) "=" р 2 .

Смысл Б также будет удовлетворять уравнению окружности.

Зная наклоны прямых уравнений моего треугольника и то, что моя окружность имеет известный радиус р , у меня проблемы с поиском центра моей окружности и точек М , Н где мой круг будет пересекаться с краями треугольника. Точки М , Н также являются точками касания окружности.

После небольшой работы с математикой кажется, что у меня слишком много неизвестных для моей системы.

Буду очень признателен за любую помощь.

С уважением

Что означает выражение «закруглить угол»? Хотите найти уравнение описанной окружности этого треугольника? Другими словами, вы хотите найти уравнение окружности, проходящей через все три точки?
Я считаю, что OP хочет, чтобы круг проходил через точки А и Б (поскольку заданному уравнению окружности удовлетворяет А , и ОП говорит, что точка Б тоже удовлетворит). Но я думаю, что ОП хочет просто иметь круг радиуса р проходящей через эти две точки.
@JohnHughes Тогда почему С даже упоминается в вопросе?
Потому что не каждый вопрошающий может идеально абстрагироваться от проблемы. Я думаю, что ОП хочет, чтобы «дуга» находилась сбоку от С , и это то, что я предоставил в своем ответе, но знает только ОП.

Ответы (2)

Общее уравнение окружности:

Икс 2 + у 2 + 2 г Икс + 2 ф у + с "=" 0

И все три точки будут удовлетворять этому уравнению.

Следовательно :

Икс а 2 + у а 2 + 2 г Икс а + 2 ф у а + с "=" 0
Икс б 2 + у б 2 + 2 г Икс б + 2 ф у б + с "=" 0
Икс с 2 + у с 2 + 2 г Икс с + 2 ф у с + с "=" 0

У вас есть три уравнения и три неизвестных ф , г , с . Решите их вместе, чтобы получить значения, и подставьте их в уравнение круга, чтобы получить его уравнение.

Я думаю, что вам нужна дуга окружности, проходящая через А Б , имеющий радиус р , а с «выпуклостью» дуги на стороне, противоположной С .

Вот как это сделать:

h = dist(A,B)/2   // compute half the distance from A to B
if (h < r) then ERROR // no radius-r circle can pass through
                      // points farther apart than 2r!
s = sqrt(r*r - h*h)   // Distance by which to offset circle
ux = Bx - Ax      // Ax denotes the x coord of point A
uy = By - Ay
w = sqrt(ux*ux + uy*uy)
ux = ux/w
uy = uy/w       // (ux, uy) is now a length-1 vector from A towards B

vx = Cx - Ax
vy = Cy - Ay
// Note that (-uy, ux) is a length 1 vector perpendicular to AB
// We check whether this points in the same halfspace as AC, 
// or the opposite one. 
dot = (-uy) * vx + ux * vy
if (dot > 0) then s = -s

Mx = (Ax + Bx)/2
My = (Ay + By)/2  // coordinates of midpoint of edge AB
Qx = Mx + s* (-uy)
Qy = My + s * ux  // Q is the center of the desired circle. 
                  // computed by offsetting the edge midpoint 
                  // by distance s along the vector (-uy, ux)