Помогите подобрать контр-тест к решению задачи на геометрию в вещественных числах

Revision ru7, by dmkozyrev, 2018-08-06 23:45:46

Здравствуйте! Есть задача на acmp и решение в вещественных числах с использованием типа double.

Дан радиус окружности и даны прямые, заданные двумя точками, точки могут лежать как внутри круга, так и на окружности, требуется проверить для каждой пары прямых, лежит ли точка пересечения внутри круга, на нем или снаружи. Во входных данных все числа вещественные и могут быть заданы с 6-тью знаками после запятой, их абсолютные величины не превосходят 100, то есть, нужно 8 разрядов для точного представления.

В ходе решения при пересечении прямых возникают числа, в которых 16 разрядов, а также происходит их деление, в связи с этим есть ощущение, что точности типа double не хватает. Судя по всему, контр-тест должен содержать ровно две прямые, которые пересекаются очень близко к окружности, или пересекаются прямо на окружности. Я попробовал построить пересечение в точке (99.999999, 0.014142) с радиусом 100, тогда разность радиус-вектора точки и радиуса окружности будет порядка 3.835·10 - 9, с чем благополучно справляется тип double.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru7 Russian dmkozyrev 2018-08-06 23:45:46 23 Мелкая правка: 'е решения возникают' -> 'е решения при пересечении прямых возникают'
ru6 Russian dmkozyrev 2018-08-06 23:45:12 8 Мелкая правка: 'утри круга или снару' -> 'утри круга, на нем или снару'
ru5 Russian dmkozyrev 2018-08-06 23:44:22 326
ru4 Russian dmkozyrev 2018-08-06 23:43:16 223
ru3 Russian dmkozyrev 2018-08-06 23:37:29 13 Мелкая правка: 'дка $3.835E-9$, с чем б' -> 'дка $3.835 \cdot 10^{-9}$, с чем б'
ru2 Russian dmkozyrev 2018-08-06 23:36:59 2 Мелкая правка: 'дка $3.835e-9$, с чем' -> 'дка $3.835E-9$, с чем'
ru1 Russian dmkozyrev 2018-08-06 23:36:37 915 Первая редакция (опубликовано)