Pull to refresh
35
0
Денис Зинченко@Denxc

Программист

Send message
Алгоритм прост в реализации и имеет линейную сложность.
Поигрался с этим алгоритмом. Вполне рабочий, легкий в реализации. Но, к моей практической задачи не подошел из-за некоторых особенностей построения сплайна. Здесь исходники.
Не пробовал. После вашего комментария за 10 минут накидал реализацию, так как много информации по ним. Удивлен.
Спасибо!
Автоматическое проектирование, геометрическое моделирование и тд.
Конкретно я буду использовать этот алгоритм для контроля геометрических характеристик цилиндрических алюминиевых слитков на одном из российский заводов. Есть лазерные датчики, которые дают множество точек поверхности, затем по этим точкам генерируется интерполяционная поверхность.
Да, действительно.
Упустил из виду этот момент, акцентируя внимание на игнорировании горизонтальных линий.
Забавно, что сам автор ввел в дополнительное заблуждение своим ответом.
Поясните подробнее, пожалуйста. Не понял вашу мысль.
Сколько пересечений будет, если сложится ситуация как на моей картинке? По-хорошему должно быть 3 пересечения.
Но, судя по тому, что реализация автора проигнорирует горизонтальную грань (результат приведенных вами условий будет false), пересечений будет 2.
Луч уходит от точки влево (в реализации автора). Соответственно он пересекает только левые стороны ваших фигур. Кол-во пересечений в обоих случаях = 1.
Ну я правильно понимаю, что в этом случае вы пропускаете горизонтальные стороны?
Если ситуация будет как на картинке (извините за цвета, нарисовал быстро для примера), то ваша функция посчитает, что луч пересекает только зеленые грани, т.е. пересечений четное кол-во?
image
(xp_prev — xp) * (y — yp) / (yp_prev — yp) а деление на 0 нормально отработает в данной реализации?
Я, к сожалению, python не знаю, поэтому ламерский вопрос: а что произойдет, если один или несколько сторон полигона окажутся строго горизонтальными и при этом точка окажется на прямой, к которой эта горизонтальная сторона принадлежит?

Другими словами что будет, если yp_prev == yp && y == yp?
Выделяемая память зависит от размеров исходного массива. А размер заранее неизвестен.
В задаче необходимо использовать всегда одинаковую память вне зависимости от исходных данных.
Память не константная нужна для этого.
В таком случае и ваше тривиальное решение не удовлетворяет условию, так как прохода 2.
Скрытый текст
Отсортировать массив.
Далее каждый эл-т сравнить с соседними. Если ни одному не равен, то он искомый.
Есть разные потоки вывода консольных приложений, а не только стандартный, на который ориентирован CommandHelpers.

p.s Ну и название… 'CommandHelpers'
В левом меню отображается шаблон, который давно был удален и не используется. Возможности удалить его из меню нет.
Плюсую.
Выполняю операцию по переводу денег, сразу открываю историю операций и вижу, что она проведена 4 часа назад.
Это связано с разницей в часовых поясах. Время операции фиксируется московское, а при отображении в истории отображается время телефона (локальное) минус время операции (московское), как итог «операция проведена 4 часа назад».
Не критично, но сбивает с толку и не приятно.
Для чего функцию «Мои финансы» вынесли на самый верх? Она, по сути, чисто для информации. Лично для меня эта функция не нужна или нужна очень редко, но место она занимает много и бесполезно.

Было бы не плохо иметь возможность сортировать вкладки или включать/выключать их в главном окне.
ну тогда уж 2^6-1 вариантов. Ничего не выбирать нельзя ведь? или можно?
Капча, для которой достаточно мыши, гораздо удобнее как по собственному ощущению, так и по отзывам пользователей на собственных проектах.
По крайней мере всегда старался избегать вот таких решений: accent-shop.ru/vopros-otvet

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity