Форум программистов, компьютерный форум CyberForum.ru

вращение фигуры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
Kot_Enot
 Аватар для Kot_Enot
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 33
26.02.2012, 16:05     вращение фигуры #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
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// laba2-9.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "Math.h"
using namespace std;
 
class Point{
public:int x,y;
};
 
class Shape { // Абстрактный базовый класс
public:
    virtual void CreateShape()=0;//Задание координат фигуры
    virtual void Show()=0; // Вывод фигуры
           virtual void Rotate(int angle)=0;//Поворот фигуры    
};
 
 
 
 
class Kvadrat : public Shape {
Point t1,t2;
int _x;
public:
    void CreateShape()
    {
        cout<<"Input 1 coordinates points (left top) of Kvadrata"<<endl;
        cout<<"x1 = ";
        cin>>_x;
        t1.x=_x; 
        cout<<"y1 = ";
        cin>>_x;
        t1.y=_x;
        cout<<"Input 2 coordinates points (right bottom) of Kvadrata"<<endl;
        cout<<"x2 = ";
        cin>>_x;
        t2.x=_x; 
        cout<<"y2 = ";
        cin>>_x;
        t2.y=_x;
    }
    void Show()
    {
        cout<<"Kvadrat s koordinatami: "<<"("<<t1.x<<","<<t1.y<<")"<<"("<<t2.x<<","<<t1.y<<")"<<"("<<t2.x<<","<<t2.y<<")"<<"("<<t1.x<<","<<t2.y<<")"<<endl<<endl;
    }
    
    void Rotate(int angle)
    {
        //вращение квадрата
    }
    
};
class Triugolnic : public Shape {
Point t1,t2,t3;
int _x;
public:
    void CreateShape()
    {
        cout<<"Input 1 coordinates points of Pentagona"<<endl;
        cout<<"x1 = ";
        cin>>_x;
        t1.x=_x; 
        cout<<"y1 = ";
        cin>>_x;
        t1.y=_x;
        cout<<"Input 2 coordinates points of Pentagona"<<endl;
        cout<<"x2 = ";
        cin>>_x;
        t2.x=_x; 
        cout<<"y2 = ";
        cin>>_x;
        t2.y=_x;
        cout<<"Input 3 coordinates points of Pentagona"<<endl;
        cout<<"x3 = ";
        cin>>_x;
        t3.x=_x; 
        cout<<"y3 = ";
        cin>>_x;
        t3.y=_x;
    }
    void Show()
    {
        cout<<"Triugolnic s koordinatami: "<<"("<<t1.x<<","<<t1.y<<")"<<"("<<t2.x<<","<<t2.y<<")"<<"("<<t3.x<<","<<t3.y<<")"<<endl<<endl;
    
    }
   
    void Rotate(int angle)
    {
        //вращение триугольника
    }
 
};
class Line : public Shape {
public:
    void CreateShape(){}
    void Show(){}
    void Rotate(int angle){};
};
 
class Operation{ //Класс, инкапсулирующий методы обработки объектов разных классов
public:
    void IsIntersect(Shape* s1, Shape* s2) {cout<<"Intersect"<<endl;}
};
 
 
class FactoryShape{// Класс - фабрика производных от Shape объектов
 
  public: Shape* generator(int type)
   { 
       switch(type) 
          {
            case 0:return new Kvadrat;
            case 1:return new Triugolnic;
                                  case 2:return new Line;
            default:return 0;
          }
    }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 16:05     вращение фигуры
Посмотрите здесь:

C++ Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
C++ вращение отрезка.
C++ Вращение куба
C++ Вращение фигуры
C++ вращение фигуры
вращение фигуры C++
C++ Вращение шара
C++ Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
26.02.2012, 18:15     вращение фигуры #2
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
#include "math.h"
#include "windows.h"
#include "stdio.h"
 
struct fPoint
{
        float x,y;
        fPoint() {}
        fPoint(float x, float y)
        {
                this->x = x;
                this->y = y;
        }
};
 
static void rotate_points(float angle, fPoint * array, int arr_len)
{
        if (arr_len <= 1) return;
        float cs = cos(angle),
                sn = sin(angle);
        fPoint center(0,0);
        for (int i = 0; i < arr_len; i++)
        {
                center.x += array[i].x;
                center.y += array[i].y;
        }
        center.x /= arr_len;
        center.y /= arr_len;
 
        float dx, dy;
        while (arr_len--)
        {
                dx = array[arr_len].x - center.x;
                dy = array[arr_len].y - center.y;
                array[arr_len].x = dx * cs - sn * dy + center.x;
                array[arr_len].y = dx * sn + cs * dy + center.y;
        }
}
 
static void DrawFigure(HDC hdc, fPoint * array, int len)
{
        MoveToEx(hdc,array->x,array->y,0);
        while (len--) LineTo(hdc,array[len].x,array[len].y);
}
 
class Triangle
{
public:
        fPoint points[3];
        Triangle() {}
        Triangle(const fPoint & p1,const fPoint & p2,const fPoint & p3)
        {
                points[0] = p1;
                points[1] = p2;
                points[2] = p3;
        }
        void rotate(float angle)
        {
                rotate_points(angle,points,3);
        }
        void Draw(HDC hdc)
        {
                DrawFigure(hdc,points,3);
        }
};
 
 
 
 
int main(int argc, char* argv[])
{
        Triangle tr(fPoint(50,50),fPoint(150,50),fPoint(75,120) );
        float angle = 0.1;   // (рад)
        tr.rotate(angle);
        HWND hwnd = GetForegroundWindow();//GetDesktopWindow();
 
        HDC hdc=GetWindowDC(hwnd);
        HPEN hPen = CreatePen(1, 3, RGB(0,0,255));
 
        SelectObject(hdc, hPen);
        tr.Draw(hdc);
        ReleaseDC(hwnd,hdc);
 
        getchar();
        return 0;
}
Yandex
Объявления
26.02.2012, 18:15     вращение фигуры
Ответ Создать тему
Опции темы

Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru