Форум: "Потрепаться";
Текущий архив: 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