Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/103: Рейтинг темы: голосов - 103, средняя оценка - 4.56
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

Найти угол между векторами

08.09.2014, 19:14. Показов 22336. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть координаты конца вектора.
Я вроде норм нахожу долготу вектора, но не как не пойму как мне найти угол между ним, что бы он правильно рисовался. начинаются координаты с 0))
В математике я просто нуб. покажет кто как мне правильно сделать. (вероятно не правельные формула что выделил красным) ну или в градусы неудачно переводил...


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
36
37
#include "stdafx.h"
#include "Vector.h"
#include <math.h>
#include "SFML\Graphics.hpp"
using namespace sf;
Vector::Vector(float x, float y,RenderWindow &window)
{
    this->x = x;
    this->y = y;
    this->window = &window;
}
 
Vector::~Vector()
{
 
}
void Vector::drawvector()
{
    float cutt;
    RectangleShape line2(Vector2f(getwidth(), 5));
//  line2.setPosition(400,400);
    line2.setFillColor(Color(00,100,000,100));
[COLOR="red"]   cutt = cut();
 
    line2.setRotation(cutt);[/COLOR]
    window->draw(line2);
}
 
float Vector::getwidth()
{
    return sqrt(x*x+y*y);
}
 
float Vector::cut()
{
    return [COLOR="Red"]((x+y)/sqrt(x*x+y*y))*(180/3,1415);[/COLOR]
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "SFML\Graphics.hpp"
#include <Windows.h>
#include <iostream>
using namespace sf;
using namespace std;
 
class Vector
{
public:
    float endvector;
    Vector(float x, float y,RenderWindow &window);
    ~Vector();
    void drawvector();
    float getwidth();
    float cut();
private:
    float x,y;
    RenderWindow *window;
};
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
36
37
38
39
// laba3.1.5.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "Vector.h"
#include "SFML\Graphics.hpp"
#include <Windows.h>
#include <iostream>
using namespace sf;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    RenderWindow window(VideoMode(800,800), "line");
    float x,y;
    sf::CircleShape shape(5);
    shape.setFillColor(Color(00,100,000,100));
    shape.setPosition(400,400);
    //line2.setPosition(400,400);
    //line2.setFillColor(Color(00,100,000,100));
    cin >> x;
    cin >> y;
    Vector vectorr(x,y,window);
    
    while (window.isOpen()) {
 
        Event event;
        while (window.pollEvent(event)) {
            if (event.type == Event::Closed)
                window.close();
            }
        window.clear(Color(255,255,255,255));
        vectorr.drawvector();
        
        //line2.setRotation(line2.getRotation()+0.001);
        window.draw(shape);
        window.display();
        }
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2014, 19:14
Ответы с готовыми решениями:

Найти угол, выраженный в радианах и градусах между векторами A(xa, ya) и B(xb, yb)
Найти угол, выраженный в радианах и градусах между векторами A(xa, ya) и B(xb, yb). Это всё условие, которое мне дано... Но я даже не...

Класс вектор на основе класса Complex. Найти угол между векторами
класс вектор на основе класса комплекс найти кут между векторами...

Угол между векторами со знаком в 2D!
Привет! :) См. картинку. Есть 2д декартово пространство. 1. Задан вектор отрезок AB (координаты точек известны) 2. Есть отрезок...

23
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
15.09.2014, 10:12  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от zss Посмотреть сообщение
Сейчас у Вас угол от -180 до 180 градусов, чтобы было от 0 до 360,
прибавьте 180 и все!
C++
1
return atan2(y,x)*360./pi;
еще правельнее чем предведущий
Миниатюры
Найти угол между векторами  
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
15.09.2014, 10:16  [ТС]
C++
1
return (atan2(y,x)*180./pi)+180;
Миниатюры
Найти угол между векторами  
0
4 / 4 / 1
Регистрация: 14.09.2014
Сообщений: 14
17.09.2014, 00:29


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
// laba3.1.5.cpp : Defines the entry point for the console application.
//
 
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    float x, y, r;
 
    cout << "Введите координаты вектора x и y: \n";
    cin >> x;
    cin >> y;
 
    r = atan2(y, x) * 180 / 3.14159;
    cout << "\nУгол [0;360) между вектором и осью х = " << r + ((r < 0) ? 360 : 0);
    cout << "\nУгол (-180;180] между вектором и осью х = " << r;
    r = atan(y / x) * 180 / 3.14159;
    cout << "\nУгол [-90;90] между вектором и осью х = " << r;
    return 0;
}
Теперь думаю что с графиком у тебя проблем не будет.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
17.09.2014, 14:16  [ТС]
Цитата Сообщение от matxon Посмотреть сообщение
Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// laba3.1.5.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
* * setlocale(0, "");
* * float x, y, r;
cout << "Введите координаты вектора x и y: \n";
* * cin >> x;
* * cin >> y;
r = atan2(y, x) * 180 / 3.14159;
* * cout << "\nУгол [0;360) между вектором и осью х = " << r + ((r < 0) ? 360 : 0);
* * cout << "\nУгол (-180;180] между вектором и осью х = " << r;
* * r = atan(y / x) * 180 / 3.14159;
* * cout << "\nУгол [-90;90] между вектором и осью х = " << r;
* * return 0;
}
Теперь думаю что с графиком у тебя проблем не будет.
ну да спасибо, да все таки 1 проблема нашлась)
градусы круга по методу по часовой стрелке выщитиваются)
а математически против часовой)
типа надо вводить 10 градусов заместь 350 что бы рисунок соотвецтвовал 350 градусам
Миниатюры
Найти угол между векторами  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2014, 14:16

Заданы два вектора с координатами (Хи Yu Z,) и (Х2, Y2, Z^). Определить угол между векторами
Заданы два вектора с координатами (Х1 Y1 Z1) и (Х2, Y2, Z2). Определить угол между векторами. Нужно написать простенькую программу на...

Заданы два вектора с координатами (x1, y1, z1) и (x2, y2, z2). Определить угол между векторами
Смотрел примеры на паскале но нужно написать на Dev-C++ помогите плз!

Определить угол между заданными векторами по формуле и вычислить скалярное произведение этих векторов
Заданы два вектора х = (x1, x2, x3, x4), y = (y1, y2, y3, y4). Определить угол a между векторами x и y по формуле Вычисление скалярного...

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

Найти угол между прямыми
Найти угол (в градусах) между прямыми y = {k}_{1}x+{b}_{1} и y = {k}_{2}x+{b}_{2}.


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 28.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 27.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 25.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru