Трехмерная графика
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат на тему жизнь, реферат по экологии
| Добавил(а) на сайт: Суворов.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата
Vector& Clip ( Vector& v )
{ if ( v.x < 0.0 ) v.x = 0.0; else if ( v.x > 1.0 ) v.x = 1.0; if ( v.y < 0.0 ) v.y = 0.0; else if ( v.y > 1.0 ) v.y = 1.0; if ( v.z < 0.0 ) v.z = 0.0; else if ( v.z > 1.0 ) v.z = 1.0; return v;
}
С этой целью создается класс Vector, содержащий в себе компоненты вектора, и для этого класса переопределяются основные знаки операций.
- - унарный минус и поэлементное вычитание векторов;
+ - поэлементное сложение векторов;
* - умножение вектора на число;
* - поэлементное умножение векторов;
/ - деление вектора на число;
/ - поэлементное деление векторов;
& - скалярное произведение векторов;
^ - векторное произведение;
! - длина вектора;
[] - компонента вектора.
При этом стандартные приоритеты операций сохраняются.
Кроме этих операций определяются также некоторые простейшие функции для работы с векторами:
. Normalize – нормирование вектора;
. RndVector – получение почти равномерно распределенного случайного единичного вектора;
. Clip – отсечение вектора.
С использованием этого класса можно в естественной и удобной форме записывать сложные векторные выражения.
Аналогичным образом вводится класс Matrix, служащий для представления матриц преобразований в трехмерном пространстве. Для этого класса также производится переопределение основных знаков операций.
//Файл matrix.h
#ifndef __MATRIX__
#define __MATRIX__
#include "vector.h"
class Matrix
{
public: double x [4][4];
Matrix () {};
Matrix ( double );
Matrix& operator += ( const Matrix& );
Matrix& operator -= ( const Matrix& );
Matrix& operator *= ( const Matrix& );
Matrix& operator *= ( double );
Matrix& operator /= ( double ); void Invert (); void Transpose (); friend Matrix operator + ( const Matrix&, const Matrix& ); friend Matrix operator - ( const Matrix&, const Matrix& ); friend Matrix operator * ( const Matrix&, double ); friend Matrix operator * ( const Matrix&, const Matrix& ); friend Vector operator * ( const Matrix&, const Vector& );
};
Matrix Translate ( const Vector& );
Matrix Scale ( const Vector& );
Matrix RotateX ( double );
Matrix RotateY ( double );
Matrix RotateZ ( double );
Matrix Rotate ( const Vector&, double );
Matrix MirrorX ();
Matrix MirrorY ();
Matrix MirrorZ ();
#endif
//-----------------------------------------------------------------------
-
Рекомендуем скачать другие рефераты по теме: рефераты рб, культурология шпаргалки.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата