Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 19:15   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию Математика. Попала ли точка в эллипс. Где я туплю?

Всем доброго.
Заинтересовала меня задачка одна.
Приблизительно звучит так "Узнать попадает ли точка в Эллипс"
Сразу предупреждаю, в математике я Zero.

Прежде всего я в Вики выяснил параметрическую формулу эллипса
Цитата:
x=a*cos(Alpha);
y=b*sin(Alpha);
Я правильно понял что Alpha тут одно и то же число? Думаю правильно.
Таким образом я строю Эллипс - это нормально. Центр эллипса предположим в нулевых координатах

Теперь я хочу выяснить попала ли точка (50,11) в этот эллипс
где:
a=50; b=30;

Кто тут из математиков направьте в сторону истины (смысл в том чтоб написать программу, которая будет определять попадание точки в эллипс)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 19:34   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Подставляем и проверяем.
Код:
If (Sqr(X) / Sqr(A) + Sqr(Y) / Sqr(B) > 1) Then Мы покинули эллипс!
Код:
If (Sqr(X) / Sqr(A) + Sqr(Y) / Sqr(B) = 1) Then Спасите, нас сожрал край эллипса!
Код:
If (Sqr(X) / Sqr(A) + Sqr(Y) / Sqr(B) < 1) Then Ололо, мы внутри!
P.S. В начале осени сдавал матан по аналгеометрии
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 05.11.2010 в 19:37.
Alex Cones вне форума Ответить с цитированием
Старый 05.11.2010, 19:49   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пипец... Я не в ту степь пошел...
Знал же что все проще простого но упрямо как баран пытался в другой формулой работать...
Спасибо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 19:54   #4
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Бывает, я сегодня пол-дня искал глюк. А нужно то было одну букву в названии переменной поменять. Чуть с ума не сошел )
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 05.11.2010, 20:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Стоп ребята!
Я об одном втыке забыл. пока это разруливал забыл про одну важную часть условия
Цитата:
Функция fi (x; у) задаёт эллипс, но центр этого эллипса смещен в правую верхнюю часть координатной плоскости и повернут относительно горизонтальной оси на некоторый угол против часовой стрелки.
Именно из-за этого я и копал в сторону той формулы что в топике...
Как в этом случае быть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 20:20   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ну вот и попробуйте покрутить в сторону первой формулы:
Код:
If (x<a*cos(Alpha)) And
(y<b*sin(Alpha)) then ...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.11.2010, 20:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Крутил. Докрутился до точки.
Alpha то не известен... Или ты имеешь ввиду в цикле пройти от 0 до 2PI и проверить условие?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 20:44   #8
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

ох.. забыл я линейную алгебру. Вообще, математически, проще повернуть систему координат так, что бы нам удобно было работать (в нашем случае так, что бы элипс относительно нее не был повернут), рассчитываем координаты точки в этой системе и задача упрощается.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 05.11.2010, 21:06   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
рассчитываем координаты точки в этой системе и задача упрощается.
Я тоже чисто теоретически понимайт, но вот как это формулами описать?...
просто не представляю.

Я думал так:
1) Нахожу полярные координаты точки, соответственно угол получаю.
2) Зная угол пробую вычислить точку эллипса по этому углу
3) Вычислив ее получаю расстояние от искомой точки до поверхности эллипса.

С кругом это проходит а вот с эллипсом... Никак не могу понять где я чего не учитываю.
Но что-то не задалось, и я уже в теории получаю точку эллипса совсем в другом месте...
Может этот алгоритм в корне неприменим сюда, а я с ним бораюсь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 21:14   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

а не напомните, как выглядит уравнение повернутого эллипса?

вообще я что-то припоминаю, та оно ужасно выглядит, ибо это, фактически, функция двух переменных второго порядка получается (т.е. там есть и икс и иксквадрат и игрик и игрикквадрат и свободный член).
aX^2 + bX +CY^2 + DY + F=0 - в общем виде как-то так, (на счет коэффициентов не уверен)
Это именно если элипс повернут. соответственно не обязательно систему координат вращать, можно из этого уравнения что-то получить.

Во нашел чуток. Уравнение кривой второго порядка (эллипс, гипербола, точка, мнимый эллипс, смотря какие там коэффициенты и свободный член)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 05.11.2010 в 21:35.
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наклонный эллипс SomeBod Компоненты Delphi 2 12.02.2016 02:04
С вопросом о Rave я в этот раздел попала? J[OGR]A Помощь студентам 3 17.03.2009 10:19
где сдесь туплю не пойму Doget Помощь студентам 2 04.02.2009 08:46
Эллипс по параметрам rzrwolf Microsoft Office Excel 6 21.12.2008 01:47
Определить попала ли точка в область? Iogan Gamba Puti Общие вопросы Delphi 7 13.05.2008 00:15