#include "point3D.h" point3D::point3D() { x = 0.0; y = 0.0; z = 0.0; winx = 0.0; winz = 0.0; winy = 0.0; select = false; } point3D::~point3D() { } void point3D::SetRect(int x1, int y1, int x2, int y2) { LeftDownCorner.s.X = x1; LeftDownCorner.s.Y = y1; RightUpCorner.s.X = x2; RightUpCorner.s.Y = y2; } void point3D::Draw() { //------------Получаем видовые координаты точки----------- glGetIntegerv(GL_VIEWPORT, viewport.T); glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix.M); glGetDoublev(GL_PROJECTION_MATRIX, projMatrix.M); gluProject(x, y, z, modelMatrix.M, projMatrix.M, viewport.T, &winx, &winy, &winz); winy = viewport.T[3] - (GLint)winy - 1; SetRect((int)winx - 5, (int)winy - 5, (int)winx + 5, (int)winy + 5);//создаем прямоугольник вокруг точки if (select == true) { glPointSize(7.0);//размер выделенной точки } else glPointSize(3.0);//размер обычной точки glBegin(GL_POINTS); glVertex3d(x, y, z);//рисуем точку glEnd(); } bool point3D::PtInRect(GLint x, GLint y) { if ((x < LeftDownCorner.s.X) || (x > RightUpCorner.s.X)) return false; if ((y < LeftDownCorner.s.Y) || (y > RightUpCorner.s.Y)) return false; return true; }