Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 2
1

Угол между двумя прямыми

06.08.2017, 20:06. Показов 1430. Ответов 6

Author24 — интернет-сервис помощи студентам
День добрый. Мне нужно сделать относительно простую программу. Суть ее заключается в следующем: мне даны 3 точки (т1, т2, т3). Из них я составляю два отрезка (о1, о2), но они "особенные". У этих двух отрезков есть одна общая точка, пусть это будет точка т1, помимо этого длины отрезков равны. Вот набросок:
Угол между двумя прямыми
. Моя цель - найти угол между этими двумя отрезками. Точки в пространстве, если что.
Вот что я набросал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <math.h>
 
typedef struct{
float x, y, z;
} point;
 
// Создает вектор по двум точкам
void CreateVect(point A, point B, point *vect)
{
    vectr->x=B.x-A.x;
    vect->y=B.y-A.y;
    vect->z=B.z-A.z;
}
// Возвращает длину вектора
double VectLeng(point vect)
{
    return sqrt(pow(vect.x,2)+pow(vect.y,2)+pow(vect.z,2));
}
// Возвращает косинус между вектором А и вектором B
double angle(point A, point B)
{
    return (A.x*B.x+A.y*B.y+A.z*B.z)/(VectLeng(A)*VectLeng(B));
}
 
void main()
{
    point p1, p2, p3, o1, o2;
    scanf("%f%f%f",&p1.x,&p1.y,&p1.z);
    scanf("%f%f%f",&p2.x,&p2.y,&p2.z);
    scanf("%f%f%f",&p3.x,&p3.y,&p3.z);
    CreateVect(p1,p2,&o1);
    CreateVect(p1,p3,&o2);
    printf("%.3f",angle(o1,o2));
}
Вопрос: Правильно ли я все сделал, ничего не упустил, верна ли логика? Буду благодарен за советы/исправления/объяснения, если что-то не так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2017, 20:06
Ответы с готовыми решениями:

Найти минимальное расстояние между прямыми
Имеется массив структур из 4000 элементов, в которых находятся координаты задающие прямую: ...

Угол между векторами
Даны два вектора: a=(x1,y1) b=(x2,y2) Написать функцию, которая высчитывает угол между векторами...

Угол между векторами
Написать программу, которая высчитывает угол между векторами a и b a=(x1,y1) b=(x2,y2)

Найти угол между векторами A(n) и B(n)
Нужна помощь с кодом в Си...Знайти кут між векторами A (n) і B (n), використовуючи формулу: Найти...

6
Заблокирован
06.08.2017, 20:26 2
сомнительно без отрезка Т2Т3

Добавлено через 12 минут
acos((т2т32-т1т22-т1т32)/-2/т1т2/т1т3)
0
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 2
06.08.2017, 20:34  [ТС] 3
сомнительно без отрезка Т2Т3
Вы про то, что можно через эту формулу? cos(A)=b/2a, B=180-2A (A - угол при вершине, B - углы при основание, a - длины отрезков одинак.длины, b - длина основания получившегося треугольника).
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.08.2017, 20:40 4
Цитата Сообщение от Otto27 Посмотреть сообщение
цель - найти угол между этими двумя отрезками
Цитата Сообщение от Otto27 Посмотреть сообщение
ничего не упустил,
Практически ничего кроме нахождения угла.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
07.08.2017, 10:19 5
Косинус угла между двумя единичными векторам - это скалярное произведение векторов. Т.е. нужно вектора t1-t2 и t1-t3 привести к единичному виду, вычислить скалярное произведение и взять от этого арккосинус. Размерность пространства роли не играет
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.08.2017, 10:30 6
Цитата Сообщение от Evg Посмотреть сообщение
Косинус угла между двумя единичными векторам - это скалярное произведение векторов.
А разве не скалярное произведение деленное на произведение их модулей?
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
07.08.2017, 15:34 7
Когда векторы приведены к единичному виду, то вычисление косинуса угла между ними есть банальная операция вычисления скалярного произведение. При работе с графикой так обычно и делают, поскольку скалярное произведение векторов - это быстрое действие из операций умножения и сложения

Добавлено через 53 секунды
Вероятно, я тут неправильным терминам выразился. Под "единичным вектором" я подразумевал вектор, длина которого равна единице

Добавлено через 22 секунды
Вспомнил. Правильно "нормированный", а не "единичный"
0
07.08.2017, 15:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2017, 15:34
Помогаю со студенческими работами здесь

Угол между двумя прямыми
Вычислить: a)угол между двумя прямыми y=1 и y+2x-2=0. б) расстояние от точки А, лежащей на первой...

Найти угол между двумя прямыми
13. Пересекающиеся прямые. Заданы уравнения двух пересекающихся прямых на плоскости: у = k1+b1;...

Найти угол между двумя прямыми
Всем привет! Подскажите, как найти угол между двумя прямыми на плоскости, зная только координаты...

Найти угол между двумя прямыми
Нужно найти угол между двумя прямыми, при условии что заданы координаты точек прямых....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru