Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 15.12.2007, 01:14   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Счастье Просьба затестить проверку точки на принадлежность отрезку

Мотематего.rar

В общем, пишу функцию, которая бы проверяла, принадлежит ли данная точка данному отрезку. Вроде, выходит, но иногда точки рассчитываются неверно (отрезок вертикален, горизонтален). Я даже собственную функцию написал, которая рисует линию, но с моим алгоритмом, чтобы понять, какие именно точки она пропускает/ставит лишние вопрос: если кто сталкивался с такой проблемой, как мне решить траблу с вертикальной линией? (с остальным тоже желательно, но не настолько важно)
В архиве исходники, где буквально каждая строка комментирована
WASD - двигать левый конец
Мышкой двигать точку. Если попадёшь на белый пиксель, то один, а если не попадёшь - то ноль.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 11:43   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

Ну я уже предлогал варриан:
Если сумма расстояний между A-C и B-C равна расстоянию между A-B то точка лежит на отрезке.

A и B - точки линии, С - точка проверки.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 12:37   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

как решить проблему с вертикальной линией? Обычная y=k*x+b тут уже не работает. В принципе, можно руками пофиксить этот косяк:
Если начальная Х и конечная Х равны (т.е. отрезок вертикален)
то вычисляем х не по стандартному X = (Y-B)/K а просто Х всегда равен одному и тому же значению на протяженмм всего отрезка.

Есть ли другие варианты решения проблемы с вертикальной линией?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 12:39   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

ABTOMAT, мой варриант идёт КО ВСЕМ случаям, и не влияет на градус повёрнутости. Расстояние меж точек узнаёться по формуле теоремы пифогора.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 13:00   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

MoKa, я ж те уже говорил вчера: у тебя три вычисления квадратного корня, который на блитзе не то чтобы даёт мега-производительность.
Ну и линию таким способом не построишь!
(Хотя я линию делал чтобы увидеть, какие точки, как считает прога, принадлежат линии)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 13:05   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

ABTOMAT, для построении линии, нада узнавать вектор смещения и длину, делать цикл на длину, и рисовать пиксель в позиции текущяя_длина*вектор_смещения. Всё просто.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 14:59   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

Мотематего.rar

Исправил
Теперь:
1. Нету глюков если линия вертикальна (не рисуется)
2. Нету глюков если линия почти горизонтальна (появляются посторонние точки)

Просьба затестить! (Извиняюсь, что нужно попадать единственным пикселем по тонкой линии, буду делать курсор, который опишу как два пересекающихся отрезка (крестик))

MoKa
, ну я ж уже говорил что этот способ не хочу юзать...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 15:25   #8
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

Молодец! Везде верно определяется.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 16:08   #9
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

Начну щас делать функцию проверки двух отрезков на пересечение
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 21:09   #10
jimon
 
Сообщений: n/a
Re: Помогите проверить точку на принадлежность отрезку

что мешает заюзать готовый велосипед ?
 
Ответить с цитированием
Старый 16.12.2007, 00:40   #11
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Плохо Re: Помогите проверить точку на принадлежность отрезку

Сообщение от jimon
что мешает заюзать готовый велосипед ?
Что ты имеешь ввиду под готовым велосипедом?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 09:02   #12
jimon
 
Сообщений: n/a
Re: Помогите проверить точку на принадлежность отрезку

формул и методов для данных нужд уже придумали тысячи
почему бы не использовать готовые ?
 
Ответить с цитированием
Старый 16.12.2007, 13:24   #13
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

jimon, ну дык вроде y=kx+b не я и выдумывал...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 13:45   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

ABTOMAT, y=kx+b - ето уравнение линии, а не отрезка.
определить пересечение линий намного проще чем пересечение отрезков - линии пересекаются если они не паралельны (т.е. |k1|<>|k2|).
с отрезками - ищи точки пересечения и проверяй их на принадлежность к отрезкам. (хотя, думаю есть масса более простых и производительных способов).
Jimon+1. Изобретать лисапеды - неблагодарное занятие, хотя мозги конечно тренируются, что есть гуд.
(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 15:14   #15
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогите проверить точку на принадлежность отрезку

Сообщение от HolyDel
ABTOMAT, y=kx+b - ето уравнение линии, а не отрезка.
определить пересечение линий намного проще чем пересечение отрезков - линии пересекаются если они не паралельны (т.е. |k1|<>|k2|).
с отрезками - ищи точки пересечения и проверяй их на принадлежность к отрезкам. (хотя, думаю есть масса более простых и производительных способов).
Jimon+1. Изобретать лисапеды - неблагодарное занятие, хотя мозги конечно тренируются, что есть гуд.

Я уже кстати сделал определение пересечения линий, сейчас делаю проверку на отрезки:
Если вычисленная точка пересечения принадлежит обоим отрезкам, то они пересекаются
(т.е. |k1|<>|k2|)
Только я не понял почему у тебя тут модуль По-моему, как раз без него надо
мозги конечно тренируются, что есть гуд.
Ну, хоть мозги потренирую а то они у меня в математике хреново шарят
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить нажатие сразу нескольких кнопок? Kostia FAQ 5 07.08.2009 03:47
принадлежность точки окружности WISHMASTER35 Алгоритмика 7 18.05.2009 19:13
Как проверить, готовы ли макароны? ZanoZa Юмор 11 28.01.2007 17:06


Часовой пояс GMT +4, время: 11:58.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com