Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей [Часть 2] - страница 20
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В полярных координатах там все красиво будет. Но при переходе в обычные вылезет то же самое.
Какая задача короче? Надо танцевать от печки. Если оценка области значений, то приведение к такому виду необязательно.
_____________
Кстати коэффициенты уравнения получить вообще несложно.
И еще одно кстати -- изначальный эллипс до поворота тоже не выражается такой функцией.
В полярных координатах там все красиво будет. Но при переходе в обычные вылезет то же самое.
Какая задача короче? Надо танцевать от печки. Если оценка области значений, то приведение к такому виду необязательно.
_____________
Кстати коэффициенты уравнения получить вообще несложно.
И еще одно кстати -- изначальный эллипс до поворота тоже не выражается такой функцией.
Задача - попиксельно нарисовать повернутый элипс. Пусть не элипс, сплюснутый круг тоже пойдет.
Эллипс и сплюснутый круг одно и то же.
Итак, есть уравнение -- x^2/a^2 + y^2/b^2 = 1 -- это эллипс. (1)
Далее -- есть преобразование. Выразить x y через x' y' не проблема. Подставить в (1) тоже не проблема.
Далее -- цикл по x c шагом 1 и цикл по у с шагом 1
Далее -- мержим полученные точки, вроде несложно.
Единственная проблема -- область значений. Здесь надо подумать.
Эллипс и сплюснутый круг одно и то же.
Итак, есть уравнение -- x^2/a^2 + y^2/b^2 = 1 -- это эллипс. (1)
Далее -- есть преобразование. Выразить x y через x' y' не проблема. Подставить в (1) тоже не проблема.
Далее -- цикл по x c шагом 1 и цикл по у с шагом 1
Далее -- мержим полученные точки, вроде несложно.
Единственная проблема -- область значений. Здесь надо подумать.
Если сплюснутый круг и эллипс это одно и тоже, тогда y=k*sqr(r^2-x^2) - это эллипс.
Если получить у от х и повернуть, будут углы из пикселей (например, пиксель, снизу пиксель и справа пиксель). Какое-либо отсеивание пикселей и соединение получвшихся точек линией будет криво выглядеть. Перепробовал кучу способов. Единственный красивый способ - функция у' от x', если точки дальше одного пикселя друг от друга, то соединять линией.
Короче я бы наверное высчитал точки в полярной системе а потом поудалял бы лишние по принципу 8-связности.
Попробую.
Если сплюснутый круг и эллипс это одно и тоже, тогда y=k*sqr(r^2-x^2) - это эллипс.
Если получить у от х и повернуть, будут углы из пикселей (например, пиксель, снизу пиксель и справа пиксель). Какое-либо отсеивание пикселей и соединение получвшихся точек линией будет криво выглядеть. Перепробовал кучу способов. Единственный красивый способ - функция у' от x', если точки дальше одного пикселя друг от друга, то соединять линией.
только одним цветом нужно нарисовать, или можно разложить в растр с сглаживанием? Если с сглаживанием то можно поискать готовую реализация алгоритма Брезенхема для эллипса
З.Ы. вот ещё что попалось http://www.geometrictools.com/Documentation/IntegerBasedEllipseDrawing.pdf
только одним цветом нужно нарисовать, или можно разложить в растр с сглаживанием? Если с сглаживанием то можно поискать готовую реализация алгоритма Брезенхема для эллипса
З.Ы. вот ещё что попалось http://www.geometrictools.com/Documentation/IntegerBasedEllipseDrawing.pdf
Одним цветом, если со сглаживанием, то все надо будет делать со сглаживанием.
* * *
Пожалуй эллипс будет только в следующем сезоне:)
Кое что придумал, конечно. Точнее не придумал, подсмотрел как Ренат рисовал круг. Проверять всю область, входит точка внутрь фигуры или нет. Потом к готовой фигуре подходить с четырех сторон и окрашивать контур. С этим делом еще одна заморочка, если не повернутый эллипс, надо для одной четверти рассчитывать и отражать. Если повернутый, рассчитывать для половины и отражать. Еще вот хочется вырез сделать, чтобы сектора, ломтики рисовать...
Integer:
Если повернутый, рассчитывать для половины и отражать. Еще вот хочется вырез сделать, чтобы сектора, ломтики рисовать...
Тем более полярные координаты!
Отчасти но не совсем. В квадратной области для каждого x и y, сначала делаем поворот, переводим повернутые х и y в полярные координаты - получаем расстояние точки от центра (r) и угол (fi), по по углу fi, заданному радиусу и коэффициенту вычисляем расстояние крайней точки эллипса он центра, сравниваем с r и узнаем, внутри точка или нет.
В любом случаем нужно будет делить на четверти или половины и отражать.
Если сразу рисовать в полярных координатах, потом надо будет подчищать некоторые точки, а если рисовать сплошной, потом проще его контруром обрисовать. Может все не так, но заморочек явно больше чем кажется.