Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
6 / 6 / 4
Регистрация: 16.11.2013
Сообщений: 134
1

Найти пересечение двух окружностей

25.04.2014, 21:54. Показов 7334. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объявить класс Circle, окружность, с открытыми свойствами двойной точности X и Y (координаты центра),
R (радиус). В классе должен быть конструктор с тремя параметрами: x, y, r и открытый метод bool IsIntersect(Circle other), который получает другую окружность, и оперделяет, пересекается ли окружность this с окружностью other (касание тоже считать пересечением).

понятно, что две окружности пересекаются, если расстояние между их центрами меньше суммы их радиусов.
Скажите мне, пожалуйста, что не так в моём решении?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Circle 
{
 
    public double X{get;set;}
    public double Y{get;set;}
    public double R{get;set;}
    
    public Circle(double x, double y, double r)
    {
        X = x;
        Y = y;
        R = r;
    }
 
    public bool IsIntersect(Circle other)
    {
        return Math.Sqrt(Math.Pow(other.X - this.X,2)+Math.Pow(other.Y-this.Y,2))<=(this.R+other.R);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2014, 21:54
Ответы с готовыми решениями:

Найти пересечение двух окружностей
Найти пересечение двух окружностей. Понятно, что две окружности пересекаются, если расстояние между...

Найти пересечение двух множеств и вывести данное пересечение и кол-во элементов в нем
Здравствуйте, помогите, пожалуйста, дорешать задачу. Условие: найти пересечение двух множеств и...

Пересечение окружностей и отрезка
Есть несколько окружностей(известны координаты центра и радиус) и отрезок(с координатами начала и...

Проверка на пересечение трёх окружностей
Не могу понять что не так делаю, вроде формула проверки правильная. private void...

6
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.04.2014, 22:29 2
А что смущает? Не так, скорее всего, операция сравнения двух double. Лучше вычислять разницу между ними и следить, чтобы эта разница была не больше заданной точности, скажем одной стотысячной
C#
1
2
3
4
5
6
public bool IsIntersect(Circle other)
{
    double dist = Math.Sqrt(Math.Pow(other.X - this.X,2)+Math.Pow(other.Y-this.Y,2));
    double D = this.R+other.R; 
    return Math.Abs(dist - D)<=1E-5;
}
0
6 / 6 / 4
Регистрация: 16.11.2013
Сообщений: 134
25.04.2014, 22:32  [ТС] 3
ViterAlex, а можете объяснить, что такое 1E-5?
А смущает то, что есть у моего преподователя своя программа, которая проверяет правильность решения, и в данном случае она пишет, что не правильно
0
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
25.04.2014, 22:32 4
ViterAlex, yo_krevedko, смущает то, что если одна окружность будет вложена в другую условие выполнится, но сами окружности, как кривые, пересекаться не будут.
0
6 / 6 / 4
Регистрация: 16.11.2013
Сообщений: 134
25.04.2014, 22:40  [ТС] 5
rRczZZ, Это смотря как понимать само слово "пересечение". Мне всегда казалось, что фигуры пересекаются, когда они имеют общие точки.
Если придерживаться вашей точки зрения, то как правильно было бы написать?
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
25.04.2014, 22:44 6
1E-5 = 10 в степени -5.
0
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
25.04.2014, 22:44 7
Лучший ответ Сообщение было отмечено yo_krevedko как решение

Решение

yo_krevedko, окружность, круг. В моем случае условие непересечения такое (нужно проверить, не варит голова):
r+R < d < R - r
где r, R - меньший и больший радиусы соответственно. d - расстояние между центрами.
1
25.04.2014, 22:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2014, 22:44
Помогаю со студенческими работами здесь

Найти пересечение двух множеств
В C# найти пересечение множеств, которые вводятся рендомно, и из этого пересечения вывести на экран...

Массив: Найти пересечение по элементам для двух входящих списков...
Добрый день. Не могу понять как реализовать задачу. Найти пересечение по элементам для двух...

движение двух окружностей
Помогите сделать так чтобы у меня двигались два эллипса!Один за курсором а вторая появлялась...

Пересечение двух множеств
Доброго времени суток, Господа. Вопрос в следующем. Как мне правильно сделать пересечение друх...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru