Ахтунк... Задачка. Геометрия. 3 класс.

Ifgen
Только разбить на выпуклые сложная задача на самом деле :-)
0
rasso
От пользователя Ifgen
Только разбить на выпуклые сложная задача на самом деле

В чём сложность?
0
Vаnо
какая муть с лучами(хотябы по тому что лучь может пойти по одной из сторон многоугольника, и тогда точек пересечения будет бесконечное моножество мощьностью континум.. хы так вроде оно назвалось).. проще проинтегрировать и узнать площадь n угольника, далее интегрируем и суммируем площади треугольников (X_i,Y_i)(X_i+1,Y_i+1) (Х0,Y0) где i пробегает от 1...n-1 из первого выичитаем второе если 0 то внутри, если не 0 то снаружи, и все это делается аналитически....
0
Ifgen
От пользователя rasso
В чём сложность?

Предложи простой способ, может я туплю конечно...
Я что-то не могу
0
Ifgen
От пользователя Vano
какая муть с лучами(хотябы по тому что лучь может пойти по одной из сторон многоугольника, и тогда точек пересечения будет бесконечное моножество мощьностью континум.. хы так вроде оно назвалось).. проще проинтегрировать и узнать площадь n угольника, далее интегрируем и суммируем площади треугольников (X_i,Y_i)(X_i+1,Y_i+1) (Х0,Y0) где i пробегает от 1...n-1 из первого выичитаем второе если 0 то внутри, если не 0 то снаружи, и все это делается аналитически....

С лучом нужно аккуратно учесть граничные случаи, об этом писал уже кто-то выше. Но это не муть, а одно из самых разумных решений задачи, если это программировать . А твой вариант тоже имеет граничные случаи. Например точка лежит прямо на стороне n-угольника или в вершине. Там сложно о треугольниках тогда говорить становится :-) А во вторых это для невыпуклых не будет работать, можно такой невыпуклый нарисовать и так точку поставить, что сумма площадей треугольников будет больше, чем площадь n-угольника, а точка при этом внутри. Например на первом рисунке в данной теме поместить точку внутрь поближе к точке (x1,y1)

[Сообщение изменено пользователем 25.07.2007 19:33]
0
Vаnо
От пользователя Ifgen
С лучом нужно аккуратно учесть граничные случаи, об этом писал уже кто-то выше. Но это не муть, а одно из самых разумных решений задачи, если это программировать . А твой вариант тоже имеет граничные случаи. Например точка лежит прямо на стороне n-угольника или в вершине. Там сложно о треугольниках тогда говорить становится А во вторых это для невыпуклых не будет работать, можно такой невыпуклый нарисовать и так точку поставить, что сумма площадей треугольников будет больше, чем площадь n-угольника, а точка при этом внутри

уел.. подумал..
1)граничные условия роли не играют при интегрировании есои точка попадает на одну из граней, то интеграл от этого треугольника будет 0
2) невыпуклый.. дай подумать... мысль пришла..
смотрим углы между вектором A (X_i,Y_i)(X_i+1,Y_i+1)
И B(X_i,Y_i)(X_i-1,Y_i-1) больше 180 градусов(это можно сделать програмным образом) оставляем меньше обрезаем массив поскольку многоугольник вогнутый. таким образом получаем несколько многоугольников которые будут уже выпуклыми а далее применяем способ выше...
0
ШУМный
блин )) пойду тоже в программисты )) думал минуты полторы :-D лучи, лучи - вы потом заколебетесь учитывать всякие исключения.

проще надо быть - есть 2 точки. сможете обределить "справа" или "слева" находится искомая красная точка ? (сможете - синусы-косинусы рулят). ну и так со всеми прямыми - в конце получите гарантированно верный ответ, где лежит нужная вам точка ))
0
Vаnо
От пользователя ШУМный
проще надо быть - есть 2 точки. сможете обределить "справа" или "слева" находится искомая красная точка ?

а если с низу :smoke:
0 / 1
John Dow
От пользователя ШУМный
блин )) пойду тоже в программисты )) думал минуты полторы :-D лучи, лучи - вы потом заколебетесь учитывать всякие исключения.

проще надо быть - есть 2 точки. сможете обределить "справа" или "слева" находится искомая красная точка ? (сможете - синусы-косинусы рулят). ну и так со всеми прямыми - в конце получите гарантированно верный ответ, где лежит нужная вам точка ))

ПАшо зачед :-)

маленько больше гемороя при впуклом многораннике но точно также описывается:-)

Хотя еще такой вариант... рисуешь это многогранник, и заливаешь его однотонно, потом проверяешь цвет в координатах этой точки если он равен залитому то она внутри если нет то снаружи
0
ШУМный
От пользователя John Dow
ПАшо зачед

сцуко )) я специально всю тему прочитал - искал, чо ты там предложил )) в итоге сам написал :-D
От пользователя John Dow
Хотя еще такой вариант... рисуешь это многогранник, и заливаешь его однотонно, потом проверяешь цвет в координатах этой точки если он равен залитому то она внутри если нет то снаружи

ну мы ж с математической точки зрения подошли )) ушлость на потом оставим ;-)
0
ШУМный
От пользователя Vano
а если с низу

кавычки видим, да ?

От пользователя John Dow

превед, третьеклассник :-D
0
John Dow
От пользователя ШУМный
сцуко )) я специально всю тему прочитал - искал, чо ты там предложил )) в итоге сам написал :-D

а я пля работал..вот только дома в тему залез:-D
0
ШУМный
От пользователя John Dow
а я пля работал..вот только дома в тему залез

не верю :-D был я у тя недавно - как-то не сильно ты трудился ;-)
0
John Dow
От пользователя Vano
а если с низу smoke

то наклоняем оси:-)
0
Ifgen
От пользователя ШУМный
в конце получите гарантированно верный ответ, где лежит нужная вам точка ))

Непонятно (с) Изложи как получим-то в конце концов :-) Ну и что такое справа или слева тоже непонятно :-) Ну и если ты борешься за отсуствие граничных случаев, то как быт когда лежит на одном уровне с
а)вертикальной линией - стороной многогранника
б)горизонтальной
Так что до зачета пока далеко :-)
0
Ifgen
От пользователя John Dow
рисуешь это многогранник, и заливаешь его однотонно, потом проверяешь цвет в координатах этой точки если он равен залитому то она внутри если нет то снаружи

Ты вычислительную сложность заливки всего многогранника по сравнению с лучом вообще представляешь? :-)
Заливать это копец. Очень долго, не всегда возможно (у тебя устройство без экрана скажем) и главное, просили решить математически :-)
0
ШУМный
От пользователя Ifgen
Непонятно (с) Изложи как получим-то в конце концов

а код на Си те не предоставить ? отлаженный ? не ? :-D


От пользователя Ifgen
Так что до зачета пока далеко

а программисты 1С все поняли ;-)
0
John Dow
От пользователя Ifgen
Непонятно (с) Изложи как получим-то в конце концов :-) Ну и что такое справа или слева тоже непонятно :-) Ну и если ты борешься за отсуствие граничных случаев, то как быт когда лежит на одном уровне с
а)вертикальной линией - стороной многогранника
б)горизонтальной

проверка на принадлежность точки линии у которой известны координаты концов делает на раз
0
Ifgen
От пользователя John Dow
проверка на принадлежность точки линии у которой известны координаты концов делает на раз

Отлично, почему тогда применение ее в случае с лучом напрягает, а в данном случае - нет? :-)
0
John Dow
От пользователя Ifgen
Ты вычислительную сложность заливки всего многогранника по сравнению с лучом вообще представляешь? :-)

эээне помню две или одна комнада на дельфях :-)
0
Ifgen
От пользователя ШУМный
а код на Си те не предоставить ? отлаженный ? не ? :-D

Нет. Ты объясни как ты воспользуешься информацией. Что она "левее" двух сторон и "правее" третьей скажем. Что отсюда следует-то? Ну и определи что такое все таки "право"
0
ШУМный
От пользователя Ifgen
Ты вычислительную сложность заливки всего многогранника по сравнению с лучом вообще представляешь?

дяденька кодит сразу в машинных кодах ? :-D
0
John Dow
От пользователя Ifgen
Отлично, почему тогда применение ее в случае с лучом напрягает, а в данном случае - нет?

меня не напрягает.. только Вам извесно что луч это вообщето бесконечная прямая с точкой начал и направлением :-)
0
Ifgen
От пользователя John Dow
эээне помню две или одна комнада на дельфях

Команда-то одна, ты время померяй :-) Даже на быстром компе видно иногда на глаз как идет заливка, настолько это тормозная вещь :-)
0
John Dow
если будем выпендриватся сейчас спрошу а в сколькимерной системе и в каком пространстве считаем :-)
0
Обсуждение этой темы закрыто модератором форума.