Кто-то может объяснить обнаружение коллизий на пиксель?

Поскольку вы пытаетесь проанализировать локализованную строку даты, вам нужно будет использовать класс из расширения Intl PHP, убедитесь, что он установлен.

Вы можете использовать класс IntlDateFormatter для определения средства форматирования, которое может понимать французские даты. Затем вы сообщаете ему используемый формат даты и, наконец, анализируете дату. Он создаст метку времени Unix, которую вы можете использовать с date().

$formatter = new IntlDateFormatter("fr_FR", IntlDateFormatter::NONE, IntlDateFormatter::NONE);
$formatter->setPattern('eee dd MMMM y');

$time = $formatter->parse("Mer. 23 Janvier 2019");

$date = date('Y-m-d', $time);

Вы можете изменить шаблон на другой, который соответствует вашим потребностям, используя следующие флаги: http://userguide.icu-project.org/formatparse/datetime

[113 ] использует их в качестве формата http://php.net/manual/en/function.date.php

И вы можете проверить код выше на этом сайте: http : //www.writephponline.com

Применительно к вашему случаю вам нужно будет проанализировать $deliverydate и использовать его возвращение в качестве второго аргумента для date().

8
задан SCdF 6 October 2008 в 04:40
поделиться

6 ответов

Это более точно, чем вершины (или поля хита и т.д.). Я предполагаю, что Вы говорите о 2-м здесь (3-й, была бы модель поля по сравнению с вершиной). На пиксель позволил бы Вам детализировать спрайты, которые мелочи (ракеты, скажите), столкнулся бы с более реалистично.

Это - больше математики и медленнее, чем условный метод, который должен был бы потянуть поле (или некоторый другой легко математическая форма как круг) и сказать, что 'это - агент, что-либо в вот он'. Это однако, более точно.

2
ответ дан 5 December 2019 в 07:37
поделиться

При разговоре за и против также необходимо рассмотреть ответ коллизии. Что Вы хотите сделать, когда коллизия обнаруживается? При обнаружении объекта, поражающего другой объект, где результат один или оба из уничтожаемых объектов, то обнаружение коллизий на пиксель хорошо и точно. Если Вы хотите объект реагировать некоторым другим способом, т.е. скользящий против стены, возврата, и т.д.... затем можно хотеть работать с некоторым типом ограничительного прямоугольника/circle/oval, который заставит ответ коллизии казаться более гладким и более последовательным с меньшим шансом застревания.

2
ответ дан 5 December 2019 в 07:37
поделиться

Профессионалы были уже упомянуты: это идеально для пикселя и справедливо, нет никаких ложных положительных сторон, ни ложных отрицательных сторон. Основной недостаток - то, что дорого вычислить, но если Вы делаете простую проверку ограничительной рамки сначала, это не должно быть большой проблемой. В возрасте OpenGL и DirectX там еще одна проблема: данные спрайта обычно являются структурами, что означает, что они находятся в VRAM, и Вы не можете проверить пиксельные значения легко Сами. В OpenGL можно использовать glReadPixels функция, чтобы вернуть пересеченную часть двух спрайтов к RAM и проверить коллизию, или можно использовать запрос поглощения газов. Подход запроса поглощения газов должен иметь лучшую производительность, поскольку Вы не кладете обратно данные из GPU, но запросы поглощения газов не поддерживаются везде (т.е. они не поддерживаются в OpenGL ES, кто-то, исправьте меня, если я неправ).

0
ответ дан 5 December 2019 в 07:37
поделиться

Для 2D: Вам не нужна никакая математика для этой проблемы, Вам нужна только пользовательская bitblit-стандартная-программа. Вы будете блитировать кандидатов коллизии в невидимую поверхность путем рисования их collisionmasks на эту поверхность и проверку, если пиксели, которые Вы просто хотите потянуть, будут (пиксель! = 0). Затем у Вас будет коллизия. Конечно, необходимо предварительно проверить ограничительными прямоугольниками, если коллизия может произойти.

Для 3D: Вам будет нужна математика (много)!

в основном Вы проверите каждую поверхность своего агента против каждой поверхности Вашего врага. Это будет сделано путем вычисления плоского пересечения лучом. Существует большая оптимизация, возможная здесь, но она зависит от Вашего 3-го представления. Это не также никакой Per-Pixel-Collision, но Per-Vertex-Collision

11
ответ дан 5 December 2019 в 07:37
поделиться

принимая во внимание OpenGL и случай текстуры: вы можете предварительно вычислить битовую матрицу для изображения и проверить, перекрываются ли два пикселя.

0
ответ дан 5 December 2019 в 07:37
поделиться

Перпиксельное обнаружение столкновений - это пережиток прошлого, когда графика была простой, а 2D аппаратное обеспечение включало бесплатную проверку столкновений между спрайтами и фоном. Хотя современная двухмерная графика более сложна, проверка столкновений по пикселям используется редко, особенно потому, что видимая форма объекта и форма столкновения обычно отличаются. Круги или коробки достаточны для большинства случаев. Кроме того, поскольку графическое оборудование на базе opengl больше не может выполнять проверку столкновений, вам приходится писать дополнительный код рендеринга, используя процессор только для проверки столкновений, сохраняя дополнительные растровые данные в системной памяти, поскольку к графической памяти нельзя обращаться напрямую.

0
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: