2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56

Нахождение точки внутри фигуры (нестандартные решения)

09.09.2015, 20:47. Показов 15294. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Мне нужно узнать принадлежит ли точка данной фигуре, заданной через координаты вершин. Про четное/нечетное пересечение луча из этой точки со сторонами этой фигуры я знаю, но к сожалению для сложных фигур и большого количества точек, это очень медленный способ.

Я решил разбить объём на ячейки(для других нужд) и мне пришло в голову, что можно смотреть позицию точки относительно тех сторон, что попали в эту ячейку, тем самым очень сильно уменьшая объём работы. Способ через луч в таком случае представляется проблематичным, так как нужно найти вершины новой фигуры полученной отсечением ячейкой. А вот через нормали сторон, заключенных в этой ячейке, для выпуклой фигуры всё просто, если нормали сторон направленны наружу, а точка находится внутри фигуры, то скалярное произведение для всех нормалей и вектора полученного из этой точки и любой точки соответствующей стороны должен быть меньше 0.
А вот можно ли решить подобным образом для не выпуклой фигуры? Какие условия нужно ещё учесть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2015, 20:47
Ответы с готовыми решениями:

Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Нужно написать программу вычисления местонахождения точки относительно фигуры(лежит ли данная точка внутри неё, на контуре или вне фигуры)....

Нахождение точек внутри фигуры
Не хотелось бы изобретать велосипед, может есть более внятные способы нежели многократный проход циклами по точкам... Есть два набора...

Нахождение кратчайшего расстояния от точки до фигуры
Доброго времени суток! Буду благодарна за помощь в решении данной задачи, ибо у меня ничего не получилось. Написала блок-схему на лист А4...

20
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.09.2015, 21:41
Skaarj, Есть такая штука. Берем уравнение общее прямой. Ax+By+C. Так вот, все точки, лежащие на прямой, обращают это выражение в нуль. Лежащие по одну сторону дают один знак, по другую - другой. И для выпуклой фигуры все просто. Берете каждую сторону и ЛЮБУЮ другую вершину. Если знаки при подставлении вашей точки и вершины совпали - все Ок (для всех сторон надо проверять). Это избавляет от суеты с нормалями, хотя и имеет тот же самый смысл.
Для не выпуклых...Можно разбить на выпуклые (триангулировать, например) и работать уже с ними.
Хотя не исключено, что есть и более интересные подходы.
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
09.09.2015, 22:09  [ТС]
Для выпуклых действительно всё просто, а вот в случае не выпуклых придётся, видимо, заниматься триангуляцией(тетраэдризацией в моём случае), чего хотелось бы избежать. Или же придётся смотреть в сторону двоичного разбиения пространства, если геометрия не даст более изящного решения.
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 08:11
Цитата Сообщение от Skaarj Посмотреть сообщение
Про четное/нечетное пересечение луча из этой точки со сторонами этой фигуры я знаю, но к сожалению для сложных фигур и большого количества точек, это очень медленный способ.
Ну а если попытаться ускорить его разбив фигуру на N горизонтальных "полос"? Каждая содержит все отрезки пересекающие ее. Двоичным поиском спрыгиваете на полосу - а там уже не так много отрезков.

Вторая оптимизация - внутри полосы..
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
10.09.2015, 11:47  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Ну а если попытаться ускорить его разбив фигуру на N горизонтальных "полос"? Каждая содержит все отрезки пересекающие ее. Двоичным поиском спрыгиваете на полосу - а там уже не так много отрезков.
Вторая оптимизация - внутри полосы..
В моём случае полосы - параллелепипеды(ячейки) в них так же хранятся полигоны, которые она пересекает. Индекс исследуемой ячейки, в которую попала точка находится в одну операцию. А вот поиск в самой ячейке представляется достаточно сложным, потому что фигура в ячейке по сути является пересечение двух объёмов и нужно найти новые вершины этой фигуры(для меня это нетривиально). Что впрочем можно сделать на предварительной стадии, когда разбиваю на ячейки всю область, тут я скоростью неограничен в отличие от стадии трассировки.

Мне пришёл в голову такой алгоритм.
Пробегаем по всем полигонам, находящимся в ячейке и проверяем по какую сторону лежит точка, пока не кончатся полигоны или пока скалярное произведение с соответствующей нормалью не даст >=0. Если скалярное произведение неотрицательное возможны три случая.
Нарисовал для наглядности

1) Точка лежит внутри не выпуклой фигуры.
2) Точка лежит снаружи не выпуклой фигуры.
3) Точка лежит снаружи выпуклой фигуры.
Прямоугольник - исследуемая ячейка, зеленая стрелка нормаль с которой скалярное произведение вектора NO будет >=0, красный отрезок соответственно проверяет на четность/нечетность пересечений.
Проверяется это всё тем же способом через четное/нечетное пересечение отрезка сторон фигуры. Причём второй точкой отрезка можно взять, например, середину стороны. По идее после выполнения одного из этих трех условий, можем точно сказать, что точка находится внутри/снаружи фигуры и тем самым прервать дальнейший поиск.
Вот алгоритм:


Сложность такого алгоритма в самом худшем случае o(2n), в самом лучшем o(n), если ячеек много и n << N(общее количество сторон в фигуре), то должно очень хорошо ускорить. Если сравнивать с методом через пересечение стороны(треугольника) и луча, то ещё неизвестно, что будет быстрее - в случае выпуклых фигур через скалярное произведение итераций будет столько же и они будут быстрее(меньше вычислений). Ну и не надо рассчитывать вершины новой фигуры, а это ещё надо хорошо обдумать как сделать - триангуляция, обход вершин и т.п. И операция эта будет явно не из быстрых, хоть и на предварительной стадии
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 12:11
Цитата Сообщение от Skaarj Посмотреть сообщение
В моём случае полосы - параллелепипеды(ячейки) в них так же хранятся полигоны, которые она пересекает.
Это хорошо изученная тема: raytracer, точнее структуры данных для него. Делать его самому конечно очень полезно, узнаете массу нового. Но с чисто практической точки зрения - непрофессионально. Ищите готовые решения, open-sources.

Цитата Сообщение от Skaarj Посмотреть сообщение
Мне пришёл в голову такой алгоритм.
Пробегаем по всем полигонам, находящимся в ячейке и проверяем по какую сторону лежит точка, пока не кончатся полигоны или пока скалярное произведение с соответствующей нормалью не даст >=0. Если скалярное произведение неотрицательное возможны три случая.
Нарисовал для наглядности
Ну поверьте - проскочить здесь не удастся. Никуда Вы не денетесь, придется проверять все полигоны на пути луча. Думаю Вы сами найдете "опровержение" предложенного. Обычно это бывает через неск дней.

Цитата Сообщение от Skaarj Посмотреть сообщение
Индекс исследуемой ячейки, в которую попала точка находится в одну операцию.
Именно поэтому я понял что Вы "городите велосипед". Должен быть спуск по дереву, это быстрый log, но все же не 1 операция
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
10.09.2015, 13:27  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Ну поверьте - проскочить здесь не удастся. Никуда Вы не денетесь, придется проверять все полигоны на пути луча. Думаю Вы сами найдете "опровержение" предложенного. Обычно это бывает через неск дней.
Так я все полигоны и проверяю. Поэтому сложность o(n) минимум - либо точка лежит внутри многоугольника, исходя из того что точка лежит по внутреннею сторону всех полигонов и тогда итоговая сложность o(n), либо на k-ом полигоне выясняется, что точка лежит по наружную сторону этого полигона(плоскости). И тогда смотрится количество пересечений отрезка со всеми(!то есть n) полигонами. В этом случае итоговая сложность o(k+n), где k <= n.

Ячейки можно рассматривать как некий массив некоторых подмножеств, где переход к элементу происходит всегда за o(1). И очень сильно уменьшает объём проверяемых полигонов. Способ с лучом и пересечением работает же? Здесь то же самое, просто фигура, рассматриваемая в данной ячейке, не факт, что образует замкнутую фигуру. Поэтому проверка на четность/нечетность пересечений не является достаточной, так как не понятно по какую сторону от этой поверхности находится исследуемый "объём", поэтому предварительно рассматривается позиционирование точки относительно полигона.

Сделаю и так и через bsp(тут придётся поразбираться), результаты постараюсь привести
зы Кстати, ячейки в которые не попало ни одного полигона можно считать 100% попаданием в объём(или 100% не попаданием), если предварительно их обработать. Что для однородных фигур, очень хорошее подспорье. Например сфера вписанная в куб из 20х20х20 ячеек будет пересекать своим объёмом собой ~4200 ячеек из них ~3000 ячеек будут полностью лежать в ней. То есть всего в ~1200 ячейках из 8000 надо будет искать попадание. В остальных со сложностью o(1) будет известно попадание/непопадание. Ну, конечно, нужна серьёзная предобработка. В случае с деревом сложность всегда будет o(log(n)).
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 13:52
Внешняя/внутренняя неприменимо, т.к. полигон может находиться в ноде, но не перекрывать искомую точку. Поэтому надо искать пересечение луча с тр-ком, см Moeller-Tumborn и все такое.

Если Вы строите "просто делить кубик" (вместо дерева), то это конечно проще, но возникают серьезеые проблемы с объемом данных. Напр для неск объектов придется делать "кубик для каждого", а если объект рассредоточен.. Словом, рано или поздно все эти проблемы достанут и переделывать придется. Возьмите сразу нормальное BVH/BSP, пока Вы теряете время.
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
10.09.2015, 15:22  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Внешняя/внутренняя неприменимо, т.к. полигон может находиться в ноде, но не перекрывать искомую точку. Поэтому надо искать пересечение луча с тр-ком, см Moeller-Tumborn и все такое.
Покажите, пожалуйста, на конкретном примере(2d). Честно говоря не могу понять про какой нод идёт речь - это ячейка имеется ввиду? Если многоугольник выпуклый, то условия внутр/внешн достаточное(это по-моему очевидно). В случаях не выпуклого это условие то же может выполниться, если точка лежит в выпуклом многоугольнике образованном из не выпуклого путём продолжения его сторон до новых точек пересечения. Точка А будет проверена через 4 итерации. Во втором случае точка B будет лежать в "положительной" полуплоскости образованной прямой 23, здесь придётся дополнительно проверить пересечение с остальными сторонами. Очевидно, что отрезок проведенный из B в любую точку отрезка 23 (кроме вершин) будет пересекать один единственный раз стороны многоугольника и это будет сторона 12


Цитата Сообщение от Igor3D Посмотреть сообщение
Если Вы строите "просто делить кубик" (вместо дерева), то это конечно проще, но возникают серьезеые проблемы с объемом данных. Напр для неск объектов придется делать "кубик для каждого", а если объект рассредоточен.. Словом, рано или поздно все эти проблемы достанут и переделывать придется. Возьмите сразу нормальное BVH/BSP, пока Вы теряете время.
Вот здесь я как раз готов пожертвовать памятью в угоду скорости, а объект у меня будет один. Но за совет спасибо, буду разбираться с bsp.
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 16:21
Цитата Сообщение от Skaarj Посмотреть сообщение
Покажите, пожалуйста, на конкретном примере(2d).
Я не о том говорю. Ну нашли Вы пересечение луча с одним полигоном, и что? Даже в простейшем случае это всего лишь "передняя стенка", нужно еще найти "заднюю" и убедиться что искомая точка лежит между передней и задней. А если 3D объект concave (невыпуклый), то передних и задних может быть сколько угодно. Поэтому остается топать и топать по лучу пока расстояние до следующего пересечения не превысит расстояние до искомой.

Рассмотрение concave полигонов в 3D лишено смысла. Они могут храниться в данных модели (впрочем достаточно редко), но для рендера они обязательно разбиваются на тр-ки. Максимум 4-угольник может рендериться напрямую, но даже это проблематично, большинство raytracer'ов работают только с тр-ками.

И не стоит полагаться на корректный "wind order" (так называют порядок вертексов в полигоне) - да, считается хорошим тоном его соблюдать, но он отнюдь не гарантируется.

Цитата Сообщение от Skaarj Посмотреть сообщение
потому что фигура в ячейке по сути является пересечение двух объёмов и нужно найти новые вершины этой фигуры(для меня это нетривиально)
Если есть желание - расскажите чего хотите добиться, обычно внутри/снаружи решается схемой построения
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
10.09.2015, 17:30  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Я не о том говорю. Ну нашли Вы пересечение луча с одним полигоном, и что? Даже в простейшем случае это всего лишь "передняя стенка", нужно еще найти "заднюю" и убедиться что искомая точка лежит между передней и задней. А если 3D объект concave (невыпуклый), то передних и задних может быть сколько угодно. Поэтому остается топать и топать по лучу пока расстояние до следующего пересечения не превысит расстояние до искомой.
Почему с одним? Я ищу пересечение луча(отрезка) со всеми полигонами, но только в этой ячейке. Полигоны у меня заданы треугольниками, поэтому о не выпуклости и не идёт речи. Не выпуклая может быть фигура образованная этими полигонами.

Цитата Сообщение от Igor3D Посмотреть сообщение
Рассмотрение concave полигонов в 3D лишено смысла. Они могут храниться в данных модели (впрочем достаточно редко), но для рендера они обязательно разбиваются на тр-ки. Максимум 4-угольник может рендериться напрямую, но даже это проблематично, большинство raytracer'ов работают только с тр-ками.
И не стоит полагаться на корректный "wind order" (так называют порядок вертексов в полигоне) - да, считается хорошим тоном его соблюдать, но он отнюдь не гарантируется.
Полигоны у меня заданы треугольниками, поэтому они всегда выгнуты Насчёт порядка подачи вершин..можно конечно устроить упорядочивание на всякий случай, но судя по тому что модели нормально рендерятся c glCullFace(GL_BACK) то нормали полигонов смотрят в нужную сторону.

Цитата Сообщение от Igor3D Посмотреть сообщение
Если есть желание - расскажите чего хотите добиться, обычно внутри/снаружи решается схемой построения
Нужно смоделировать некоторые процессы в теле, для удобства загрузки используется формат *.obj от него мне нужны только вершины и их порядок, ну и нормали вершин для реалистичного рендеринга, хотя они присутствуют далеко не везде, поэтому проще будет самому рассчитать их. Возможно расширю под другие форматы, чтобы легко было импортировать объекты "нужной формы". Будет использоваться метод Монте-Карло, поэтому предполагаемое количество точек может быть очень большим(зависит от точности). Поэтому нужно максимально упростить проверку точки на принадлежность этой фигуре, можно путём всяких предварительных расчётов. Раскидывание объёмов по бинарному дереву выглядит очень привлекательно. Осталось понять как выбирать отсекающие плоскости.
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 18:04
Цитата Сообщение от Skaarj Посмотреть сообщение
Почему с одним? Я ищу пересечение луча(отрезка) со всеми полигонами, но только в этой ячейке.
Ну в этой ячейке (ноде) аж 1 полигон, что дальше?

Цитата Сообщение от Skaarj Посмотреть сообщение
Нужно смоделировать некоторые процессы в теле, для удобства загрузки используется формат *.obj от него мне нужны только вершины и их порядок, ну и нормали вершин для реалистичного рендеринга, хотя они присутствуют далеко не везде, поэтому проще будет самому рассчитать их. Возможно расширю под другие форматы, чтобы легко было импортировать объекты "нужной формы". Будет использоваться метод Монте-Карло, поэтому предполагаемое количество точек может быть очень большим(зависит от точности). Поэтому нужно максимально упростить проверку точки на принадлежность этой фигуре, можно путём всяких предварительных расчётов. Раскидывание объёмов по бинарному дереву выглядит очень привлекательно. Осталось понять как выбирать отсекающие плоскости.
Есть такая вещь "convex decomposition", довольно мерзкая - и точность не очень, и считаться может долго. Но она позволяет 1 раз (на фазе предрасчета) разбить concave объект на серию convex, а там уже все просто и с объемом и с заполнением.

А вообще запрягайте raytracer, и чем раньше, тем лучше
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
10.09.2015, 18:27  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Ну в этой ячейке (ноде) аж 1 полигон, что дальше?
Если в ноде один полигон, это значит что у нас ровная поверхность, поэтому через нормаль однозначно определяется, где внутренняя часть фигуры, где наружная и соответсвтенно легко высчитывается куда падает точка.
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
10.09.2015, 18:44
Цитата Сообщение от Skaarj Посмотреть сообщение
Если в ноде один полигон, это значит что у нас ровная поверхность, поэтому через нормаль однозначно определяется, где внутренняя часть фигуры, где наружная и соответсвтенно легко высчитывается куда падает точка.
Наконец-то понял Ну это практически расчет на 1 несложную модель. А возни все равно хватает...
1
4 / 4 / 0
Регистрация: 14.09.2015
Сообщений: 39
14.09.2015, 13:17
Думаю, принципиально точный алгоритм не ускорить, но если надо решать эту задачу практически, то можно для фигур иметь "габарит" - для каждой координаты определить интервал занятый фигурой. И соответственно первым шагом проверять попадание в интервал. Как правило, пространство вне фигуры много больше самой фигуры, и практически это ускорит алгоритмы типа рендеринга.
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
16.09.2015, 10:31  [ТС]
Цитата Сообщение от Эпюр Монжа Посмотреть сообщение
Думаю, принципиально точный алгоритм не ускорить, но если надо решать эту задачу практически, то можно для фигур иметь "габарит" - для каждой координаты определить интервал занятый фигурой. И соответственно первым шагом проверять попадание в интервал. Как правило, пространство вне фигуры много больше самой фигуры, и практически это ускорит алгоритмы типа рендеринга.
Ну в общем изначально я так и собирался делать - узнаешь минимальные/максимальные координаты фигуры, помещаешь её в этот параллелепипед и потом его разбиваешь на n ячеек с помещением полигонов в каждую. Вопрос изначально был как проверять в этих интервалах(ячейках), ведь там скорее всего будет незамкнутая фигура, а значит пересечение луча не определит внутри/снаружи точка. Ну с этим в общем то разобрались
А вот разбиение "габарита" на ячейки поменьше оказалось не такой уж и простой задачей как я задумывал изначально - нахождение вершины полигона в ячейке/интервале является достаточным, но не необходимым условием. Вот тут как раз и помогло двоичное разбиение пространства, а вот самое интересное это проиндексировать листья этого дерева так чтобы его можно было свести к структуре cell[ind_x][ind_y][ind_z] ради чего это всё и замышлялось собственно
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5285 / 4067 / 1391
Регистрация: 30.07.2012
Сообщений: 12,474
16.09.2015, 11:10
Цитата Сообщение от Skaarj Посмотреть сообщение
Мне нужно узнать принадлежит ли точка данной фигуре, заданной через координаты вершин
Давным-давно (еще был в ходу старый добрый gwBasic) один мой студент решил аналогичную задачу следующим образом: он залил определенным цветом всю фигуру (как сейчас помню, это был разносторонний треугольник), а потом проверил, какой цвет возвращает ТОЧКА с заданными координатами. Если цвет совпадал с цветом заливки - точка внутри фигуры, если не совпадал - вне фигуры...
1
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
16.09.2015, 11:20
Цитата Сообщение от Skaarj Посмотреть сообщение
Вот тут как раз и помогло двоичное разбиение пространства, а вот самое интересное это проиндексировать листья этого дерева так чтобы его можно было свести к структуре cell[ind_x][ind_y][ind_z] ради чего это всё и замышлялось собственно
BSP делит пр-во на 2 куба. Каждый их которых опять разбивается и.т.д. до тех пор пока куб не содержит достаточно мало полигонов или дальнейшее разбиение неэффективно или, в конце-концов, исчерпана память (бывает и так)

Поиск определяет какой из 2 кубов (или оба) пересек луч и повторяет это рекурсивно пока не обнаружен "лист" (нод содержащий полигоны а не дочерние кубы). Если оба куба пересечены, то спуск продолжается по первому, а второй помещается на стек.

Вот собственно и все в помощь велосипедисту
0
2 / 2 / 4
Регистрация: 28.06.2013
Сообщений: 56
16.09.2015, 12:50  [ТС]
Цитата Сообщение от VSI Посмотреть сообщение
Давным-давно (еще был в ходу старый добрый gwBasic) один мой студент решил аналогичную задачу следующим образом: он залил определенным цветом всю фигуру (как сейчас помню, это был разносторонний треугольник), а потом проверил, какой цвет возвращает ТОЧКА с заданными координатами. Если цвет совпадал с цветом заливки - точка внутри фигуры, если не совпадал - вне фигуры...
Про этот способ я знаю, но к сожалению у меня трехмерный случай, поэтому я с трудом представляю как его реализовать в моём случае. Хотя если это возможно + задействовать GPU, то наверное можно очень сильно по скорости выиграть.

Цитата Сообщение от Igor3D Посмотреть сообщение
Поиск определяет какой из 2 кубов (или оба) пересек луч и повторяет это рекурсивно пока не обнаружен "лист" (нод содержащий полигоны а не дочерние кубы). Если оба куба пересечены, то спуск продолжается по первому, а второй помещается на стек.
С обнаружением листа в общем то проблем нету - обход деревьев я помню как происходит . Как индексировать куб(параллелепипед), разбитый на множество мелких понятно, а вот как этим индексам куба сопоставить листья моего дерева не совсем понятно. Плюс ко всему прочему дабы чуточку ускорить этот процесс, дерево будет разбиваться не полностью, а пока в узле существует полигон - дальше нету смысла, там либо полное, либо пустое, но однородное пространство(причём в форме параллелепипеда). То есть за пустым узлом дерева может лежать достаточно большое количество таких вот ячеек и всем им надо сопоставить нужный индекс. Но это решаемо
0
1955 / 812 / 113
Регистрация: 01.10.2012
Сообщений: 4,705
Записей в блоге: 2
16.09.2015, 13:11
Цитата Сообщение от Skaarj Посмотреть сообщение
параллелепипеда
Не ломайте язык, просто "куб", всем ясно что размеры по осям могут быть разными.

Вот пробежала неделька... Это время вполне достаточно чтобы найти готовый raytracer и разобраться в нем (ничего сложного нет). А может уже и подключить и "закрыть вопрос". Или может потребуется еще неделька - но это "обозримо". Но велосипедист увлечен своей новой интересной идеей.... И так пройдет еще неделька. И еще. А потом как-то пропадает настроение, все осточертело (сломался спортсмен). Ах как часто все это со мной бывало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2015, 13:11
Помогаю со студенческими работами здесь

Нахождение точки внутри прямоугольника
Дано: Прямоугольник, заданный 4 точками. Точка заданная координатами. Нужно написать функцию, возращающую Труе\Фалсе на нахождение точки...

Задача на нахождение точки внутри треугольника
Помогите, пожалуйста. Правила, 5.18. Запрещено размещать задания в виде картинок и других файлов с их текстом.

Поиск решения, нахождение максимума начиная с точки минимума
Стоит задача, найти минимум функции двух переменных, использую &quot;поиск решения&quot;. Сделал, все работает, но есть одно но! Нахожу минимум...

как создавать нестандартные фигуры в делфи?
в делфи есть стандартный прямоугольник - процедура rectangle, а мне нужно рисовать на канве что-то вроде такого, к примеру или другие...

Интересные задачи, нестандартные решения
Задача 1. Дано число n. Найти сумму n-значных чисел. Ограничение 0&lt;n&lt;=100. Хочу сказать что эту задачу я решил, просто интересно кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub Примеры вызова: # Указанная валюта 'EUR' floatrates-rub -Code 'EUR' # Список имеющихся кодов валют floatrates-rub -Available function floatrates-rub {
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5 Примеры вызова Get-WeatherRP5rss с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr Примеры вызова: Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) { $url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js' $data = Invoke-RestMethod -Uri $url $esc = 27 . . .
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru