Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизТреугольник и центр Найти похожие ветки
← →
ЧупаЧупс (2004-05-02 20:29) [0]Есть треугольник, известны координаты вершин, как узнать координату центра треугольника?
← →
Vit@ly © (2004-05-02 20:36) [1]Смотря, что назвать центром?
- цетр тяжести
- центр вписанной окружности
- центр описанной окружности
и т.д. и т.п.
← →
ЧупаЧупс (2004-05-02 20:41) [2]вписаной и описаной
← →
Jack128 © (2004-05-02 20:43) [3]Вообще учебник геометрии класс так за 8 может помочь в твокей проблеме, не говоря уже о Яндексе и тому подобных ;-)
← →
mfender © (2004-05-02 20:55) [4]Трэбуется провести хорды (кажись так они называются - пардон, в математике не силен) от вершин. Точка их пересечения будет-таки центром.
← →
Jack128 © (2004-05-02 20:59) [5]
> Трэбуется провести хорды
хорда - отрезок, соединяющий две точки на окружности, то что ты имеешь в ввиду называется медианами(отрезок. соединяющий вершину и центр противоположной стороны), но точка пересечения медиан - это
> - цетр тяжести
, автору другое нужно..
← →
Телипат проснулся на мгновение (2004-05-02 21:04) [6]Тогда точка пересечения биссектрисс
← →
SergP © (2004-05-02 21:10) [7]>ЧупаЧупс (02.05.04 20:41)
>вписаной и описаной
Центры вписанной и обписаной окружностей - это разные вещи. Определись конкретнее что тебе нужно...
← →
Юрий Зотов © (2004-05-02 21:20) [8]> Определись конкретнее что тебе нужно...
Очередной развод затеять ему нужно, неужели непонятно? Еще один умник выискался, блин...
← →
Romkin © (2004-05-02 21:25) [9]Центр описанной окружности лежит на пересечении серединных перпендикуляров к сторонам (следует из теоремы, что радиус окружности перпендикулярен ее хорде и делит ее пополам).
А центр вписанной - на пересечении биссектрис, это сложнее. (Опять же, следует из теоремы о вписанном угле, он равен половине центрального, или половине дуги, на которую опирается).
Все это есть в школьном учебнике геометрии. Другое дело, что геометрия там весьма однобоко описана, и аналитики практически нет. Например, как не построить, а вычислить срединный перпендикуляр к отрезку, там не написано.
Но интернет-то есть :) И найти там требуемое очень легко, например здесь http://algolist.manual.ru/maths/geom/index.php
А остальное - на гугле :))
← →
SergP © (2004-05-02 21:38) [10]>Например, как не построить, а вычислить срединный перпендикуляр к
>отрезку, там не написано.
А что значит вычислить?
если найти уравнение прямой которая будет являться серединным перпендикуляром, то можно и подумать вручную:
Получаем:
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2
где x1,y1 - координаты одного конца отрезка, а x2,y2 - другого
← →
Romkin © (2004-05-02 21:47) [11]SergP © (02.05.04 21:38) [10] Ну-ну, ты это школьнику скажи. Он просто уравнение это не поймет :) А ведь еще пересечение искать надо.
PS. Кстати, верно ли написано - я навскидку сказать не могу :(
← →
SergP © (2004-05-02 21:55) [12]>Romkin © (02.05.04 21:47)
>PS. Кстати, верно ли написано - я навскидку сказать не могу :(
элементарно.. если рассматривать что-то в пределах плоскости, то прямая - это совокупность точек равноудаленных от двух других, которые и являются концами отрезка, верединным перпендикуляром к которому и будет являтся наша прямая.
Так что мое уравнение очевидно. (я приравниваю друг к другу оба расстояния)
кстати не нужно пугаться квадратов. Если внимательно посмотреть, то окажется что это простое линейное уравнение.
А найти пересечение:
решаем систему:
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2
(X-X1)^2+(Y-Y1)^2=(X-X3)^2+(Y-Y3)^2
и никаких проблем...
← →
SergP © (2004-05-02 21:59) [13]>(я приравниваю друг к другу оба расстояния)
Немного ошибся. Вернее квадраты расстояний...
← →
Romkin © (2004-05-02 22:10) [14]То, что линейное - это видно :))
А мой PS вызван ассоциацией с анекдотом:
Профессор читает лекцию по математике. Выписывает на доске длиннющую, совершенно необозримую формулу и заявив: "Отсюда с очевидностью следует..." выписывает еще более громоздкую формулу. На минуту задумывается, потом, извинившись, выходит из аудитории. Примерно через полчаса возвращается и, небрежно бросив на кафедру кипу исписанной бумаги, заявляет: "Да, это действительно очевидно" и продолжает лекцию.
← →
default © (2004-05-02 22:12) [15]Romkin © (02.05.04 21:47) [11]
у меня такое получилось
y=((x1-x2)/(y2-y1))*x+((y1+y2)/2)-(x1^2-x2^2)/(y2-y1)
← →
SergP © (2004-05-02 22:28) [16]>default © (02.05.04 22:12)
>Romkin © (02.05.04 21:47) [11]
>у меня такое получилось
>y=((x1-x2)/(y2-y1))*x+((y1+y2)/2)-(x1^2-x2^2)/(y2-y1)
Ну правильно... Преобразовываем
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2
и получим то что у тебя...
>А мой PS вызван ассоциацией с анекдотом:
Моя запись этого уравнения должна понятно отображать геометрический смысл серединного перпендикуляра. Так что анекдот тут не совсем к месту..., так как это действительно очевидно...
← →
Romkin © (2004-05-02 22:42) [17]SergP © (02.05.04 22:28) [16] Ж-) К месту. То, что очевидно для тебя, необязательно очевидно для другого ;)
default © (02.05.04 22:12) [15] И хорошо, что получилось. Вот только маленькое примечание: программа - не человек, и написать формулу - полдела. Например, программа должна найти центр, например, для треугольника (0,0), (2,0), (0,1). А мне кажется, что формула в виде y=f(x) здесь не слишком удобно, ибо может выродиться....
Могу сказать только одно: уравнения перпендикуляров здесь удобнее
записывать в каноническом виде, Ax + By = -C например. При этом координаты центра описанной окружности получаются решением системы из двух уравнений. И, очевидно (!), в функции можно, сделав преобразования, записать две формулы вида Xr = f(X1,Y1,X2,Y2,X3,Y3) Yr = f(X1,Y1,X2,Y2,X3,Y3). Думаю, обозначения понятны.
Проверка нужна одна: являются ли введенные точки треугольником (не лежат на одной прямой).
Вот только... Все, что написано, выходит за рамки школьной программы, я не думаю, что ее расширили, с тех пор как я учился.
← →
Romkin © (2004-05-02 22:50) [18]SergP Так вот, я хотел спросить, так ли уж очевидно, что хорошая функция нахождения центра описанной окружности должна выглядеть примерно так:
function OuterCircleCenter(Point1, Point2, Point3: TPoint): TPoint;
begin
CheckTriangle(Point1, Point2, Point3);
Result.X := {Длинная формула};
Result.Y := {Еще одна длинная формула};
end;
Для меня это очевидно, но мне почему-то кажется, что найдется много программистов, у которых она будет выглядеть иначе ;)
Так же и с математикой: "Моя запись этого уравнения должна понятно отображать геометрический смысл серединного перпендикуляра." Увы, я бы долго и нудно выводил ЭТО через "уравнение перпендикуляра к данной прямой, проходящего через данную точку" :)))
← →
SergP © (2004-05-02 22:58) [19]Romkin © (02.05.04 22:50)
Это уже не очевидно. По крайней мере не совсем очевидно.
Но ведь я сказал что серединный перпендикуляр - это совокупность точек равноудаленных от обоих концов отрезка.
Т.е. Расстояние между точками (x,y) и (x1,y1) равно расстоянию между точками (x,y) и (x2,y2). Где x,y координаты любой точки искомой прямой.
вот и получаем (приравнивая квадраты обоих расстояний)
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2
Если это не очевидно, то к чему тогда можно применить термин "очевидно" ?
← →
SergP © (2004-05-02 23:01) [20]>Увы, я бы долго и нудно выводил ЭТО через "уравнение перпендикуляра к данной прямой, проходящего через данную точку" :)))
В таком случае действительно было бы не очевидно. Но зачем все усложнять?
← →
default © (2004-05-02 23:43) [21]Romkin © (02.05.04 22:42) [17]
"Проверка нужна одна: являются ли введенные точки треугольником (не лежат на одной прямой)."
нужно чтобы сумма длин любых двух сторон была больше длины оставшейся стороны(Ваше условие входит в это)
← →
SergP © (2004-05-02 23:58) [22]default © (02.05.04 23:43)
Если определитель:
| x1 y1 1 |
| x2 y2 1 |
| x3 y3 1 |
не равен нулю, то это треугольник.
На этот раз не буду говорить что это очевидно, а то не поверят... :-)))
← →
SergP © (2004-05-03 00:03) [23]Кстати заодно можно найти :
| z1 y1 1 |
| z2 y2 1 |
| z3 y3 1 |
и
| x1 z1 1 |
| x2 z2 1 |
| x3 z3 1 |
где Zn=(Xn^2+Yn^2)/2
Тогда сразу найдем и координаты центра описанной окружности.
X=O1/O
Y=O2/O
Где O - определитель вычисленный в SergP © (02.05.04 23:58)
А O1 и O2 соответственно первый и второй в этом посте.
← →
SergP © (2004-05-03 00:12) [24]z1:=(x1*x1+y1*y1)/2;
z2:=(x2*x2+y2*y2)/2;
z3:=(x3*x3+y3*y3)/2;
op := x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);
op1:= z1*(y2-y3)+z2*(y3-y1)+z3*(y1-y2);
op2:= x1*(z2-z3)+x2*(z3-z1)+x3*(z1-z2);
Теперь если op=0 то наша фигня - не треугольник
иначе
x:=op1/op;
y:=op2/op;
← →
Romkin © (2004-05-03 15:43) [25]Великолепно :)))
А для вписанной окружности?
Лемма: суммарный вектор для двух одинаковой длины идет, очевидно, по биссектрисе ;)
← →
RealRascal © (2004-05-03 16:54) [26]лень все полностью читать, так что возможно не в тему.
xc:=(x1+x2+x3)/3
yc:=(y1+y2+y3)/3
zc:=(z1+z2+z3)/3
Я не помню, какой именно это центр, но точно один из центров :)
← →
SergP © (2004-05-03 18:04) [27]>Romkin © (03.05.04 15:43)
>Великолепно :)))
>А для вписанной окружности?
Только что прочитал пост и решил попробовать. К сожалению ход получающегося у меня решения мне не очень нравится... (как-то некрасиво что-ли). а я не люблю некрасивые решения...
>Лемма: суммарный вектор для двух одинаковой длины идет, очевидно, по
>биссектрисе ;)
Ну это очевидней очевидного... Так что смайлик в конце не обязательно было ставить...
← →
SergP © (2004-05-03 18:12) [28]>RealRascal © (03.05.04 16:54)
>лень все полностью читать, так что возможно не в тему.
>xc:=(x1+x2+x3)/3
>yc:=(y1+y2+y3)/3
>zc:=(z1+z2+z3)/3
>Я не помню, какой именно это центр, но точно один из центров :)
ИМХО это точка пересечения медиан
← →
Vit@ly © (2004-05-03 18:14) [29]Ну чо мы испражняемся. Автор не появляется с:
ЧупаЧупс (02.05.04 20:41) [2]
Просьба к модераторам - закрыть эту ветку, тем более, что геометрию пока никто не отменял.
С уважением
← →
ISP © (2004-05-03 18:40) [30]Но вот, испугали автора....
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.04 c