Занимательная геометрия на Пакменах.

Apr 24, 2006 16:17




Печатается с незначительными сокращениями =)

MegaVolt (14:27) :
бля.. заебись задачка...
Fomka (14:28) :
какая?
MegaVolt (14:28) :
попросили написать софтину, которая бы считала объём жидкости в круглой ёмкости лежащей на боку.. (вводные данные - диаметр ёмкости, её длина и уровень жидкости)...
MegaVolt (14:28) :
афигеть.
Fomka (14:29) :
а что, неужели сложно?
MegaVolt (14:29) :
моего образования маловато для того... :-)
MegaVolt (14:29) :
ща пойду у яндекса спрашивать... :-)))
Fomka (14:30) :
просто формула нужна одна математическая, вот и всё =)
MegaVolt (14:30) :
поглумись мне! :-)))
Fomka (14:30) :
площадь круга, отрезанного по хорде
Fomka (14:30) :
я не глумлючсь
Fomka (14:30) :
это реально просто
Fomka (14:31) :
хочешь расскажу?
MegaVolt (14:33) :
м... давай... даже честно попытаюсь понять... :-)
Fomka (14:33) :
площадь круга - пи эр квадрат
MegaVolt (14:34) :
"пи" - знаю, "эр" - нет.... (помни, что я даж школу не заканчивал!!!) :-)
MegaVolt (14:34) :
или "эр" - это радиус?
Fomka (14:34) :
эр - это радиус =))) 1/2 диаметра
Fomka (14:37) :
площадь сектора - это та часть от площади круга, которую этот сектор вырезает.
то есть, нам надо знать угол, который ограничивает этот сектор. (грубо говоря - угол раззява рта у пакмэна =)
MegaVolt (14:38) :
м...
MegaVolt (14:38) :
чего-то у меня рот у пакмэна плохо ассоциируется с _жидкостью_...
Fomka (14:38) :
блин... это проще нарисовать =)
Fomka (14:39) :
представь, что пакман сдох и лежит ртом вверх =) :-D
MegaVolt (14:39) :
угук
Fomka (14:39) :
это как раз и будет твоя жидкость =)
Fomka (14:40) :
короче, бери в руки бумажку и нарисуй пакмана, дежащего ртом вверх =)
MegaVolt (14:40) :
ну, это круг, с вырезанным _треугольником_, а жидкость таковой быть не может! :-)
Fomka (14:41) :
ща, погодь... всё будет нормально ъ=)
Fomka (14:41) :
Пусть центр пакмана (центр круга, он же уголок рта) - это точка А.
обозначь на своём рисунке
MegaVolt (14:42) :
угук
Fomka (14:42) :
Пусть кончик его левой губы - это точка В, а правой губы - точка С
MegaVolt (14:42) :
ок
Fomka (14:42) :
Проведи линию ВС
MegaVolt (14:43) :
ок
Fomka (14:43) :
Площадь разреза воды - это площадь самого пакмана + площадь треугольника АВС. Это понятно?
MegaVolt (14:44) :
*скрипит мозгами* (остатками)...
MegaVolt (14:45) :
ну, это будет площадь всего круга, а не разреза воды... или я опять туплю...
Fomka (14:45) :
ты тупишь =) линия ВС должна быть прямой =)
MegaVolt (14:46) :
она прямая.
Fomka (14:46) :
а весь круг - это если ВС - дуга
MegaVolt (14:47) :
м... может я пакмэну рот маловато открыл... :-) разница у меня на глаз практически не заметна... :-)
Fomka (14:47) :
открой пошире... представь, что он собирается глотать точку =)
MegaVolt (14:47) :
:-)
Fomka (14:47) :
ок?
MegaVolt (14:47) :
ок
Fomka (14:48) :
в общем, продолжаем - нам надо найти площадь пакмена + площадь треугольника АВС. ясно? =)
MegaVolt (14:49) :
угук
Fomka (14:49) :
Площадь Пакмена - это площадь всего круга минус площадь того сектора, которого не хватает ("площадь открытого рта").
Fomka (14:50) :
Нам надо найти угол раззява рта пакмена.
Fomka (14:51) :
достроим наш рисунок. Проведи вертикальную прямую, разрезающую пакмена ровно пополам =)
MegaVolt (14:52) :
угук
Fomka (14:52) :
Обозначь за D точку пересечения этой вертикальной прямой с прямой ВС
Fomka (14:53) :
Получилось, что угол BDА - прямой угол (90 градусов). Угол CDA - тоже.
MegaVolt (14:53) :
угук. получилось 2 треугольника.
MegaVolt (14:53) :
да
Fomka (14:53) :
оба треугольника - прямоугольные
Fomka (14:53) :
Тебе нужно найти угол ВАС
Fomka (14:54) :
Треугольники одинаковые, так что углы BAD и DAC равны
Fomka (14:54) :
Так что достаточно найти угол BAD, например.
Fomka (14:55) :
Обозначь за E точку пересечения твоей вертикальной прямой с жопой пакмена
Fomka (14:56) :
DE - это высота подъёма воды, она дана в условии. Пока понятно? =)
MegaVolt (14:56) :
угук
MegaVolt (14:56) :
теперь стало понятно... :-)
Fomka (14:57) :
DE = DA + AE
AE - это радиус, он тоже дан (половина диаметра).
Так что DA тебе известно. (высота подъёма воды минус радиус)
Fomka (14:58) :
Заметим, что BA - это тоже радиус =)
MegaVolt (14:59) :
угук... блин, как всё сложно... :-)
Fomka (15:00) :
По правилам тригонометрии в прямоугольных треугольниках, синус угла BAD - это отношение AD к AB.
То есть, сам угол - это арксинус.
Fomka (15:00) :
не загрузило? =)
MegaVolt (15:01) :
угук... чем дальше в лес, тем толще партизаны... до этого было всё понятно!.. :-))))
Fomka (15:01) :
сейчас тоже ничего сложного =) арксинус - это стандартная функция =)
MegaVolt (15:01) :
я это знаю, что это стандартная функция...
MegaVolt (15:02) :
меня больше напрягло слово "отношение к"... может дальше пойму из контекста...
Fomka (15:02) :
отношение - это деление =)
MegaVolt (15:03) :
ок :-)
Fomka (15:02) :
Итак, твой угол - это arcsin(AD/AB)
Fomka (15:04) :
Мы нашли угол BAD - половину угла раззява рта пакмена =)
MegaVolt (15:05) :
угук. теперь вроде *2 :-)
MegaVolt (15:05) :
ибо они равны
Fomka (15:05) :
Угу =) Соответственно, весь раззяв - *2
Fomka (15:06) :
Полный оборот круга - это 2*pi.
А наш раззяв (угол BAC) - мы только что нашли.
MegaVolt (15:06) :
м..
MegaVolt (15:06) :
"Полный оборот круга - это 2*pi" - совершенно не впитал... "полный оборот" - это что?
Fomka (15:07) :
Полный оборот - это угол всего круга.
360 градусов. Или 2 pi (что то же самое, но в радианах =)
Это то, что будет если пакмен закроет рот.
MegaVolt (15:08) :
а. всё. дошло :-)
Fomka (15:08) :
Соответственно, площадь самого пакмена - это площадь всего круга делить на (2*pi) и умножить на (2*pi - угол BAC)
Fomka (15:11)
итак, мы нашли площадь пакмена =) теперь нам осталось найти площадь клина, вбиттого к нему в рот =)
(то есть, треугольника ABC)
MegaVolt (15:12) :
аххххааааа... теперь до меня начинает доходить смысл всего того!!!..... :-))
Fomka (15:12) :
гыть =)
Fomka (15:13) :
площадь треугольника ABC - это площадь треугольника ABD + площадь треугольника CAD (и эти треугольники равны).
Значит, нам достаточно найти площадь любого из них.
MegaVolt (15:14) :
угук
Fomka (15:14) :
Будем искать, например, площадь ABD
теорему Пифагора помнишь?
MegaVolt (15:15) :
помню только "есть такая теорема" :-))
Fomka (15:15) :
это про прямоугольные треугольники =) Сумма квадратов катетов равна квадрату гипотенузы.
MegaVolt (15:16) :
угук...
Fomka (15:16) :
В треугольнике ABD у нас BD и AD - катеты, а AB - гипотенуза
Fomka (15:17) :
Соответственно, мы знаем AB и AD - можем по теореме Пифагора найти BD
Fomka (15:18) :
BD=sqrt(AB^2 - AD^2)
Fomka (15:18) :
Ясно пока?
MegaVolt (15:18) :
угу
Fomka (15:19) :
площадь прямоугольного треугольника - это половина произведения катетов. То есть, BD*AD/2
MegaVolt (15:20) :
угук
Fomka (15:20) :
Итак, мы нашли площадь треугольника ABD. Значит, площадь нужного нам ABC - это площадь ABD *2
Fomka (15:20) :
Ура! Мы нашли площадь пакмана, по горло залитого водой.
MegaVolt (15:20) :
:-))))
MegaVolt (15:20) :
по пасть, точнее... :-)
Fomka (15:21) :
ну да =) по самые губы
Fomka (15:21) :
Теперь, наша бочка - это множество таких пакманов в ряд =)
Не вдаваясь в теорию интегрирования, просто скажу, что надо найденную площадь умножить на длину бочки (она дана)
Fomka (15:22) :
Тогда получим объём воды в бочке
Fomka (15:22) :
усё!
Fomka (15:22) :
занимательная геометрия на пакманах =)
MegaVolt (15:22) :
:-))))
Fomka (15:22) :
Если усёк - можешь писать программу =) Там не такая и сложная формула получилась
MegaVolt (15:23) :
да... сейчас смотрю, что получится, если жидкости _меньше_ половины... пытаюсь это нарисовать...
Fomka (15:24) :
Если меньше половины - то нам нужна та часть круга, что осталось над пакманом =)
Просто вычесть из площади полного круга найденную площадь "залитого пакмана".
MegaVolt (15:25) :
а... теперь дошло...
MegaVolt (15:25) :
вах, 10х тебе большой...
MegaVolt (15:25) :
хуть понял, что ещё что-то до меня дойти может... :-)))
Fomka (15:26) :
ага, пожалуйста =)
Если жидкости меньше половины - там немного по другому высота вычисляется... ну да ты поймёшь =)
MegaVolt (15:26) :
только убейте меня, но не пойму, КАК ЭТО МОЖНО ПОМНИТЬ?!!
Fomka (15:26) :
а это элементарная геометрия... я ничего не использовал, кроме площади круга, теоремы пифагора и определения синуса =)
MegaVolt (15:27) :
дыкть даже такое запомнить, имхо, без шансов... :-))))
Fomka (15:28) :
ну это кому как =)
MegaVolt (15:28) :
:-)
MegaVolt (15:28) :
ок, ещё раз тебе пасиб!
Previous post Next post
Up