Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с математикой, Проблема с математикой 
:(
    Опции темы
Budy
Дата 9.4.2005, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург




:Прива
Полез сюда лишь потому что считаю, что каждый уважащий себя программист должен на отлично знать математику smile
Дак вот, надеюсь поможете.

Есть картинка (у кого нет, все равно пишу поподробнее):
--Resize_Images_Alt_Text--
Дано: Даны отрезок AB с указанными координатами концов и окружность с центром O и радиусом R, так же с указанными координатами центра.
Найти: Высоту H - расстояние OC от центра окружности O до прямой AB. Также найти координаты точки C и выяснить, будет ли лежать эта точка на отрезке AB.

Ну вот, такая вот легкая задачка smile
Заранее благодарю


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
dm9
Дата 9.4.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: 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
PM MAIL ICQ   Вверх
maxim1000
Дата 9.4.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев




что ли поупражняться smile
третий способ:
1. вычисляем площадь ABO: это - определитель матрицы из двух столбцов - координаты векторов OA и OB
2. высота - 2*S/AB
3. для определения попадания в треугольник достаточно проверить:
3.1.(AB,AO)<|AB|^2
3.2.(BA,BO)<|BO|^2
одна операция деления и никаких корней smile


--------------------
qqq
PM WWW   Вверх
dm9
Дата 9.4.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва




smile
5 баллов!

PM MAIL ICQ   Вверх
Budy
Дата 11.4.2005, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург




Спасибо. Счас посмотрю.


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.