|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2007, 22:29 | #1 |
Регистрация: 04.12.2006
Сообщений: 0
|
Поворот маленького примитива на канве
Мне нужно отображать на канве маленький треугольник,повёрнутый под различным углом(от 0 до 360 градусов), обсчёт точек
я делаю с помощью матрицы поворота. Но при этом конечно работаю с вещественными числами,но когда привожу полученные координаты вершин треугольника к целочисленным значениям(в пикселях - к экранным координатам),использую round, то получаю очень кривые результаты За счёт округления! Подскажите, как мне решить эту проблему, может дело в пространственном разрешении канвы, ну там как в фотошопе - ppi - кол-во точек на дюйм??? Буду очень благодарен!!! |
31.01.2007, 22:39 | #2 |
Пользователь
Регистрация: 22.01.2007
Сообщений: 52
|
Ну так это издержки пикселей.... А вообще то у формы в Delphi есть PixelsPerInch - это как раз то самое количество точек надюйм.... может оно?
И кстати, может и ошибаюсь, но можно работать с целыми числами при работе с матрицами...
Delphi & LMD & RXLib / VBA / Windows / Linux...
|
31.01.2007, 22:49 | #3 |
Регистрация: 04.12.2006
Сообщений: 0
|
В матрице поворота - она 2x2 в ней синусы и косинусы, а на выходе от 0 до 1 - если даже выход растянуть в каком-то диапазоне - всё равно мне нужно получать маленькие значения Вот если бы повысить качество растра, то при больших числах я бы получал такой же по величине треугольник, а кол-во точек на дюм формы не действует - я пробовал!!!
|
31.01.2007, 23:22 | #4 |
Пользователь
Регистрация: 01.01.2007
Сообщений: 52
|
Насколько я помню, она может округлять как в большую, так и в меньшую сторону.
Попробуй trunc, floor или ceil. |
01.02.2007, 01:44 | #5 |
Форумчанин
Регистрация: 01.12.2006
Сообщений: 241
|
Посмотрел на одном форуме объясняли так...
Вопрос №3265 [01-08-00] >>>
Возможно, я не вполне четко сформулировал вопрос: при рисовании линии в 1 пиксел (да и не только), резудьтат получается с "зазубринками". Это особенно характерно для линий с очень большим или очень маленьким тангенсом угла наклона. Однако при работе со спец. графич. редакторами линии получаются гораздо более гладкими, особенно при печати. Вопрос в следующем: как реализовать это в Дельфи, как получить более точные координаты, чем целые и т.д. Заранее благодарен. Ответов: 2 02-08-00 13:28 на экране нет нецелых координат. о то, что в графических пакетах нету ступенек, достигается благодара так называемому антиалиайзингу. для сглаживания углов используются полутона, глаз как бы обманывается. если сделать скриншот и увеличить это место в том же редакторе, то все станет предельно ясно. на принтере другое дело. там просто очень маленький пиксел и ступеньки глазом просто невидны. теперь о том как бороться. нужно рисовать точку двумя пикселами, суммарная яркость (темность (- равна яркости точки. для рисования прямых существует модифицированный алгоритм брезенхама (чуть ли не самим брезенхамом (-, но под рукой его к сожалению нет.
Програмисты - единственные люди, которым платят за исправления их же ошибок
|
01.02.2007, 06:23 | #6 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
алгоритм Брезенхейма бывает 4-х и 8-и связный.
но если координаты правильно посчитаны, для рисования линий вполне достаточно стандартных средств ..
Берегите друг друга!
|
03.02.2007, 22:32 | #7 |
Регистрация: 04.12.2006
Сообщений: 0
|
Буду копать в сторону алгоритма Брозенхейма
И всё же расскажи поподробней, как иммитировать картинку примитива-тругольника,повёрнутого на N градусов так чтобы глазу прятно было смотреть (ведь это 3 линии, соедин-е между собой, здесь уместен алгоритм Брезенхама?) |
04.02.2007, 03:34 | #8 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
ИМХО - какой бы ни был там алгоритм, пиксели на экране ты меньше не сделаешь. Можешь конечно еще изменить разрешение экрана, и тогда точки станут меньше. А вообще заинтересовался этои темой и вот за 3 часа написал полноченную show-программку. Рассчеты - чисто геометрические, протисовка - стандартная для канвы. Выкладываю вместе с исходниками.
ICQ: 5311314
[SIGPIC][/SIGPIC] |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рисование пирамиды на канве | Eugene | Общие вопросы Delphi | 4 | 17.10.2013 17:27 |
Мерцание на Канве | SERG1980 | Мультимедиа в Delphi | 3 | 30.04.2008 08:14 |
Поворот картинки | delphin100 | Мультимедиа в Delphi | 5 | 14.04.2008 10:43 |
построение графика на Канве | Chepa | Общие вопросы Delphi | 2 | 19.01.2007 22:59 |
как рисовать на канве битмапы учитывая прозрачность участков битмапа? | Alar | Общие вопросы Delphi | 0 | 29.10.2006 23:06 |