Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > нахождение точек с целыми координатами в сегменте


Автор: Hohhi 28.5.2007, 20:07
Привет всем! Я гтовлюсь к Молавскм экзаменам по информатике по школьному курсу. Вот решаю задачки потихоньку и дошёл до одной, пока идей нет. Вот условие:
рассмотрим круги с1и с2 определенные радиусами 1 и 2 соотвтетсвенно, а также декартоввыми координатами центров.Напишите программу, которая вычисляет, сколько точек с целочисленными координатами расположено внутри фигуры, образованный их пересечением
ВВод с клавы
Радиусы меньше 30, координаты от  50 до 100
вывод:количество
Помогите, если есть идея кидайте, листинг не обязателен

Автор: valedol 29.5.2007, 16:47
первое решение которое пришло в голову:
тупо пребрать все точки вложеным цилом и проверить входит ли эта точка в один круг, если да то вовторой?, если да то увеличиваем счетчик точек (провперять обычным уравнением окружности)

Автор: KuZyagroup 30.5.2007, 01:58
1.Находим две точки пересечения (x1,y1; x2,y2)
2. Далее рассмотрим семейство горизонтальных прямых типа y=k(k-целое), каждая из них либо 
  а) пересекают первый круг в двух точках (k>max(y1,y2)) 
  б) пересекают оба круга (max(y1,y2)>k>mix(y1,y2))
  в) пересекают второй круг в двух точках (mix(y1,y2)>k)
3. Для каждой пары точек (xk1,yk1), (xk2,yk2) посчитаем сколько точек с целочисленными координатами расположено между ними по формулe 
Код

Потолок(min(xk1,xk2))-[max(xk1,xk2)]


Где Потолок от Х - найменьшее целое  которое не меньше X
А [x] - целая часть от X от Х - найбольшее целое не привышающее X
Пример
Код

Число Потолок Целая часть
1.6 | 2 | 1
1.3 | 2 | 1
2    | 2 | 2

Если в твоей задачи точки ледащие на линиях тоже в счет то используй строгие неравенства


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)