![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Faraon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 19.10.2006 Репутация: нет Всего: нет |
У меня такая проблема.
Мне необходимо создать простенький графический редактор. Вся информация о рисунке сохраняется в виде координат в отдельном файле. Я затрудняюсь написать процедуру, которая бы выделяла выбранную мною линию. Пользуюсь таким методом: при нажатии кнопки мыши if (x-x1)*(y2-y1)=(y-y1)*(x2-x1) then //прорисовываю линию с новым цветом x,y - координаты мыши при нажатии кнопки x1,y1,x2,y2 - координаты линии Работает только для вертикальных или горизонтальных линий. Подскажите, как выбирать наклонную линию? |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
непонятно в чем смысл условия -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
drkot, смысл не понятен, потому что либо школа давно прошла, либо прошла очень легко
![]() Faraon, дело в том, что когда ты указываешь точку мышой, то координаты есть целые числа (в пикселях). Поэтому, подставляя в уравнение прямой, не получется верное равенство, т.к. точка (x, y) не принадлежит линии. Тебе следует сделать "приближенную" проверку. Как? Подумай немножко, потому как решение простое, а самому получить его приятнее. ![]() -------------------- ...все в мире относительно |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Faraon, ну для начала надо проверить попадает ли точка в прямоугольник, образованый начальной и конечной точкой отрезка, затем проверять, указаное условие, но проверять не ТОЧНО! , а с определенной заданной погрешностью, скажем 3 - 5 единиц человек не снайпер, он не может так точно попасть на линию, да и сама линия чертится НЕ ТОЧНО, а по приближенному алгоритму. Так что то что видно на экране совпадает, с теоретическим, только для гоизонтальных и вертикальных линий, так как только они могут рисоватся точно, все остальное рисуется "с запасом"
![]() Добавлено @ 18:02 ps. Уравнение в целом составлено верное. Это сообщение отредактировал(а) alexeis1 - 20.10.2006, 18:01 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
alexeis1, небольшое замечание на коммент: "сама линия чертится НЕ ТОЧНО" не играет роли при получении координат точки, т.к. визуальное отображение не влияет на точность расчета формулы.
"Уравнение в целом составлено верное" - почему в целом? Верное, верное. ![]() -------------------- ...все в мире относительно |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Потому что должно быть неравенство, а не уравнение. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
rounin |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.5.2006 Репутация: 1 Всего: 1 |
Это сообщение отредактировал(а) alexeis1 - 25.10.2006, 17:35 |
||||
|
|||||
Faraon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 19.10.2006 Репутация: нет Всего: нет |
rounin.
Огромное тебе спасибо. Очень помог. Я правильно понял? Sens - это чувствительность??? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Модератор: Тема разделена
Новая тема находтся по адресу http://forum.vingrad.ru/index.php?showtopic=118446 И называется. "Рисование линий внутри уже существующих линий" Faraon, никто не запрещает задавать новые вопросы, просто для этого нужно создавать новые темы ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |