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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 12.10.2015, 19:23   #1
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Сообщение Пересечения 2д

На данный момент вычисляются пересечения :


прямоугольник с прямоугольником
_______________________
круга с кругом
круга с линией
круга с прямоугольником
_______________________
линия с линией
линия с прямоугольником
_______________________
Точка с линией
Точка с треугольником
Точка с кругом
Точка с эллипсом
Точка с прямоугольником
Точка с полигоном
_______________________
в следующих вариантах луч двунаправленный :

Луч с кругом
Луч с лучом
Луч с линией
Луч с прямоугольником
Луч с треугольником
Луч с полигоном (4 точки)
_______________________
в следующих вариантах луч одним направлением :

Луч от точки с кругом
Луч от точки с линией
Луч от точки с прямоугольником
Луч от точки с треугольником
Луч от точки с полигоном (4 точки)
_______________________

В дальнейшем добавлю и другие пересечения .
Так же вычисляются точки их пересечений и присутствия внутри фигуры .
Код и демка + .exe
2dIntersects.rar

Обновление № 5_1: исправлено
intersections2d var5 1.rar
__________________
Мой проект здесь

Последний раз редактировалось polopok, 14.10.2015 в 16:38.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо polopok за это полезное сообщение:
ABTOMAT (13.10.2015), DarkInside (12.10.2015), IgorOK (13.10.2015), Randomize (12.10.2015), St_AnGer (13.10.2015)
Старый 12.10.2015, 20:13   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Пересечения 2д

Вот, таким штукам в блице учиться в самый раз, так держать

Придирки:
Мне кажется, что обновлять rezultX, rezultY .. rezultXX нужно в любом случае случилось пересечение или нет. Сбрасывать хотя бы в нули.

LineToRectangle очень здорово по несколько раз перезаписывает глобальные переменные.

Ну и мелочи:
1 rezult правильне написать как resultX
2 PointToLine действительно необходим когда есть CircleToLine?
3 В функциях CircleToLine, CircleToRectangle, LineToRectangle нужно бы тоже указать Local для внутренних переменных как и в остальных ф-циях для порядку.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 12.10.2015, 20:51   #3
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Сообщение от Randomize Посмотреть сообщение
Вот, таким штукам в блице учиться в самый раз, так держать

Придирки:
Мне кажется, что обновлять rezultX, rezultY .. rezultXX нужно в любом случае случилось пересечение или нет. Сбрасывать хотя бы в нули.

LineToRectangle очень здорово по несколько раз перезаписывает глобальные переменные.

Ну и мелочи:
1 rezult правильне написать как resultX
2 PointToLine действительно необходим когда есть CircleToLine?
3 В функциях CircleToLine, CircleToRectangle, LineToRectangle нужно бы тоже указать Local для внутренних переменных как и в остальных ф-циях для порядку.
Насчёт глобальных перемен ,это да ... использовал при проверке ,а так пусть каждый для себя решит что лучше использовать .

по 1 пункту rezult возвращает : 0 - если не пересекает ,1 -пересекает , 2 - находится внутри и это важно !
по 2 пункту : они различаются ,если не заметили ,нет извлечение корня , а это плюс производительности .
по 3 пункту : не трудно поправить
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 13.10.2015, 02:55   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Пересечения 2д

Было дело 12.06.2007 (8 лет и 4 месяца тому назад).
BlitzMax, функции пересечения отрезков, и отрезка с окружностью. А также данные о пересечениях, на основе которых я после сделал 2д физику а-ля line rider.
http://moka.ucoz.ru/load/0-0-0-27-20

Такое лучше учить на canvas2d на самом деле и JS.
Т.к. не будешь отвлекаться на рендер и другие не нужные вещи связанные с платформой.
(Offline)
 
Ответить с цитированием
Старый 13.10.2015, 03:24   #5
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Intersection.js

copyright 2002, Kevin Lindsey
За основу брал и из других источников ,просто давно заметил отсутствия единства функций ,неудобно из проекта в проект тащить кусками . А так вроде как либа получается
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 13.10.2015, 14:41   #6
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Файл
intersections2d.bb
=>> intersections2d.rar
Исправлена функция PointToLine
Добавлены пересечения :
Точка с треугольником
Точка с кругом
Точка с эллипсом
Точка с прямоугольником
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 13.10.2015, 19:10   #7
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Новое обновление .
Исправлена функция PointToTriangle
переделаны вводные параметры для Rectangle ,теперь задаются значения как и для обычного Rect. Сокращено название функции с Rectangle на Rect .
Добавлено пересечение прямоугольник с прямоугольником .
замените файл intersections2d.bb на тот ,что приложен ниже ...
intersections2d upg 2.rar
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 13.10.2015, 20:40   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Пересечения 2д

Код не открывал, сразу отвечал:
Поворачивать прямоугольник можно?
(Offline)
 
Ответить с цитированием
Старый 14.10.2015, 04:44   #9
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Можно ,но при повороте будет работать только пересечение с краем ,
в следующих обновлениях исправлю это.
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 14.10.2015, 11:13   #10
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

[php]
Сообщение от moka Посмотреть сообщение
Код не открывал, сразу отвечал:
Поворачивать прямоугольник можно?
Теперь можно .
добавил функцию PointToPoly , отличается от функции PoinToRect этим :
1) задаётся каждая координата прямоугольника отдельно
2) координаты прямоугольника могут располагаться не пропорционально
3) определяется точка внутри ,даже когда точки повёрнуты

замените файл intersections2d.bb на тот ,что приложен ниже ...
intersections2d var3.rar
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (14.10.2015)
Старый 14.10.2015, 13:41   #11
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Обновление №4.
Добавлены пересечения :
Луч с лучом
Луч с линией
Луч с прямоугольником
Луч с треугольником
Луч с полигоном (4 точки)

intersections2d var4.rar

Так же альтернативная LineToLine2 функция (мешает ? удалите.)
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Старый 14.10.2015, 14:52   #12
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: Пересечения 2д

Обновление №5.
Добавлены пересечения :
Луч с кругом
в следующих вариантах луч одно направленный
Луч от точки с кругом
Луч от точки с линией
Луч от точки с прямоугольником
Луч от точки с треугольником
Луч от точки с полигоном (4 точки)

intersections2d var5.rar
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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