У меня есть три известные точки, определяющие треугольник:
и
.
Как округлить угол (ABC) определенного радиуса
?
Я знаю, что наклон край: .
Мой круг с центром (неизвестно) будет иметь уравнение .
Смысл также будет удовлетворять уравнению окружности.
Зная наклоны прямых уравнений моего треугольника и то, что моя окружность имеет известный радиус , у меня проблемы с поиском центра моей окружности и точек где мой круг будет пересекаться с краями треугольника. Точки также являются точками касания окружности.
После небольшой работы с математикой кажется, что у меня слишком много неизвестных для моей системы.
Буду очень признателен за любую помощь.
С уважением
Общее уравнение окружности:
И все три точки будут удовлетворять этому уравнению.
Следовательно :
У вас есть три уравнения и три неизвестных . Решите их вместе, чтобы получить значения, и подставьте их в уравнение круга, чтобы получить его уравнение.
Я думаю, что вам нужна дуга окружности, проходящая через , имеющий радиус , а с «выпуклостью» дуги на стороне, противоположной .
Вот как это сделать:
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)
Вишну VS
Джон Хьюз
Вишну VS
Джон Хьюз