Точка в квадрате
Как узнать находится ли точка в квадратебесли он двигается.
Третий день бошку ломаю.:eek:
http://algolist.manual.ru/
Если не найдешь, то обьясни подробнее? Что за задача?
посмотри здесь
Если не найдешь, то обьясни подробнее? Что за задача?
Вообще я рисую вращающийся куб.Но мне нужно удалить не лицевые грани .Даны координаты квадрата и искомой точки.
Как узнать находится ли точка в квадратебесли он двигается.
Третий день бошку ломаю.:eek:[/quote]
а какая разница - двигается он или нет? ;)
Существует много способов, но мне нравиться вот этот - http://allprogramming.jino-net.ru/ebooks/delphi/book3/7.phtml
На той же страничке есть и другие методы.
Можно через углы рассчитывать. Допустим для граней, лежащих в плоскости Y - если угол между гранью больше нуля но меньше 180, то её нужно отрисовывать, если нет, тогда её не отрисовываем. Почему именно такие границы угла - да очень просто, возьмите шар, взлядом можно увидеть лишь половину сферы (т.е. 180 градусов из 360), как бы вы её не вретели.
2 3A3-968M : На предложенной мною страничке описан именно этот метод)
Там через уравнение плоскости, а в моём случае нужно всего лишь тангенс посчитать можно.
Матиматически это все эквивалентно, но применение тригонометрических функций в комп. графике неэффективно. ), По-этому лучше первый метод.
Цитата:
...взлядом можно увидеть лишь половину сферы (т.е. 180 градусов из 360)...
это справедливо только при параллельном (ортогональном) проектировании (или проецировании... это кому как нравица).... в перспективе же (центральное проектирование) угол, который ты видешь меньше 180°.... вот
Если грамотно реализовать вычисление тангенса, то он обойдётся "дешевле" (т.к. tg(A) = sin(A)/cos(A) = sin(A)/sin(Pi/2 - A) =..синус реализовать не сложно) , чем уравнение плоскости. Хотя, я думаю, спор бессмысленен, это дело вкуса, а на вкус и цвет...сами знаете что.
Ошибаешься. Вычисления с помощью +, *, вычисляются намного быстрее. Отсюда вывод лучше пользоваться ими. И если использовать тригонометрию, то рядами. Но думаю спор не стоит продолжать не для этого вопрос был задан)
Необходимо каждый тик таймера (благодаря которому вращаеться куб, или двигаеться квадрат) решать систему неравенств (если каждая прямая квадрата задана уравнением):
(считая что А(х0;y0) - даная точка)
Есть прямые y=k1*x+b1, y=k2*x+b2, y=k3*x+b3, y=k4*x+b4)
Первые две прямые: верхняя и левая стороны квадрата, остальные две - правая и нижняя =>
if (y0<k1*x0+b1) and (y0<k2*x0+b2) and (y0>k3*x0+b3) and (y0>k4*x0+b4) then (...точка лежит внутри квадрата...)