Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ПРОВЕРИТЬ ПРИНАДЛЕЖНОСТЬ ТОЧКИ МНОГОУГОЛЬНИКУ (https://javascript.ru/forum/misc/23980-proverit-prinadlezhnost-tochki-mnogougolniku.html)

Livanderiaamarum 13.12.2011 22:56

ПРОВЕРИТЬ ПРИНАДЛЕЖНОСТЬ ТОЧКИ МНОГОУГОЛЬНИКУ
 
ПРИВЕТ ВСЕМ
Нужна функция определяющая принадлежит ли точка многоугольнику. Пространство 2D.
Функция должна принимать 2 аргумента, массив с координатами вершин многоугольника, и координаты точки.

координата должна обозначаться массивом например [1,4] означает
по иксу 1 по игрику 4.

функция должна возвращать либо true либо false


функция должна вызываться типа:

belongs(	
		  [
			[6,4], // массив 
			[6,0], // с
			[1,2], // вершинами 
			[4,5]  // многоугольника
		  ],
			[2,1]  // координата точки
	)



Livanderiaamarum 13.12.2011 23:01

если конечно кто-то осилит;)

dmitriymar 13.12.2011 23:12

Цитата:

Сообщение от Livanderiaamarum
если конечно кто-то осилит

если кто-то захочет потратить на это своё время,какое не обязан тратить!!

Livanderiaamarum 13.12.2011 23:15

Цитата:

Сообщение от dmitriymar (Сообщение 142624)
если кто-то захочет потратить на это своё время,какое не обязан тратить!!

это само собой имеется ввиду из тех кто заточит кто осилит;)

с другой стороны можно и не захотеть потому что задача слишком трудная для здешних посетителей (это ж вам не сайтики клепать) и по этому потребует много времени кое они тратит могут не захотеть. Своеобразный такой lvl детектор, кто возьмется, а кто нет. А кто-то если и возьмется из-за понта, то гуглить полезет потому что ВООБЩЕ НЕ ПРЕДСТАВЛЯЕТ как такие вещи можно сделать, как я уже говорил (это вам не сайтики клепать).:haha:

dmitriymar 13.12.2011 23:18

Цитата:

Сообщение от Livanderiaamarum
задача слишком трудная (это же не сайтики клепать вам) и по этому потребует много времени.

никто тебе не обязан тратить своё время на решение задачи ,какая с вероятностью почти 100% не встретится в жизни. ksa уже озвучил самое оптимальное и быстрое решение. если нужно другое решение ,то есть раздел http://javascript.ru/forum/job/ ,в каком можно найти исполнителя и договорится за оплату проделанной им работы.

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

Livanderiaamarum 13.12.2011 23:23

Цитата:

Сообщение от dmitriymar (Сообщение 142627)
никто тебе не обязан тратить своё время на решение задачи ,какая с вероятностью почти 100% не встретится в жизни. ksa уже озвучил самое оптимальное и быстрое решение. если нужно другое решение ,то есть раздел http://javascript.ru/forum/job/ ,в каком можно найти исполнителя и договорится за оплату проделанной им работы.

МНЕ тратить время? я эту задачу уже решил! седня за 3 часа написал) повозился и трассировкой луча по вершине полигона, там пришлось разные случаи учитывать. на деле это оказалось три if'a ))
Кому интересно и у кого уровень позволяет тот может попробовать.


а вот на счет не встретится в жизни это полный бред. Смотря какой уровень программиста. Сейчас уже начинается эпоха web приложений, canvas и прочие вещи. тут большинство быдловерстальщиков автоматически отсеиваются.)) вроде тех которые знают js на уровне "как цвет текста поменять и ajax запрос отправить"

dmitriymar 13.12.2011 23:25

Livanderiaamarum,
решение я тебе написал -не думаю что ты смог найти подобное решение
если площадь 2х из получившихся равна 0 то точка лежит на одной из линий ограничивающих фигуру

Livanderiaamarum 13.12.2011 23:35

Цитата:

Сообщение от dmitriymar (Сообщение 142631)
Livanderiaamarum,
решение я тебе написал -не думаю что ты смог найти подобное решение
если площадь 2х из получившихся равна 0 то точка лежит на одной из линий ограничивающих фигуру

прости меня конечно бренного, но как ты будешь считать площадь само пересекающейся фигуры? я тоже думал вначале векторами сделать потом подумал что не вариант. Потому думал в сторону фракталов, но тоже сложно как то. потом сидел чертил на листке.и кое что заметил)

dmitriymar 13.12.2011 23:36

Цитата:

Сообщение от Livanderiaamarum
МНЕ тратить время? я эту задачу уже решил! седня за 3 часа написал)

были бы знания ушлобы гораздо меньше времени:)
Цитата:

Сообщение от Livanderiaamarum
Кому интересно и у кого уровень позволяет тот может попробовать.

и не интересно и уровень практически всех на форуме позволяет-ты не пуп земли и не Энштейн -разачарую;)

dmitriymar 13.12.2011 23:38

Цитата:

Сообщение от Livanderiaamarum
прости меня конечно бренного, но как ты будешь считать площадь само пересекающейся фигуры?

парень я знаю координаты 4 вершин и 5 точки -дальше сплошная математика-определение длинны вектора зная координаты его начала и конца и теорема синусов/косинусов
а то что ты заметил-это примитивно-если точка не принадлежит фигуре-то длинны 3 векторов будут больше чем длинны 3х "прилежащих"(условно) к ним граней -на это ты потратил 3 часа?)-только это к параллелограмму только относится

melky 13.12.2011 23:40

можно погуглить про Метод суммирования углов.

PS нефиг мне больше чем заниматься, как анал вспоминать.в 12 часов ночи.

devote 13.12.2011 23:40

Цитата:

Сообщение от Livanderiaamarum
Кому интересно и у кого уровень позволяет тот может попробовать.

В этом то и дело, что интересно как правило в начале стадии изучения программирования. А это значит что те у кого уровень позволяет такой брехней не занимаются. И без этого дел хватает.

Livanderiaamarum 13.12.2011 23:44

Цитата:

Сообщение от dmitriymar (Сообщение 142638)
парень я знаю координаты 4 вершин и 5 точки -дальше сплошная математика-определение длинны вектора зная координаты его начала и конца и теорема синусов/косинусов
а то что ты заметил-это примитивно-если точка не принадлежит фигуре-то длинны 3 векторов будут больше чем длинны 3х "прилежащих"(условно) к ним граней -на это ты потратил 3 часа?)

ты ведь даже не понимаешь да)? думаешь так, как я думал в первые 10 минут)!!

а что мы скажем на это)??

dmitriymar 13.12.2011 23:48

Цитата:

Сообщение от Livanderiaamarum
а что мы скажем на это)??

а на это перечитай пост-я на это ответил. не думаю что ты нашел правильное решение.
самый простой путь предложил ksa изначально.
ну а судя по тому что ты указал 4 точки -направление твоих мыслей ясно изначально
И повторю ещё раз -метод разбиения на треугольники и вычисления их площади и здесь сработает а определить ближ вершины это дело техники

Livanderiaamarum 13.12.2011 23:50

Цитата:

Сообщение от dmitriymar (Сообщение 142644)
а на это перечитай пост-я на это ответил. не думаю что ты нашел правильное решение.
самый простой путь предложил ksa изначально.
ну а судя по тому что ты указал 4 точки -направление твоих мыслей ясно изначально

твой способ подходит ТОЛЬКО для выпуклых многоугольников
это и в яслях дети сделать могут))
то что я указал вначале 4 вершины это ЧИСТО для того чтобы показать что должна принимать функция. на это даже смотреть не стоит

dmitriymar 13.12.2011 23:55

Цитата:

Сообщение от Livanderiaamarum
ТОЛЬКО для выпуклых многоугольников

для любых подходит -если отсортировать точки
разговор ни о чём -ты мне напоминаешь не по детски
http://javascript.ru/forum/project/2...tml#post142492

Livanderiaamarum 14.12.2011 00:00

Цитата:

Сообщение от dmitriymar (Сообщение 142646)
для любых подходит -если отсортировать точки

можно поподробнее?

п.с. моя функция заняла 60 строк кода с комментариями.

dmitriymar 14.12.2011 00:01

Цитата:

Сообщение от Livanderiaamarum
можно поподробнее?

а ты порисуй ещё 3 часа-может заметишь о чём я говорю.:)
нех огород городить -решение самое простое и правильное было озвучено ещё вчера.

Livanderiaamarum 14.12.2011 00:05

Цитата:

Сообщение от dmitriymar (Сообщение 142650)
а ты порисуй ещё 3 часа-может заметишь о чём я говорю.:)
нех огород городить -решение самое простое и правильное было озвучено ещё вчера.

нужна оптимизация, видеокарту нагружать нужно по минимуму, делаем игру для iPHON/ как тут быть?

п.с. я все же думаю ваш метод не работает) вернее вы просто НЕ СМОЖЕТЕ ОТСЕИТЬ НУЖНЫЕ ВЕРШИНЫ. так как нет способа определить нужность.

dmitriymar 14.12.2011 00:07

Цитата:

Сообщение от Livanderiaamarum
делаем игру для iPHON/ как тут быть?

в таком случае ты абсолютно не рубишь на каком принципе делаются игры для ай фонов и прочего подобного:)
Цитата:

Сообщение от Livanderiaamarum
так как нет способа определить нужность.

от того что ты не можешь представить себе алгоритм-он из природы не исчезнет

Livanderiaamarum 14.12.2011 00:09

Цитата:

Сообщение от dmitriymar (Сообщение 142654)
в таком случае ты абсолютно не рубишь на каком принципе делаются игры для ай фонов и прочего подобного:)

конечно не рублю, мы НЕ делаем игру для айфона я вообще один дома сижу! я тебе условия описал когда тот метод не подойдет! че уж ты:) !

надо было слово ДОПУСТИМ написать), забыл

dmitriymar 14.12.2011 00:12

Цитата:

Сообщение от Livanderiaamarum
конечно не рублю, мы НЕ делаем игру для айфона я вообще один дома сижу! я тебе условия описал когда тот метод не подойдет! че уж ты !

не одна книга написана про разработку игр под мобильные устройства броузеры и прежде чем изобретать велосипед- стоило бы с ними сначала ознакомится:)
Делайте но создавших велосипед не ездящий наверное миллионы.
И если на js форуме-ясно какую библиотеку пользуете-методы разработки игр в какой основываются именно на материале описанной в этих книгах.
Дримвейвер 5.5 когда освоили ?вчера ? позавчера?

Livanderiaamarum 14.12.2011 00:21

Цитата:

Сообщение от dmitriymar (Сообщение 142656)
не одна книга написана про разработку игр под мобильные устройства броузеры и прежде чем изобретать велосипед- стоило бы с ними сначала ознакомится:)
Делайте но создавших велосипед не ездящий наверное миллионы.
И если на js форуме-ясно какую библиотеку пользуете-методы разработки игр в какой основываются именно на материале описанной в этих книгах.
Дримвейвер 5.5 когда освоили ?вчера ? позавчера?

что? вы хотите сказать что я плохой программист(?

trikadin 14.12.2011 00:21

dmitriymar, хватит. Не корми тролля.

Livanderiaamarum, вам в раздел работа.

Greck 14.12.2011 00:25

Как бы все есть:

http://ru.wikipedia.org/wiki/%D0%97%...B8%D0%BA%D1%83

dmitriymar 14.12.2011 00:28

Цитата:

Сообщение от Livanderiaamarum
что? вы хотите сказать что я плохой программист(?

пока ничего опровергающего это не видел.

Цитата:

Сообщение от Livanderiaamarum
Сообщение от GuardCat Посмотреть сообщение
var victimsArray = document.querySelectorAll("." + className), x;
var victimParent;
ахахахаха 2 раза переменные декларирует))))

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

dmitriymar 14.12.2011 00:28

trikadin,
та уже сам просёк что увлёкся:)

trikadin 14.12.2011 00:31

Цитата:

Сообщение от dmitriymar
та уже сам просёк что увлёкся

Сам такой же)

Livanderiaamarum 14.12.2011 00:33

Цитата:

Сообщение от dmitriymar (Сообщение 142662)
пока ничего опровергающего это не видел.


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

таймер обратного отсчета посмотри в темах)
так же функция определения пересечения прямоугльников:)

Livanderiaamarum 14.12.2011 00:34

Цитата:

Сообщение от Greck (Сообщение 142661)

да, я посмотрел) уже)! метод который я используя называется трасировка луча) но если луч попадает в вершину полигона то приходится повозится)

dmitriymar 14.12.2011 00:38

Цитата:

Сообщение от Livanderiaamarum
таймер обратного отсчета посмотри в темах)

посмотрел-сразу бред . причина элементарна. если таймеру поставить задержку в 1 секунду -это не значит что действие выполниться равно через секунду,а значит что действие выполниться не ранее чем через секунду:) читай доки,как тебе уже не один раз советовали.

Livanderiaamarum 14.12.2011 00:43

Цитата:

Сообщение от dmitriymar (Сообщение 142668)
посмотрел-сразу бред . причина элементарна. если таймеру поставить задержку в 1 секунду -это не значит что действие выполниться равно через секунду,а значит что действие выполниться не ранее чем через секунду:) читай доки,как тебе уже не один раз советовали.

то что ты опсиал я и задумывал, что в этом не верного и бредового? задержка НЕ МОЖЕТ изменяться. ты то ли дурачек то ли реально притворяешься)

Magneto 14.12.2011 00:44

Цитата:

Сообщение от dmitriymar (Сообщение 142668)
посмотрел-сразу бред . причина элементарна. если таймеру поставить задержку в 1 секунду -это не значит что действие выполниться равно через секунду,а значит что действие выполниться не ранее чем через секунду:) читай доки,как тебе уже не один раз советовали.

Аха-ха, я код не смотрел, слишком он оптимальный. А так да, время нужно получать каждый раз заново.

dmitriymar 14.12.2011 00:45

Цитата:

Сообщение от Livanderiaamarum
задержка НЕ МОЖЕТ изменяться. ты то ли дурачек то ли реально притворяешься)

читай доки ,и что такое очередь и как она работает

Magneto 14.12.2011 00:47

Кто-то писал: "Да это события браузера в них я не понимаю, а вот в скрипте я весь пипец какой прогер". Ну теперь мы видим какой ты прогер.

Livanderiaamarum 14.12.2011 00:49

Цитата:

Сообщение от dmitriymar (Сообщение 142672)
читай доки ,и что такое очередь и как она работает

я тебя вообще не понмиаю у меня было 2 варианта дрюкать new Date либо сделать КОНКРЕТНУЮ реализацию. я сделал САМЫЙ ОПТИМАЛЬНЫЙ ТАЙМЕР. при чем не делал лишнего. если бы я делал таймер на все случаи жизни я бы сделал фабриук таймеров, у каждого был бы свой id калбаки и.т.п.)) ты правда на столько узколобый чтобы понять это)? или тебя до сих пор батхердит что ты не можешь определить принадлежность точки полигону если он не выпуклый ?
не в обиду но по моему у тебя батхерд:) пытаешься юлозить лишь бы не отвечать на вопрос про отсеивание ненужных вершин;)

devote 14.12.2011 00:50

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

Livanderiaamarum 14.12.2011 00:51

Цитата:

Сообщение от devote (Сообщение 142676)
ахаха... жаль мне того человека что попросил таймер... поставит таймер на месяц, а он отсчитывать его будет два. :D

мне тоже жаль;)

Magneto 14.12.2011 00:51

devote - зато как оптимально :lol:

dmitriymar 14.12.2011 00:52

Livanderiaamarum,
ещё раз повторю-читай как работает очередь


Часовой пояс GMT +3, время: 05:19.