Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 18
.NET 4.x

Условие нахождения точки в эллипсе и вне

25.09.2014, 21:41. Показов 3480. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Совсем запутался с координатами. На форме рисуется эллипс и точка.
C#
1
2
3
4
5
            
graf.DrawEllipse(Pens.Black,
    Ellipse_X = 0, Ellipse_Y = 0,
    2 * Ellipse_R1, 2 * Ellipse_R2);
graf.FillRectangle(Brushes.Black, 2*Point_X, 2*Point_Y, 3, 3);
С условием, когда точка находится в центре эллипса вроде бы всё понятно, реализовал следующим образом:
C#
1
2
3
4
5
6
7
8
9
 if (2 * Point_X == Ellipse_R1 && 2 * Point_Y == Ellipse_R2)
 {
 if (Point_Center != null) Point_Center();
Flag = 1;
}
else
{
 Flag = 0;
            }
А как реализовать ситуацию, когда точка находится вне эллипса, в эллипсе или на его границе?
Попробовал через стандартную школьную формулу:
C++
1
2
int rezult = Point_X ^ 2 / Ellipse_R1 ^ 2 + Point_Y ^ 2 / Ellipse_R2 ^ 2;
if (rezult < 1)
В итоге некорректно определяет координаты.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2014, 21:41
Ответы с готовыми решениями:

Закрасить все точки вне окружности
На изображение выводиться окружность с заданным радиусом и центром совпадающим с центром изображения. Все точки вне окружности необходимо...

Лежат ли точки на эллипсе? (точки заданы неточно)
Как я понимаю, эллипс однозначно задаётся пятью точками. Дано: Пять точек полилинии, которая, возможно, ранее являлась эллиптической...

Лежат ли 3 точки в эллипсе
Определите,лежат ли все три точки заданного множества к заданному эллипсу.

1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 01:17
Нужно воспользоваться тем, что сумма расстояний от точки до фокусов эллипса постоянна и равна удвоенной большой полуоси. Значит, нужно найти координаты фокусов. Для каждой точки считать сумму расстояний от неё до фокусов. Если сумма меньше удвоенной полуоси - точка внутри. Больше - снаружи. Равно - на границе
Примерно так это может выглядеть:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// <summary>
/// Функция для проверки принадлежности точки заданному эллипсу
/// </summary>
/// <param name="rect">Прямоугольник, ограничивающий эллипс</param>
/// <param name="pt">Точка, принадлежность которой проверяется</param>
/// <returns>Возвращает:
/// 0 — если точка лежит на границе эллипса;
/// 1 — если точка лежит внутри эллипса;
/// 2 — если точка лежит за пределами эллипса</returns>
byte IsPointInEllipse(RectangleF rect, PointF pt) {
    //Большая и малые полуоси
    float a = rect.Width / 2, b = rect.Height / 2;
    //Эксцентриситет
    float e = (float)Math.Sqrt(1 - b / a);
    //Фокальное расстояние
    float c = a * e;
    //Центр эллипса
    PointF center = new PointF(rect.X + a, rect.Y + b);
    //Фокусы
    PointF f1 = new PointF(center.X - c, center.Y), f2 = new PointF(center.X + c, center.Y);
    //Расстояния от точки до фокусов
    double d1 = Math.Sqrt(Math.Pow(f1.X - pt.X, 2) + Math.Pow(f1.Y - pt.Y, 2));
    double d2 = Math.Sqrt(Math.Pow(f2.X - pt.X, 2) + Math.Pow(f2.Y - pt.Y, 2));
    if (Math.Round(d1 + d2, 4) > Math.Round(2 * a, 4))
        return 2;
    else if (Math.Round(d1 + d2, 4) < Math.Round(2 * a, 4))
        return 1;
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2014, 01:17
Помогаю со студенческими работами здесь

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

А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от точки С
А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от точки С.

Условие вне action-а -- это ошибка?
Возникает ошибка если екшен обгорнуть в условие--вот так. if(isset($_COOKIE)==11) { public function actionLogin() ...

Нарисовать точки вне круга
Написать программу, которая выводила бы в графическом режиме на весь экран монитора, кроме круга с центром(200,200) и радиусом 80, случайно...

Если N находится вне массива, тогда возвращаем -1/ if не берёт условие в обработку
* Если число с индексом N находится вне массива, тогда выводим-1. /*Вам задан массив с положительными числами и числом N. * Вы...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru