Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

Проверка столкновений   Найти похожие ветки 

 
VolanD666   (2005-04-01 14:55) [0]

Здрасти, товарсчи! Подскажите, пожалуйста, как решить такой вопрос:
Пусть имеется один четырехугольник (двухмерный) и точка (x,y), как узнать находится ли точка в ЧЕТЫРЕХУГОЛЬНИКЕ?

Можно, конечно, провести из каждой вершины линию до этой точки и проверить пересечение их со сторонами четырехугольника, но тогда как это сделать, если мне даны их координаты?


 
A22 ©   (2005-04-01 16:12) [1]

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


 
NE_Parovoz   (2005-04-01 19:56) [2]

VolanD666
умножить вектор точки((x,y)-(вершина)) на нормали к сторонам
если все числа >0 то внутри
З.Ы. нормали внутрь четыреугольника


 
NE_Parovoz   (2005-04-01 20:11) [3]

http://pics.binary.ru/full/chT.jpg
зелёный -((x,y)-(вершина))
Если точка внутри DotProduct с нормалью >0 (+)


 
VolanD666   (2005-04-02 15:33) [4]

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


 
XProger ©   (2005-04-02 16:09) [5]


//Положение точки p относительно прямой (p1, p2)
function Side(p, p1, p2: TPoint): boolean;
var
a, b: TPoint;
begin
a.X := p2.X - p1.X;
a.Y := p2.Y - p1.Y;
b.X := p.X - p1.X;
b.Y := p.Y - p1.Y;
Result := (a.X * b.Y - a.Y * b.X) >= 0;
end;


И про "впуклые" четырёхугольники - забудь ;)))


 
VolanD666   (2005-04-07 12:12) [6]

Вах, работает. Спасибо, XProger.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.853 c
1-1120327620
spectr
2005-07-02 22:07
2005.07.18
Интересный, наверное, вопрос


3-1118319732
Андрей_СК
2005-06-09 16:22
2005.07.18
Сравнение структуры двух таблиц


14-1119348247
DillerXX
2005-06-21 14:04
2005.07.18
Delphi2C


1-1119987879
Чайник
2005-06-28 23:44
2005.07.18
Проблема с целочисленной переменной.


1-1119693133
grol
2005-06-25 13:52
2005.07.18
Кнопка-компонент из 3 картинок (image ей)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский