Автор | Сообщение |
|
| |
Пост N: 582
Зарегистрирован: 17.06.10
|
|
Отправлено: 12.05.18 10:56. Заголовок: Круг из контролов
Понадобилось изобразить круг из контролов (напр.RADIOBUTTON) Типа циферблата. Т.е. нужен алгоритм вычисления координат точек располагающихся по окружности. Не делал ли кто ?
|
|
|
Новых ответов нет
[см. все]
|
|
|
| |
Пост N: 1242
Зарегистрирован: 20.02.11
|
|
Отправлено: 12.05.18 15:17. Заголовок: fil пишет: Не делал..
fil пишет: В школе в 7 классе делал. 360градусоа делишь на количество точек. Получаешь шаг угла. Потом через синус и косинус получаешь координаты от угла
|
|
|
|
| Администратор
|
Пост N: 3727
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.05.18 13:03. Заголовок: Поищите алгоритм Бре..
Поищите алгоритм Брезенхема Например: http://algolist.manual.ru/graphics/painting/circle.php PS Нашел у себя в архивах программку 1990 года, наверное как раз реализация этого алгоритма. Там всего 40 строк, только целочисленные операции. Давать не буду, поскольку сам не вспомню, как он работал. Да и не соберу уже: tc для dos не сохранился.
|
|
|
|
| |
Пост N: 583
Зарегистрирован: 17.06.10
|
|
Отправлено: 14.05.18 18:07. Заголовок: Спасибо, Паша ! Я уж..
Спасибо, Паша ! Я уже все сделал. Неохота было самому это описывать X:=X0+R*cos(0.017*N*(шаг)) Y:=Y0+R*sin(0.017*N*(шаг)) ну раз нет халявы...
|
|
|
|
| постоянный участник
|
Пост N: 328
Зарегистрирован: 29.05.10
|
|
Отправлено: 14.05.18 18:26. Заголовок: Все упирается в по..
Все упирается в постановку задачи :) В данном случае круг надо рисовать радиобутонами. Поэтому чем меньше круг тем меньше будет кнопок. Значит надо знать какова должна быть точность результата - т.е. сколько кнопок нужно ( можно ) влепить. На бумажке быстренько получаем координаты ( действительно школьный курс) и в соответствии с ними пишем пр-ку. x=r*Cos(f) y=r*Sin(f) и далее рисуем кнопки. Понятно ( еще раз ) , что точность выбора ограничивается кол-м кнопок. Если задача предусматривает произвольный выбор, то можно использовать стандартные команды FW. @ 40, 75 SAY oSay2 VAR cSay2 SIZE 80,18 PIXEL BORDER COLOR CLR_RED OF oWnd @ 65, 20 SELECTOR oSelec VAR nVar1 OF oWnd ; ORIGIN ANGLE 240 ; // en grados sexagésimales LAST ANGLE 120 ; // estando el origen cero en el punto superior RANGE 100, 200 ; MARKS 11; SIZE 200, 150 PIXEL ; ON CHANGE oSay2:SetText( STR( nVar ) ) В этом случае "бегунок" мышкой можем поставить в любое место и на выходе получить угол .
|
|
|
|
| постоянный участник
|
Пост N: 329
Зарегистрирован: 29.05.10
|
|
Отправлено: 14.05.18 18:28. Заголовок: О! Пока писал Юра у..
О! Пока писал Юра уже все и своял :)))) Ну, удалять не буду - как вариант пусть остается :)
|
|
|
|