0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
1

Нужно визуализировать фигуру по заданым координатам

23.03.2015, 16:28. Показов 630. Ответов 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
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 "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#include <graphics.h>
 
using namespace std;
 
class Kvadrat
{
    int *x, *y;
public:
    float p, a, b, c, d, s;
    Kvadrat(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
    {
        x = new int[4];
        y = new int[4];
        x[0] = x1;
        x[1] = x2;
        x[2] = x3;
        x[3] = x4;
        y[0] = y1;
        y[1] = y2;
        y[2] = y3;
        y[3] = y4;
    }
    ~Kvadrat()
    {
        delete[] x, y;
        cout << "Micue o4ishene";
    }
    void Perum()
    {
        a = sqrt((x[1] - x[0])*(x[1] - x[0]) + (y[1] - y[0])*(y[1] - y[0]));
        b = sqrt((x[3] - x[2])*(x[3] - x[2]) + (y[3] - y[2])*(y[3] - y[2]));
        c = sqrt((x[2] - x[0])*(x[2] - x[0]) + (y[2] - y[0])*(y[2] - y[0]));
        d = sqrt((x[1] - x[3])*(x[1] - x[3]) + (y[1] - y[3])*(y[1] - y[3]));
        p = a + b + c + d;
    }
    void Plosh()
    {
        s = sqrt((p / 2)*(p / 2 - a)*(p / 2 - b)*(p / 2 - c)*(p / 2 - d));
    }
    void Show_result()
    {
        cout << "\nPerumetr: " << p << "\nPlosha: " << s << endl;
    }
    friend void Graf();
};
 
void Graf()
{
 
}
 
int main()
{
    int x1, x2, x3, y1, y2, y3,x4,y4;
    cout << "BBeditb koorduHatu vershun: " << endl;
    cin >> x1; cin >> y1; cin >> x2; cin >> y2; cin >> x3; cin >> y3; cin >> x4; cin >> y4;
    Kvadrat Waz(x1, y1, x2, y2, x3, y3, x4, y4);
    Waz.Perum();
    Waz.Plosh();
    Waz.Show_result();
    _getch();
    return 0;
}
Не могу никак додуматься как нарисовать четырехугольник. Помогите пожалуйста.

Добавлено через 2 часа 33 минуты
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <SFML/Graphics.hpp>
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
class Kvadrat
{
    int *x, *y;
public:
    float p, a, b, c, d, s;
    Kvadrat(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
    {
        x = new int[4];
        y = new int[4];
        x[0] = x1;
        x[1] = x2;
        x[2] = x3;
        x[3] = x4;
        y[0] = y1;
        y[1] = y2;
        y[2] = y3;
        y[3] = y4;
    }
    ~Kvadrat()
    {
        delete[] x, y;
        cout << "Micue o4ishene";
    }
    void Perum()
    {
        a = sqrt((x[1] - x[0])*(x[1] - x[0]) + (y[1] - y[0])*(y[1] - y[0]));
        b = sqrt((x[3] - x[2])*(x[3] - x[2]) + (y[3] - y[2])*(y[3] - y[2]));
        c = sqrt((x[2] - x[0])*(x[2] - x[0]) + (y[2] - y[0])*(y[2] - y[0]));
        d = sqrt((x[1] - x[3])*(x[1] - x[3]) + (y[1] - y[3])*(y[1] - y[3]));
        p = a + b + c + d;
    }
    void Plosh()
    {
        s = sqrt((p / 2)*(p / 2 - a)*(p / 2 - b)*(p / 2 - c)*(p / 2 - d));
    }
    void Show_result()
    {
        cout << "\nPerumetr: " << p << "\nPlosha: " << s << endl;
    }
    friend void Graf();
};
 
void Graf(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "Kvadrat");
    sf::VertexArray lines(sf::LinesStrip, 4);
    lines[0].position = sf::Vector2f(x1, y1);
    lines[1].position = sf::Vector2f(x2, y2);
    lines[2].position = sf::Vector2f(x3, y3);
    lines[3].position = sf::Vector2f(x4, y4);
    window.draw(lines);
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.display();
    }
}
 
int main()
{
    int x1, x2, x3, y1, y2, y3, x4, y4;
    cout << "BBeditb koorduHatu vershun: " << endl;
    cin >> x1; cin >> y1; cin >> x2; cin >> y2; cin >> x3; cin >> y3; cin >> x4; cin >> y4;
    Kvadrat Waz(x1, y1, x2, y2, x3, y3, x4, y4);
    Waz.Perum();
    Waz.Plosh();
    Waz.Show_result();
    Graf(x1, y1, x2, y2, x3, y3, x4, y4);
    _getch();
    return 0;
}
Все равно не получается, может я неправильно линии объявляю?

Добавлено через 36 минут
Все сделал
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <SFML/Graphics.hpp>
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
class Kvadrat
{
    int *x, *y;
public:
    float p, a, b, c, d, s;
    Kvadrat(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
    {
        x = new int[4];
        y = new int[4];
        x[0] = x1;
        x[1] = x2;
        x[2] = x3;
        x[3] = x4;
        y[0] = y1;
        y[1] = y2;
        y[2] = y3;
        y[3] = y4;
    }
    ~Kvadrat()
    {
        delete[] x, y;
        cout << "Micue o4ishene";
    }
    void Perum()
    {
        a = sqrt((x[1] - x[0])*(x[1] - x[0]) + (y[1] - y[0])*(y[1] - y[0]));
        b = sqrt((x[3] - x[2])*(x[3] - x[2]) + (y[3] - y[2])*(y[3] - y[2]));
        c = sqrt((x[2] - x[0])*(x[2] - x[0]) + (y[2] - y[0])*(y[2] - y[0]));
        d = sqrt((x[1] - x[3])*(x[1] - x[3]) + (y[1] - y[3])*(y[1] - y[3]));
        p = a + b + c + d;
    }
    void Plosh()
    {
        s = sqrt((p / 2)*(p / 2 - a)*(p / 2 - b)*(p / 2 - c)*(p / 2 - d));
    }
    void Show_result()
    {
        cout << "\nPerumetr: " << p << "\nPlosha: " << s << endl;
    }
    friend void Graf();
};
 
void Graf(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
{
    sf::RenderWindow window(sf::VideoMode(400, 400), "Kvadrat");
    sf::Vertex line1[] =
    {
        sf::Vertex(sf::Vector2f(x1, y1)),
        sf::Vertex(sf::Vector2f(x2, y2))
    };
    sf::Vertex line2[] =
    {
        sf::Vertex(sf::Vector2f(x1, y1)),
        sf::Vertex(sf::Vector2f(x3, y3))
    };
    sf::Vertex line3[] =
    {
        sf::Vertex(sf::Vector2f(x2, y2)),
        sf::Vertex(sf::Vector2f(x4, y4))
    };
    sf::Vertex line4[] =
    {
        sf::Vertex(sf::Vector2f(x3, y3)),
        sf::Vertex(sf::Vector2f(x4, y4))
    };
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        window.clear();
        window.draw(line1, 2, sf::Lines);
        window.draw(line2, 2, sf::Lines);
        window.draw(line3, 2, sf::Lines);
        window.draw(line4, 2, sf::Lines);
        window.display();
    }
}
 
int main()
{
    int x1, x2, x3, y1, y2, y3, x4, y4;
    cout << "BBeditb koorduHatu vershun: " << endl;
    cin >> x1; cin >> y1; cin >> x2; cin >> y2; cin >> x3; cin >> y3; cin >> x4; cin >> y4;
    Kvadrat Waz(x1, y1, x2, y2, x3, y3, x4, y4);
    Waz.Perum();
    Waz.Plosh();
    Waz.Show_result();
    Graf(x1, y1, x2, y2, x3, y3, x4, y4);
    _getch();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2015, 16:28
Ответы с готовыми решениями:

Визуализировать поверхность по заданным координатам
Доброго времени суток. Могу ли я просить Вас рассказать по подробнее о процессе создания конечной...

Перемещение обекта Имедж по заданым координатам
Вопрос вот в чем ...как реализовать перемещение картинки Имедж1 по форме.... конечные координаты...

Установить курсор в определенное по заданым координатам
run macro i,j MOV AH,02h MOV DH, i MOV DL, j INT 10h ENDM ORG 100h

Распределение величины (с заданым диапазоном) в 2D (X,Y) с разным распределением по X и Y координатам
Добрый день Есть набор физ величин, имеющие диапазон изменения и шаг. Эти величины нужно...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2015, 16:28

Через 5 секунд вернуть карту на место по заданым координатам
Есть страничка с гугл картой.Мы можем перемещаться по ней, но нужно чтобы она через 5 секунд...

Как построить треугольник по заданым координатам из прямых линий
Всем привет! Совсем недавно установил програмку МАТLAB и незнаю как с ней работать вообще........

По координатам построить выбранную фигуру
Здравствуйте! Подскажите, пожалуйста,как дополнить код. Суть задания: даны 6 textBox; PictureBox;...

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

По заданным целочисленным координатам на плоскости определить какую геометрическую фигуру они образуют
По заданным целочисленным координатам четырех точек на плоскости определить , какую геометрическую...

Сколько нужно взять членов арифметической прогрессии с заданым первым членом и разностью чтоб их сумма превыси
Сколько нужно взять членов арифметической прогрессии с заданым первым членом и разностью чтоб их...


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

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

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