Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

Посчитать угол по 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
1-54082
Maxim2030
2003-03-05 10:27
2003.03.17
Вопрос по $IFDEF


1-54110
UDS
2003-03-05 19:53
2003.03.17
Смена картинки при наведении на неё курсора мыши.


1-53985
Tema
2003-03-06 09:41
2003.03.17
Стиль формы


6-54135
Шурик Ш
2003-01-28 09:42
2003.03.17
Как подойти к решению задачи?


7-54352
tararasyk
2003-01-20 20:24
2003.03.17
Активная раскладка клавиатуры