Форум: "Потрепаться";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
ВнизКоординаты окружности Найти похожие ветки
← →
LongIsland (2003-01-04 14:03) [0]Кто-нибудь знает, как определить координаты центра вписанной в треугольник окружности, если известны координаты его вершин? Как на зло ни одного спавочника под рукой:О(
ЗЫ: А лет пять назад такой вопрос у меня и не возник бы. Ну ФСЁ забыл:(
← →
MBo (2003-01-04 14:36) [1]центр этой окружности есть пересечение биссектрис (достаточно двух)
← →
LongIsland (2003-01-04 14:39) [2]
> MBo © (04.01.03 14:36)
Это я, к счастью, еще не забыл:-) Меня интересует, как определить именно координаты центра
← →
MBo (2003-01-04 14:39) [3]P.S. наверно, удобно для получения уравнения биссектрисы использовать тот факт, что она делит сторону треугольника на отрезки, пропорциональные двум другим сторонам. Сa/a=Cb/b
← →
MBo (2003-01-04 14:39) [4]именно координаты центра
точка пересечения двух прямых - система лин. уравнений
← →
LongIsland (2003-01-04 14:59) [5]Однако, я выкрутился проще:-)
← →
Alx2 (2003-01-04 15:07) [6]>LongIsland © (04.01.03 14:39)
x1,y1
x2,y2
x3,y3 - Вершины.
x0,y0 - центр.
Имхо
y0=(L23*y1+L13*y2+L12*y3)/(L23+L13+L12)
x0=(L23*x1+L13*x2+L12*x3)/(L23+L13+L12)
Где
L23 - длина стороны (x2,y2) (x3,y3)
L13 - длина стороны (x1,y1) (x3,y3)
L12 - длина стороны (x1,y1) (x2,y2)
Посчитал навскидку. Может, где-то и налажал :)
← →
LongIsland (2003-01-04 15:22) [7]
> Alx2 © (04.01.03 15:07)
Налажал:-)
← →
Alx2 (2003-01-04 15:25) [8]>LongIsland © (04.01.03 15:22)
Ну вот :(
Ну и фиг с ним... Рутинно перепроверять :)
← →
LongIsland (2003-01-04 15:36) [9]Ладно, на досуге сделаю, сюда выложу.
То, чё надо уже сделал:-)
← →
Alx2 (2003-01-04 16:47) [10]И все-таки я, скорее, не нагнал :)
← →
LongIsland (2003-01-04 22:05) [11]
> Alx2 © (04.01.03 16:47)
> И все-таки я, скорее, не нагнал :)
А я все-таки скорее проверил:-) Ладно, не важно:-)
← →
Alx2 (2003-01-05 07:48) [12]>LongIsland © (04.01.03 22:05)
>А я все-таки скорее проверил:-) Ладно, не важно:-)
Та-а-а-к. Это уже дело принципа :))
Все-таки проверил и я.
Вот пример для проверки:
A,B,C : TPoint; - вершины треугольника
with Canvas do
begin
MoveTo(A.x, A.y); // Рисуем клятый треугольник
LineTo(B.X, B.Y);
LineTo(C.X, C.Y);
LineTo(A.x, A.y);
L12 := sqrt(sqr(A.X - B.X) + sqr(A.Y - B.Y)); // Находим длины сторон
L23 := sqrt(sqr(B.X - C.X) + sqr(B.Y - C.Y));
L13 := sqrt(sqr(C.X - A.X) + sqr(C.Y - A.Y));
y0 := (L23 * A.y + L13 * B.y + L12 * C.y) / (L23 + L13 + L12); // Находим координаты центра вписанной окружности
x0 := (L23 * A.x + L13 * B.x + L12 * C.x) / (L23 + L13 + L12);
R := (B.x*A.y+A.x*y0-A.y*x0-B.x*y0-B.y*A.x+B.y*x0)/sqrt(sqr(A.X-B.x)+sqr(A.Y-B.y)); // Находим радиус вписанной окружности
Ellipse(Round(x0-R),Round(y0-R),Round(x0+R),Round(y0+R)); // Рисуем вписанную окружность
end;
Все красиво рисуется :)
Так-что ты чего-то при проверке неправильно сделал.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c