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

Вниз

Посчитать угол по 3 точкам   Найти похожие ветки 

 
@lex   (2003-02-27 16:52) [0]

Есть три точки заданные координатами. Как посчитать угол между направлениями первая - вторая, первая - третья точки.


 
RV   (2003-02-27 16:57) [1]

тебе дан треугольник, который легко вычисляется


 
pasha676   (2003-02-27 17:01) [2]

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


 
AFrolov   (2003-02-27 17:03) [3]

Через произведение векторов
a*b=mod(a)*mod(b)*cos(a^b)
из cos - получишь угол.


 
han_malign   (2003-02-27 17:11) [4]

Скалярное чего-то векторов (то-ли сумма, то-ли произведение, давно это было, можно вывести, но в лом)...
З.Ы. Выводится: через определение синуса/косинуса, а дальше разница двух углов...

> 22 года уже. Должен знать
- а мне 28 скоро, забыл все напрочь, хотя - понадобится - выведу...


 
@lex   (2003-02-27 17:12) [5]

Затык в том, что угол нужен от -180 до 180 градусов,
насколько я понимаю, по теореме косинусов получим от 0 до 180 - только модуль.
Конечно, можно знак отдельно посчитать, но должна же быть какая-нибудь простая формула для задачи класса для 9.


 
passm   (2003-02-27 17:20) [6]

@lex © (27.02.03 17:12)> Нарисуй треугольник с углом -90 градусов :))


 
@lex   (2003-02-27 17:25) [7]

Мне не нужны треугольники. Я хочу реализовать стандартный алгоритм проверки принадлежности точки многоугольнику.
Насколько я понимаю (если допустить что фигура без самопересечений) нужно пройти путь от первой точки через все и в нее же вернуться, суммируя при этом углы.
Если получится 0 - точка вне фигуры, 360 градусов - внутр фигуры.
Но, по-моему, углы нужно считать полные от -180 до 180 градусов.


 
pasha676   (2003-02-27 17:27) [8]


> - а мне 28 скоро, забыл все напрочь, хотя - понадобится
> - выведу...

В этом и смысл. Я тоже не помню. Но нарисую на бумажке, приведу к прямоугольному треугольнику, посчитаю косинус, ну и арккосинус.
Главное знать две вещи - принцып и где что в каком справочнике лежит :).
Знак угла можно получить проанализировав разность координат точек.


 
han_malign   (2003-02-27 17:36) [9]

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


 
Palladin   (2003-02-27 17:39) [10]

проще найти количество пересечений
1 строим отрезок выходящий из точки (которую проверяем на внутренность) и перпендикулярый одной из сторон, описывающего многоугольник, квадрата...
2 подсчитываем количество пересечений этого отрезка со сторонами многоугольника...
3 если четное то точка не попадает в многоугольник и наоборот

прохождение отрезка через углы многоугольника (и в случае самопересегающегося точки пересечения) увеличиваем счетчик на 2...


 
@lex   (2003-02-27 17:42) [11]

Я только такой алгоритм нашел. А зачем считать площади и что это даст? Если не сложно, кинь какую-нибудь ссылку о таком алгоритме.


 
RV   (2003-02-27 17:47) [12]


> @lex © (27.02.03 17:25)
> Мне не нужны треугольники. Я хочу реализовать стандартный
> алгоритм проверки принадлежности точки многоугольнику.
> Насколько я понимаю (если допустить что фигура без самопересечений)
> нужно пройти путь от первой точки через все и в нее же вернуться,
> суммируя при этом углы.
> Если получится 0 - точка вне фигуры, 360 градусов - внутр
> фигуры.
> Но, по-моему, углы нужно считать полные от -180 до 180 градусов.


фигура выпуклая или вообще


 
Palladin   (2003-02-27 17:49) [13]


> Palladin © (27.02.03 17:39)

правда не знаю стандартный это алгоритм или нет...
придумал года 3 назад, когд работал над ГИС проектом...
работало на ура :)


 
@lex   (2003-02-27 17:49) [14]

Фигура не обязательно выпуклая. Но для алгоритма суммирования углов это неважно.


 
@lex   (2003-02-27 17:52) [15]

Алгоритм подсчета пересечений тоже стандартный.
Я эти два алгоритма (сумма углов и число пересечений) в книжке "Интерактивная машинная графика" 1981 г.в. нашел.


 
RV   (2003-02-28 09:23) [16]

Во-первых, рассмотреть прямые, содержащие стороны треугольника. Если данная точка находится по ту же сторону от прямой, что и третья вершина, и это выполняется одновременно для всех трех прямых, то она расположена внутри треугольника.

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

В предложенной ниже программе реализовантретий подход, основанный на том, что если рассмотреть сумму углов при вершине, образованной исследуемой точкой и вершинами треугольника, и если эта сумма равна 360, то точка находится внутри треугольника.
10 REM ТРЕУГОЛЬНИК
20 DIM X(3),Y(3)
30 FOR I=1 TO 3
40 INPUT X(I),Y(I)
50 NEXT I
60 INPUT A,B
70 S=Y(1)-B
80 T=X(1)-A
90 GOSUB 400
100 P=F
110 S=Y(3)-B
120 T=X(3)-A
130 GOSUB 400
140 F=P-Q
150 IF ABS(F)>=3.141593 THEN F=F-3.141593*2*SGN(F)
160 Z=F
170 FOR I=1 TO 2
180 S=Y(I)-B
190 T=X(I)-A
200 GOSUB 400
210 P=F
220 S=Y(I+1)-B
230 T=X(I+1)-A
240 GOSUB 400
250 Q=F
260 D=P-Q
270 IF ABS(D)>=3.141593 THEN D=D-3.141593*2*SGN(D)
280 Z=Z+D
290 NEXT I
300 IF ABS(Z)<3.141593*2 THEN PRINT"ВНЕ"
310 IF ABS(Z)>=3.141593*2 THEN PRINT"ВНУТРИ"
320 END
400 IF S>0 AND T>0 THEN F=ATN(S/T)
410 IF S>0 AND T<0 THEN F=ATN(S/T)+3.141593
420 IF S<0 AND T>0 THEN F=ATN(S/T)+3.141593*2
430 IF S<0 AND T<0 THEN F=ATN(S/T)+3.141593
440 RETURN



но это ерунда, вот такая задача

Углы треугольника АВС - суть засады, из которых пионеры Колян, Петруха и Васёк подсматривают за влюбленной парочкой. Расстояние от Коляна до влюбленной парочки 11 метров, от Петрухи 9 метров. На каком расстоянии от влюбленной парочки находится Васёк, если известно, что от него до Коляна 20 метров, а до Петрухи 18?



 
Думкин   (2003-02-28 09:33) [17]

Эх, робяты - куда вас несет.
Первое, надо определиться с тем что значит угол -10, например. Это значит ввести ориентацию. Или (мы же в трехмерке?) иначе - определить векторное произведение. При векторном можно выбрать два направления - какое выбрали - то и определяет ориентацию.
Затем считаем скалярку и векторное двух векторов.
Из скалярки у нас два угла, знак векторки и даст нужный. Все однако.
Но момент тонкий - спешить не надо.


 
АлександрИзПерми   (2003-02-28 09:37) [18]

От 9 до 27 метров


 
Archon Kazansky   (2003-02-28 10:00) [19]

> от -180 до 180

На сколько я помню геометрию угол в 180 равен углу в -180.


 
@lex   (2003-02-28 10:14) [20]

> RV ©
Алгоритм, наверно, хороший. Тока давно уж я в Бейсеке не разбирался.
А задача решения не имеет, т.к. данных недостаточно. Вернее, решений континум. Четырехугольник не определяется однозначно 4-мя сторонами. Нужно еще что-нибудь типа расстояния от Коляна до Петрухи.


 
RV   (2003-02-28 10:18) [21]


> @lex © (28.02.03 10:14)


я тоже, это с нета, увидел и вчерашнее вспомнил, запостил.

а про Колянов с Петрухами :), это шутка :)))



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

Форум: "Потрепаться";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
1-54110
UDS
2003-03-05 19:53
2003.03.17
Смена картинки при наведении на неё курсора мыши.


14-54233
France
2003-02-28 09:52
2003.03.17
Просто картинки :))


3-53934
Nehto
2003-02-26 12:58
2003.03.17
summirovanie polja v tablice


14-54253
Nimda2000
2003-02-28 13:06
2003.03.17
Кодеровка


7-54329
mate
2003-01-21 14:29
2003.03.17
Телефон и PC





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский