![]() |
|
Модераторы: LSD |
![]()
|
|
| Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург |
:Прива
Полез сюда лишь потому что считаю, что каждый уважащий себя программист должен на отлично знать математику Дак вот, надеюсь поможете. Есть картинка (у кого нет, все равно пишу поподробнее): ![]() Дано: Даны отрезок AB с указанными координатами концов и окружность с центром O и радиусом R, так же с указанными координатами центра. Найти: Высоту H - расстояние OC от центра окружности O до прямой AB. Также найти координаты точки C и выяснить, будет ли лежать эта точка на отрезке AB. Ну вот, такая вот легкая задачка Заранее благодарю -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва |
Эээ, а в чём пролема?
Точка A: (ax, ay); Точка B: (bx, by); Точка O: (ox, oy); Точка C: (cx, cy); R - радиус. Высота H = OC = ? Площадь треугольника H = AO * Sin(BAO). Sin(BAO) = КОРЕНЬ (1 - Cos^2(BAO)) = КОРЕНЬ {1 - [(AB^2 + AO^2 - OB^2)/(2 * AB * AO)]^2}. Получаем: H = AO * КОРЕНЬ {1 - [(AB^2 + AO^2 - OB^2)/(2 * AB * AO)]^2} Всё, справа только величины AB, AO, OB, которые находятся по теореме Пифагора: AO = КОРЕНЬ [(ax-ox)^2 + (ay-oy)^2]. AB = ... OB = ... Это был первый способ... Второй способ, в котором мы заодно найдём координаты точки C: Наклон прямой AB: k = (ay-by)/(ax-bx). Наклон перпендикулярой ей высоты H: k' = - 1/k = - (ax-bx)/(ay-by). Уравнение прямой OC: y = k' * x + b. Надо найти b. Точка О лежит на прямой => oy = k' * ox + b = - (ax-bx)/(ay-by)*ox + b. => b = oy + (ax-bx)/(ay-by)*ox. Получили уравнение. y = - (ax-bx)/(ay-by)*ox + oy + (ax-bx)/(ay-by)*ox Аналогично получаем уравнение прямой AB (k уже есть, осталось найти для неё коэффициент b). Имеем две прямые AB: y = k * x + b (b сам найдёшь по аналогии) OC: y = - (ay-by)/(ax-bx)*x + oy + (ax-bx)/(ay-by)*ox Приравнвая правые части, найдёшь точку пересечения... Это будет точка С. Всё, потом высоту можешь найти как расстояние между О и С по теореме Пифагора... Блин, хочу LateX'a!!! Это сообщение отредактировал(а) dm9 - 9.4.2005, 16:29 |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев |
что ли поупражняться
третий способ: 1. вычисляем площадь ABO: это - определитель матрицы из двух столбцов - координаты векторов OA и OB 2. высота - 2*S/AB 3. для определения попадания в треугольник достаточно проверить: 3.1.(AB,AO)<|AB|^2 3.2.(BA,BO)<|BO|^2 одна операция деления и никаких корней -------------------- qqq |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва |
5 баллов! |
|||
|
||||
| Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург |
Спасибо. Счас посмотрю.
-------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |