Как нарисовать эллипс?

Sep 27, 2019 19:46

   Я уже тут когда-то писал о том, что довольно часто ощущаю недостаток школьного образования. Вот не так давно (около двух лет назад), например, понадобилось нарисовать эллипс жирной пунктирной линией. Казалось бы, всё довольно просто: есть метод Ellipse, можно выбрать Canvas.Pen.Style:= psDash; Canvas.Pen.Width:= 3; и вперёд! Но не всё так просто ( Read more... )

Школа, Программирование, Элементарная математика

Leave a comment

Comments 7

lj_frank_bot September 27 2019, 16:47:55 UTC
Здравствуйте!
Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категориям: IT, Образование.
Если вы считаете, что система ошиблась - напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее.
Фрэнк,
команда ЖЖ.

Reply

stone_guest September 27 2019, 16:52:11 UTC
Не ошиблись!

Reply

lj_frank_bot September 27 2019, 16:55:01 UTC
Я молодец

Reply


anonymous September 30 2019, 10:05:17 UTC
Уравнение в полярных координатах ни хрена не поможет в деле, ради которого, как я понимаю, все затевалось - в определении длины штриха и зазора между штрихами таких, штоп уложить в эллипс целое число одинаковых штрихов с одинаковыми зазорами. Одно и то же угловое смещение будет давать отрезки разной длины в апогее и перигее, если можно так сказать. Надо периметр сраного эллипса вычислить, иначе никак. Йо!

Reply

stone_guest September 30 2019, 11:11:37 UTC
Задача в общих чертах была решена два года назад. И решения было два ( ... )

Reply


anonymous October 1 2019, 13:34:56 UTC
Пес с ним, с эллиптическим интегралом. Мы же здесь упираемся в численные методы. Несомненно. И в этой связи, взяв достаточно малое приращение параметра t, надо опосля вычисления координат очередной точки эллипса вычислять также расстояние от предыдущей точки. Это будет расстояние по прямой, конечно, но мы возьмем дюже малое приращение t, чтобы эта прямая пренебрежимо мало отличалась от соответствующего участка эллипса. И по этим расстояниям мы будем определять, когда начинать штрих и когда его обрывать. Для этого расстояние между соседними точками должно быть много меньше длины штриха. Хотя бы раз в 50. Тогда неодинаковость штрихов не будет заметна на глаз. Yeah.

Reply

stone_guest October 1 2019, 14:13:59 UTC
Да, я думал об этом. Именно поэтому я и писал, что меня определение периметра эллипса не очень сильно озадачивает. Надо сделать. Только пока я мыслю два прохода. Сначала идём по эллипсу и таким путём определяем оценку периметра эллипса (который, конечно, будет на самом деле состоять из отрезков прямых), потом делим этот периметр на удвоенное число штрихов, которое мы хотим нанести, и получаем длину одного штриха, а потом проходим по эллипсу повторно (и идём опять такими же малыми шагами, поэтому ошибка в вычислении периметра эллипса, какой бы она ни была, ни на что не повлияет, потому что периметр этого "угловатого" эллипса будет посчитан точно) и уже понимаем, когда начинать очередной штрих и когда его заканчивать. Вот.

Reply


Leave a comment

Up