Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 17
1

Найти координаты противоположных углов квадрата если известны координаты A и B

03.12.2019, 15:40. Просмотров 1585. Ответов 6
Метки нет (Все метки)

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


Ввод координат A и B сделал ,нахождение длины между этими точкам нашел ,но не знаю как написать функцию нахождения координат оставшихся точек квадрата
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
float  square_func(float X1,float X2,float Y1,float Y2){
float length=sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));
 
 
 
    }
int main()
{
    float X1, X2,Y1, Y2;
    cout << "Vdtdite X1Y1 !" << endl;
    cin>>X1;
    cin>>Y1;
    cout << "Vdtdite X2Y2 !" << endl;
    cin>>X2;
    cin>>Y2;
    square_func(X1,X2,Y1,Y2);
 
    return 0;
}
0
Миниатюры
Найти координаты  противоположных углов квадрата  если известны координаты A и B  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2019, 15:40
Ответы с готовыми решениями:

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

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

Как найти координаты элементов матрицы, если известны их значения?
Как найти координаты элементов матрицы, если известны их значения? Например как можно обозначить...

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

6
Модератор
Эксперт CЭксперт С++
4004 / 3513 / 622
Регистрация: 07.10.2015
Сообщений: 7,259
03.12.2019, 16:35 2
Nikitabanan, а то, что возможны два квадрата, Вас не смущает?
Как вариант, можно искать квадрат, например, против часовой стрелки по направлению вектора (X1Y1, X2Y2)
Ну или искать оба квадрата
0
0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 17
03.12.2019, 16:48  [ТС] 3
Цитата Сообщение от liv Посмотреть сообщение
Nikitabanan, а то, что возможны два квадрата, Вас не смущает?
Как вариант, можно искать квадрат, например, против часовой стрелки по направлению вектора (X1Y1, X2Y2)
Ну или искать оба квадрата
Без разницы какой квадрат ,главное чтобы был.
0
670 / 286 / 99
Регистрация: 04.07.2014
Сообщений: 801
03.12.2019, 17:19 4
Математически:

Точки:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{A}=\begin{pmatrix}x_a\\ y_a\end{pmatrix}, https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{B}=\begin{pmatrix}x_b\\ y_b\end{pmatrix},

Вектор от A к B:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{v_{AB}}=\vec{B}-\vec{A}

Выбираем матрицу поворота:

https://www.cyberforum.ru/cgi-bin/latex.cgi?M=\begin{pmatrix}0 & 1\\ -1 & 0\end{pmatrix} или https://www.cyberforum.ru/cgi-bin/latex.cgi?M=\begin{pmatrix}0 & -1\\ 1 & 0\end{pmatrix}

https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{v_{BC}}=M * \vec{v_{AB}}
https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{C}=\vec{B}+\vec{v_{BC}}
...
0
23 / 15 / 7
Регистрация: 05.04.2018
Сообщений: 33
03.12.2019, 17:24 5
Прибавь разницу между Xми к Y, а между Yми вычти из X. Из второй координаты наоборот. Примерно так, поэкспериментируй на бумажке.
0
Модератор
Эксперт CЭксперт С++
4004 / 3513 / 622
Регистрация: 07.10.2015
Сообщений: 7,259
03.12.2019, 17:40 6
Лучший ответ Сообщение было отмечено Nikitabanan как решение

Решение

Nikitabanan, вот, нарисовал программку:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <iomanip>
 
using namespace std;
 
typedef struct _point
{
    float   x;
    float   y;
}point;
 
bool square_func(point &p1, point &p2, point &p3, point &p4) 
{
    float   lenght = sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
    float   eps = 0.000001;
 
    if (lenght)
    {
        if (fabs(p1.x - p2.x) < eps)
        {
            p4.x = p3.x = p2.x + lenght;
            p3.y = p2.y;
            p4.y = p1.y;
        }
        else if (fabs(p1.y - p2.y) < eps)
        {
            p4.y = p3.y = p2.y + lenght;
            p3.x = p2.x;
            p4.x = p1.x;
        }
        else
        {
            float k = (p2.x - p1.x) / (p2.y - p1.y);
            p4.x = p1.x + (lenght / sqrt(k*k + 1));
            p4.y = p1.y - k * (p4.x - p1.x);
            p3.x = p2.x + (lenght / sqrt(k*k + 1));
            p3.y = p2.y - k * (p3.x - p2.x);
        }
        return true;
    }
    else
        return false;
}
int main()
{
    
    point p1, p2, p3, p4;
 
    setlocale(LC_ALL, "");
 
    cout << "Введите X1Y1 !" << endl;
    cin >> p1.x;
    cin >> p1.y;
    cout << "Введите X2Y2 !" << endl;
    cin >> p2.x;
    cin >> p2.y;
    
    if (square_func(p1, p2, p3, p4))
    {
        cout << setw(5) << "x1 = " << p1.x << " " << "y1 = " << p1.y << endl;
        cout << setw(5) << "x2 = " << p2.x << " " << "y2 = " << p2.y << endl;
        cout << setw(5) << "x3 = " << p3.x << " " << "y3 = " << p3.y << endl;
        cout << setw(5) << "x4 = " << p4.x << " " << "y4 = " << p4.y << endl;
    }
 
    return 0;
}
Формулы - результат некоторых математических преобразований на бумажке

Добавлено через 9 минут
Ищется квадрат, расположенный по Х справа от отрезка
1
670 / 286 / 99
Регистрация: 04.07.2014
Сообщений: 801
03.12.2019, 17:52 7
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
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
 
struct Vector {
  double x;
  double y;
};
 
Vector operator+(const Vector &a, const Vector &b)
{
  return {a.x + b.x, a.y + b.y};
}
 
 
Vector operator-(const Vector &a, const Vector &b)
{
  return {a.x - b.x, a.y - b.y};
}
 
Vector rotate90(const Vector &v)
{
  return {-v.y, v.x};
}
 
std::ostream &operator<<(std::ostream &o, const Vector &v)
{
  o << "{x:" << v.x << ", y:" << v.y << "}";
  return o;
}
 
void findOtherCorners(const Vector &a, const Vector &b, Vector &c, Vector &d)
{
  Vector v_ab = b - a;
  Vector v_bc = rotate90(v_ab);
  c           = b + v_bc;
  d           = a + v_bc;
}
 
int main()
{
  Vector a = {0.0, 0.0};
  Vector b = {1.0, 0.0};
  Vector c;
  Vector d;
 
  findOtherCorners(a, b, c, d);
  std::cout << "a = " << a << std::endl;
  std::cout << "b = " << b << std::endl;
  std::cout << "c = " << c << std::endl;
  std::cout << "d = " << d << std::endl;
 
  return 0;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2019, 17:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

найти меньшую среди диагоналей паралелограма АВСД если известны его координаты вершин проверить является лм даный четерёхугольник паралелограмом !
найти меньшую среди диагоналей паралелограма АВСД если известны его координаты вершин проверить...

Зная координаты углов прямоугольника, найти его периметр
Такая вот задача: имеются координаты углов прямоугольника, найти периметр. Мой код, не могу понять...

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

Известны координаты вершин прямоугольника ABCD: A(x1,y1), B(x2,y2), и C(x3,y3) Найти площадь и периметр
Это вектора!!! Известны координаты вершин прямоугольника ABCD: A(x1,y1), B(x2,y2), и C(x3,y3)...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.