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

Класс точки и матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заданы целые числа a1, a2,…, an. Написать программу, которая находит сумму четных чисел среди чисел a1, a2,…, an http://www.cyberforum.ru/cpp-beginners/thread959862.html
Заданы целые числа a1, a2,…, an. Написать программу, которая находит сумму четных чисел среди чисел a1, a2,…, an.
C++ Сохранить значение возвращаемое функцией Есть 2-е функции. 1-я dectohex() перекодирует десятичный в шестнадцатеричный код и возвращает символьный массив. Все исправно работает. 2-я функция rgbtohex(), с помощью 1-й функции формирует HEX цвет из получаемого RGB. char* dectohex(int dec){ int mod; static int i = 0; static int index = 0; static char heks; i++; mod = dec%16; http://www.cyberforum.ru/cpp-beginners/thread959861.html
C++ Цикл while
Подскажите пжл как корректно сделать,так как он повторяет текст. #include <iostream> #include <windows.h> #include <stdio.h> using namespace std; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251);
C++ Русский язык
Нужно написать программу, которая исправляла бы ошибки после Ж,Ч,Ш,Щ(Ы,Я,Ю на И,А,У). Учитывая исключения: Жюри, Брошюра, парашют. Помогите вот код, но почему он не работает? #include <conio.h> #include <string.h> #include <stdio.h> int main () { char q; printf ("vvedite stroku\n");
C++ Создать структуру данных о планете http://www.cyberforum.ru/cpp-beginners/thread959837.html
Создать структуру, в которой будут храниться данные о некоторой планете: код планеты (целое число), радиус планеты, масса планеты, скорость движения вокруг звезды. Описать функции ввода-вывода данных о планете и функции вычисления плотности планеты и перемещения планеты за указанный промежуток времени. В главные программе создать экземпляр структуры с данными о планете, заполнить его, подсчитать...
C++ Из геометрии в физику.Замена формул Движение планеты по кругу,расчитывается через сферическую систему координат: glBegin(GL_LINES); for(int i=0; i<=500; i++) { glColor3f(0.0,0.3,0.1); glVertex2f(0+sin((-mars_speed*3.14)/180)*240,0+cos((-mars_speed*3.14)/180)*220); glColor3f(0,0,0); glVertex2f(0+cos(i/3.14)*15+sin((-mars_speed*3.14)/180)*240,0+sin(i/3.14)*15+cos((-mars_speed*3.14)/180)*220); подробнее

Показать сообщение отдельно
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343

Класс точки и матрицы - C++

22.09.2013, 18:34. Просмотров 320. Ответов 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
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#include <iostream>
#include <cmath>
using namespace std;
class Matrix
{
    private:
        float m[4][4];
 
    public:
        Matrix()
        {
            Clear();
        }
        Matrix(const Matrix &a)
        {
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    m[i][j] = a[i][j];
        }
        ~Matrix()
        {
 
        }
        float *operator[](int i)
        {
            return m[i];
        }
        const float *operator[](int i) const
        {
            return m[i];
        }
        //ГЊГ*òðèöГ* Г¬Г*Г±ГёГІГ*áèðîâГ*Г*ГЁГї
        void Scale(float a, float b, float c)
        {
            Clear();
            m[0][0] = a;
            m[1][1] = b;
            m[2][2] = c;
            m[3][3] = 1;
        }
        //ГЊГ*òðèöГ* ïîâîðîòГ*
        void RotateZ(double alpha)
        {
            Clear();
            m[0][0] = cos(alpha);
            m[1][1] = cos(alpha);
            m[0][1] = sin(alpha);
            m[1][0] = -sin(alpha);
            m[2][2] = 1;
            m[3][3] = 1;
        }
        void RotateY(double alpha)
        {
            Clear();
            m[0][0] = cos(alpha);
            m[2][2] = cos(alpha);
            m[2][0] = sin(alpha);
            m[0][2] = -sin(alpha);
            m[1][1] = 1;
            m[3][3] = 1;
        }
        void RotateX(double alpha)
        {
            Clear();
            m[1][1] = cos(alpha);
            m[2][2] = cos(alpha);
            m[1][2] = sin(alpha);
            m[2][1] = -sin(alpha);
            m[0][0] = 1;
            m[3][3] = 1;
        }
        //ГЊГ*òðèöГ* ïåðåìåùåГ*ГЁГї
        void Move(float a, float b, float c)
        {
            Identity();
            m[0][3] = a;
            m[1][3] = b;
            m[2][3] = c;
        }
        //ГЊГ*òðèöГ* Г*Г*êëîГ*Г*
        void Tilt(float a)
        {
            Identity();
            m[0][1] = a;
        }
        //ÅäèГ*ГЁГ·Г*Г*Гї Г¬Г*òðèöГ*
        void Identity()
        {
            Clear();
            m[0][0] = 1;
            m[1][1] = 1;
            m[2][2] = 1;
            m[3][3] = 1;
        }
        //ÍóëåâГ*Гї Г¬Г*òðèöГ*
        void Clear()
        {
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    m[i][j] = 0;
        }
        Matrix& operator=(const Matrix& rhs )
        {
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    m[i][j] = rhs[i][j];
            return *this;
        }
};
 
class Point
{
    private:
        float p[4];
 
    public:
        Point()
        {
            Clear();
        }
        Point(const Point &a)
        {
            for(int i=0;i<4;i++)
                p[i] = a[i];
        }
 
        ~Point()
        {
        }
        float operator[](int i) const
        {
            return p[i];
        }
        float &operator[](int i)
        {
            return p[i];
        }
        Point operator*(const Matrix& left)
        {
            Point to;
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    to[i] = left[i][j]*p[j];
            return to;
        }
        void Clear()
        {
            for(int i=0;i<4;i++)
                p[i] = 0;
        }
        void Lab1(float a, float b, float c, float d, float t)
        {
            p[0] = a*cos(t) - b*cos(c*t);
            p[1] = a*sin(t) - b*sin(c*t);
            p[2] = d - (p[0]*p[0] + p[1]*p[1]);
            p[3] = 1;
        }
        Point& operator=( Point& rhs )
        {
            for(int i=0;i<4;i++)
                p[i] = rhs[i];
            return *this;
        }
        void Debug()
        {
            cout<<"Debug:";
            for(int i=0;i<4;i++)
                cout<<" "<<p[i];
            cout<<endl;
        }
};
/*
void MultiplyMV(Matrix M, Vector V, Vector to)
{
            to.Clear();
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    to[i] = M[i][j]*V[j];
}
 
void MultiplyMP(Matrix M, Point P, Point to)
{
            to.Clear();
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    to[i] = M[i][j]*P[j];
}
 
void MultiplyMM(Matrix M1, Matrix M2, Matrix to)
{
            to.Clear();
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                    for(int k=0;k<4;k++)
                        to[i][j] += M1[i][k]*M2[k][j];
}
*/
 
int main()
{
    Point p1,p2;
    Matrix S;
    S.Scale(1,1,1);
    for(float t = 0; t<100;t+=0.001)
    {
        p1 = p1*S;
    }
}
Я уже все мозги сварил с этой перегрузкой. Помогите....компилятор ругается на то что я после умножения сразу присваиваю класс....что не так.... (не удивляйтесь тому что я матрицу на точку умножаю наоборот, на самом деле это просто мой "танец с бубном" вокруг этой ошибки)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru