void set(Vector2& v){ x - v.x: у - v.y:}

void setDiff(Point2& a. Point2& b)//set to difference a - b

{x - a.x - b.x: у - а.у - b.y:}

void normalize()//adjust this vector to unit length
{ double sizeSq - x*x + y*y:
if(sizeSq < 0.0000001)
{
cerr « "NnnormalizeO sees vector (0.0)!": return:

// does nothing to zero vectors: // не делает ничего для обнуления векторов }

float scaleFactor - 1.0/(float)sqrt(sizeSq): х *= scaleFactor: у * scaleFactor:

}

Vector2(float XX. float yy){x - xx; у - yy: } Vector2(Vector2& v){x - v.x; у - v.y: } Vector2(){x - у - 0:} //default constructor float dot(Vector2 b) // return this dotted with b {return x * b.x + у * b.y:} void perpO // perp this vector {float tmp - x: x - -у: у - tmp:}

float perpDot(Vector2& v) // return perp of this dotted with v {return x *v.x - у * v.y:}

}:
//«««««««««« Canvas class »>»»»»
// a global Canvas object (described in Chapter 3) knows how to draw lines in world coordinates and to perform turtlegraphics

// глобальный объект класса Canvas (описан в главе 3). // Он знает, как рисовать прямые в мировых координатах

В1. Классы для двумерной графики

// и как работать с черепашьей графикой class Canvas { private:

Point2 CP; // current position in world // текущее положение в мировых координатах

float CD: // current direction in degrees // текущее направление в градусах public:

float windowAspect:
Canvasdnt width, int height, char* title):
void setWindow(float 1. float r. float b. float t):
void setViewport(int 1. int r. int b. int t):
float getWindowAspect(void) { return windowAspect:}
void lineTo(float x. float y):

void moveTo(float x, float y){CP.x - x: СР.у - у:)

void turn(float ang) {CD +- ang:}
void turnTo(float ang) {CD - ang;}
void forward(float dist, int vis):

void initCTO // initialize the CT (model view matrix) // инициализируем CT (матрицу моделирования-просмотра) {

glMatrixMode(GL MODELVIEW): glLoadldentityO:

⇐ Предыдущая| |Следующая ⇒