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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2023, 18:57   #1
IMarkTop
Новичок
Джуниор
 
Регистрация: 17.02.2023
Сообщений: 4
По умолчанию Нарисовать закругленную линию в GraphABC

Нужно нарисовать линию с "закруглениями", как на фото

Снимок экрана 2023-04-11 185126.png
IMarkTop вне форума Ответить с цитированием
Старый 11.04.2023, 22:14   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Вычисляете центр и радиусы эллипса и рисуете по точкам ломаную используя уравнение эллипса:
Код:
sqr(x` - center.x) / sqr(radius.x) + sqr(y` - center.y) / sqr(radius.y) = 1
На картинке видно две эллиптические дуги. Т.е. линия разбивается на 2 эллипса и прямую.

Хотя дуга сопряжения визуально больше похожа на прямую. Поэтому можно нарисовать одну дугу и две прямые.
macomics вне форума Ответить с цитированием
Старый 11.04.2023, 22:28   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,664
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
и рисуете по точкам ломаную
Немножко не точно. Ломаная состоит из отрезков прямых, а здесь будут сопряжённные кривые.
digitalis вне форума Ответить с цитированием
Старый 11.04.2023, 22:33   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Ломаная состоит из отрезков прямых, а здесь будут сопряжённные кривые.
Это если заморочиться и сопрягать кривые, но куда проще для начала нарисовать ломанную.
macomics вне форума Ответить с цитированием
Старый 11.04.2023, 22:43   #5
IMarkTop
Новичок
Джуниор
 
Регистрация: 17.02.2023
Сообщений: 4
По умолчанию

macomics, а можно пример кода пожалуйста?
IMarkTop вне форума Ответить с цитированием
Старый 11.04.2023, 22:52   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Задаёте параметры
Код:
const
   points: array [0 .. 3] of Point = ((x: 0; y: 0), (x: 10; y: 10), (x: 20; y: 15), (x: 40; y: 20)); // Точки от балды. Сами посчитаете их значения и количество
   rgbObject: Color = $C0C080;
С кривой
Код:
begin
   SetPenColor(rgbObject);
   SetBrushColor(rgbObject);
   FillClosedCurve(points);
end;
Ломанная
Код:
var i: Integer;
begin
   SetPenColor(rgbObject);
   MoveTo(points[Low(points)]);
   for i := Low(points) + 1 to High(points) do LineTo(points[i]);
end;
macomics вне форума Ответить с цитированием
Старый 11.04.2023, 22:59   #7
IMarkTop
Новичок
Джуниор
 
Регистрация: 17.02.2023
Сообщений: 4
По умолчанию

macomics, спасибо!
IMarkTop вне форума Ответить с цитированием
Старый 12.04.2023, 11:44   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,664
По умолчанию

Ему же надо "с закруглениями", а от LlineTo" будут углы - порезаться можно
digitalis вне форума Ответить с цитированием
Старый 12.04.2023, 11:54   #9
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Ему же надо "с закруглениями", а от LlineTo" будут углы - порезаться можно
Это смотря какие координаты точек в массив записать. Если постараться, тогда и окружность будет не отличима то пентатогона или октагона.
macomics вне форума Ответить с цитированием
Старый 10.11.2023, 12:35   #10
groverx
Пользователь
 
Регистрация: 08.11.2023
Сообщений: 24
По умолчанию

хм... А можно вопрос на засыпку? Нафига рисовать линию, если она уже есть нарисованная?
groverx вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нарисовать буквы Д П в Pascal GraphABC Kabz1k Помощь студентам 0 14.11.2016 11:07
Нарисовать линию на картинке spirit-ua PHP 13 02.07.2015 09:30
нарисовать в паскале линию... Proskurina Помощь студентам 3 10.10.2012 15:07
Как нарисовать необычную линию Marsel737 Общие вопросы Delphi 2 17.05.2011 20:03
Как нарисовать линию по пикселям DenLab Общие вопросы Delphi 4 03.12.2008 09:34