Приветствую All!
Пару вопросов если можно
1. Как узнать принадлежит ли точка произвольному эллипсу
2. Как самомтоятельно реализовать вывод произвольной дуги, так как это делается в API функции Arc
Спасибо за ответы.
Здравствуйте, alex_hunter, Вы писали:
_>Приветствую All! _>Пару вопросов если можно _>1. Как узнать принадлежит ли точка произвольному эллипсу
смотря как задан эллипс. имхо можно так:
обозначим r — вектор направленный от какого-либо фокуса эллипса к заданной точке.
* находим косинус угла между большой осью эллипса и r (обыкновенным скалярным произведением ортов)
* подставляем этот косинус в фокальное ур-е эллипса
R=p/(1-e*cos(f))
и смотрим: если r<R — точка внутри, r>R — снаружи r==R — на поверхности эллипса.
_>2. Как самомтоятельно реализовать вывод произвольной дуги, так как это делается в API функции Arc
а в чём реализуем?
можно так:
рисуем (glBegin(GL_LINE_STRIP) просто дугу единичного радиуса с центром в начале координат: от угла f_start до f_stop. потом зумим glScale3d() — в каком нужно направлении на величину ексцентриситета эллипса. и наконец как обычно glTranslated() и glRotated вигаем и врашаем то что получилось.
Здравствуйте, hemmul, Вы писали:
_>>2. Как самомтоятельно реализовать вывод произвольной дуги, так как это делается в API функции Arc H>а в чём реализуем?
Нужно реализовать все ручками без OpenGL и иже с ними. То есть сначала выводится эллипс а потом задаются две точки начала и конца. Видимо сводится все к тому чтобы найти точку пересечения двух лучей с эллипсом и выводить только те точки которые находятся между этими лучами. То есть нужно узнать точки пересечения.
Здравствуйте, alex_hunter, Вы писали:
_>Здравствуйте, hemmul, Вы писали:
_>>>2. Как самомтоятельно реализовать вывод произвольной дуги, так как это делается в API функции Arc H>>а в чём реализуем? _>Нужно реализовать все ручками без OpenGL и иже с ними. То есть сначала выводится эллипс а потом задаются две точки начала и конца. Видимо сводится все к тому чтобы найти точку пересечения двух лучей с эллипсом и выводить только те точки которые находятся между этими лучами. То есть нужно узнать точки пересечения.
угу. не совсем понял, но нверное можно (просто вдруг кто-то задаст точки которые не лежат на эллипсе! прямо углами задавать намного выгоднее — не придётся их пересчитывать через тумбу-юмбу (если в первом вопросе нас интересовал косинус — то тут уже придётся находить именно угол — а для этого скорее всего подойдёт atan2(модуль векторного произведения, скалярное произведение)))
_>...и большое спасибо за ответ на первый вопрос
всегда рад
А вот еще один вопросик
Узнать координаты точки на окружности имея угол как я понимаю можно так:
точка.x = cos a
точка.y = sin a
А как узнать координаты точки имея угол на эллипсе?
Здравствуйте, alex_hunter, Вы писали:
_>А вот еще один вопросик _>Узнать координаты точки на окружности имея угол как я понимаю можно так: _>точка.x = cos a _>точка.y = sin a _>А как узнать координаты точки имея угол на эллипсе?
дык это ж проще простого!
если начало координат в фокусе — то:
точка.x = R*cos a
точка.y = R*sin a
где
R=p/(1-e*cos(a))
— расстояние точки от этого фокуса.
если центр координат в геометрическом центре — то к точка.х нужно добавить фокальное расстояние пополам:
точка.x = R*cos a+p*e/(1-e*e)
точка.y = R*sin a
(предполагаем, что эллипс вытянут вдоль OX)
H>дык это ж проще простого!
Кому как, я слишком давно закончил школу
H>если начало координат в фокусе — то: H>точка.x = R*cos a H>точка.y = R*sin a H>где H>
H>R=p/(1-e*cos(a))
H>
H>- расстояние точки от этого фокуса.
p это видимо число "пи"? А пардон что есть число "e"?
H>если центр координат в геометрическом центре — то к точка.х нужно добавить фокальное расстояние пополам: H>точка.x = R*cos a+p*e/(1-e*e) H>точка.y = R*sin a H>(предполагаем, что эллипс вытянут вдоль OX)
И так, для общего развития что такое фокальное расстояние? И не подскажите может какую литературку подскажите по данному вопросу?
Здравствуйте, alex_hunter, Вы писали:
H>>если начало координат в фокусе — то: H>>точка.x = R*cos a H>>точка.y = R*sin a H>>где H>>
H>>R=p/(1-e*cos(a))
H>>
H>>- расстояние точки от этого фокуса. _>p это видимо число "пи"? А пардон что есть число "e"?
нет-нет! p и e — параметры которые определяют эллипс.
что такое эллипс? эллипс это множество всех точек плоскости, сумма расстояний которых от двух данных постоянна. "Две данные" точки называются фокусами. расстояние между фокусами (если не ошибаюсь) называется фокусным расстоянием. допустим фокусы расположены на оси OX. p (фокальный параметр) — есть расстояние от фокуса до точки эллипса вдоль прямой параллельной оси OY. e (эксцентриситет) — оказывает степень сжатости эллипса: при e==0 эллипс вырождается в окружность, фокусы приближаются друг к другу и становятся _одной_ точкой — центром окружности, а фокальный параметр — её радиусом.
_>И так, для общего развития что такое фокальное расстояние? И не подскажите может какую литературку подскажите по данному вопросу?
вообше, в любом старом справочнике по математике это довольно хорошо описано, а так: моя любимая энциклопедия, и вот погуглил
удачи!
_>P.S. И как всегда спасибо за ответ