Re: Код возврата и геометрия :)
От: vadimcher  
Дата: 19.03.09 23:13
Оценка: 12 (1)
Здравствуйте, Iso, Вы писали:

Iso>Идеальная программа всегда имеет код возврата OK, потому что всегда работает правильно (при этом она, к сожалению, почти не встречается).

Iso>Хорошая программа имеет код возврата OK, если справилась с задачей, а ERR, если не справилась.

Iso>А желаемый компромис такой: если справилась, то OK, а иначе — подробная диагностика: почему не вышло, на каком этапе пошли косяки и так далее. Причём, хочется это всё получить одним числом, как обычно


Iso>Что характерно, такое бывает не только в программировании, но и в жизни. Следующая задачка по геометрии прикольна тем, что разные люди дают разные ответы И настаивают на них. А самое смешное, что по ответу можно весьма точно указать на ошибку. Поэтому данная задачка является образцом и примером "эталонной изящной геометрической задачки"


Iso>Итак, сама задача:


Iso>Два одинаковых конуса с равносторонними треугольниками со стороной 1 в осевых сечениях лежат на плоскости (т.е. в плоскости находится вершина каждого конуса, ровно одна точка с окружности и отрезок между ними). При этом конусы касаются друг друга так, что их вершины совпадают. Надо найти расстояние от плоскости до самой далёкой точки касания одного конуса другим.


Iso>Пожалуйста, не пишите здесь решение, чтобы не лишать других удовольствия справиться самостоятельно.


Да уж, задачка с кучей подводных камней. Сначала кажется, что точка касания "в силу симметрии" на расстоянии 1/2, затем хочется как-то сопоставить точку касания конусов или ее проекцию на плоскость, а также точки касания конусов с плоскостью и их центры оснований между собой -- тоже ни к чему хорошему не приводит.

Возникает простая картинка: приподнимем оба конуса за вершину над плоскостью так, чтобы их оси оказались параллельны плоскости. Теперь действительно в силу симметрии расстояние от точки касания до плоскости равно одной второй. Начнем теперь изменять угол плоскости так, чтобы конусы по-прежнему касались плоскости своими основаниями, а их общая вершина становилась все ближе к плоскости. Т.е. вместо того, чтобы класть вершины конусов на плоскость, мы оставляем их в зафиксированном положении и "поднимаем" плоскость с одной стороны. Сконцентрируемся на трех точках. Одна -- интересующая нас точка касания конусов M. Две другие -- точки A и B касания оснований конусов и плоскости. Изначально точки A и B -- проекции центров оснований конусов на плоскость, так как мы установили плоскость параллельно осям конусов. Сами основания находятся под каким-то углом друг к другу и перпендикулярны плоскости. Т.е. проекция точки M на плоскость и точки A и B образуют треугольник на плоскости. Поворот плоскости мы осуществляем вокруг прямой AB, т.к. нам надо, чтобы конусы продолжали касаться плоскости. Т.е. мы как бы поворачиваем треугольник ABM. При таком повороте, проекция точки M на плоскость сначала приблизится к отрезку AB, затем пересечет его и уедет с обратной стороны. В тот момент когда проекция точки M падает на AB, расстояние от M до плоскости наибольшее. Т.е. что происходит с расстоянием. Изначально 1/2, затем увеличивается до какого-то значения, которое можно, в принципе посчитать, оно равно высоте треугольника 1/sqrt(2), 1/sqrt(2), sqrt(3)/2, т.е. равно sqrt(5)/4, а затем обратно уменьшается. Так? Нет, не так. Оказывается, что при повороте плоскости точки касания меняют расстояние! Т.е. это уже не точки A и B. Проще всего это понять, если представить только два сцепленных основания (такие "очки" с погнутой душкой нулевой длины). Изначально душка на расстоянии 1/2 от плоскости. Теперь, когда мы изменяем угол плоскости, это тоже самое, что "покатить" очки по плоскости, при этом обе точки касания изменятся, они разъедутся.

Можно было бы в начальном положении накрыть конусы другой плоскостью с противоположной стороны так, что изначально обе параллельны осям конусов (и параллельны друг другу). Теперь наклоняем обе плоскости одновременно к вершине. В итоге получится симметричная картинка. Симметричная-то симметричная, но если соединить точки касания одного основания с двумя плоскостями, то такой отрезок не будет диаметром (как раз из-за того эффекта "катания очков", описанного выше, т.к. изначально это диаметр, а при изменении угла плоскостей, точки уезжают, причем симметрично).

Таким образом, ничего существенно полезного это не дает, зато помогает понять большинство ошибок ложных рассуждений.

Вот так это выглядит (на правом основании показаны точки касания основания и двух плоскостей, отрезок между ними и центр основания):
http://files.rsdn.org/53829/2cones.jpg

А вот зайца кому, зайца-выбегайца?!
http://files.rsdn.org/53829/avotzaitsakomu_sale.png
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.