Advertisement
Guest User

123123

a guest
Dec 7th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.40 KB | None | 0 0
  1.  
  2. // MFCApplication1View.cpp : реализация класса CMFCApplication1View
  3. //
  4.  
  5. #include "stdafx.h"
  6. // SHARED_HANDLERS можно определить в обработчиках фильтров просмотра реализации проекта ATL, эскизов
  7. // и поиска; позволяет совместно использовать код документа в данным проекте.
  8. #ifndef SHARED_HANDLERS
  9. #include "MFCApplication1.h"
  10. #endif
  11.  
  12. #include<cmath>
  13. #include<complex>
  14.  
  15. #include "MFCApplication1Doc.h"
  16. #include "MFCApplication1View.h"
  17.  
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #endif
  21.  
  22. using namespace std;
  23.  
  24. // CMFCApplication1View
  25.  
  26. IMPLEMENT_DYNCREATE(CMFCApplication1View, CView)
  27.  
  28. BEGIN_MESSAGE_MAP(CMFCApplication1View, CView)
  29. // Стандартные команды печати
  30. ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
  31. ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
  32. ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CMFCApplication1View::OnFilePrintPreview)
  33. ON_WM_CONTEXTMENU()
  34. ON_WM_RBUTTONUP()
  35. ON_WM_CREATE()
  36. ON_WM_DESTROY()
  37. ON_WM_MOUSEMOVE()
  38. ON_WM_KEYDOWN()
  39. ON_COMMAND(ID_32771, &CMFCApplication1View::AroundX)
  40. ON_COMMAND(ID_32772, &CMFCApplication1View::AroundY)
  41. ON_COMMAND(ID_32791, &CMFCApplication1View::AroundZ)
  42. ON_COMMAND(ID_32775, &CMFCApplication1View::TranslationXAdd)
  43. ON_COMMAND(ID_32776, &CMFCApplication1View::TranslationYAdd)
  44. ON_COMMAND(ID_32777, &CMFCApplication1View::TranslationZAdd)
  45. ON_COMMAND(ID_32778, &CMFCApplication1View::TranslationXSub)
  46. ON_COMMAND(ID_32779, &CMFCApplication1View::TranslationYSub)
  47. ON_COMMAND(ID_32782, &CMFCApplication1View::ScaleXAdd)
  48. ON_COMMAND(ID_32788, &CMFCApplication1View::ProportionalScale)
  49. ON_COMMAND(ID_32789, &CMFCApplication1View::ProportionalScaleMin)
  50. ON_COMMAND(ID_32783, &CMFCApplication1View::ScaleXPlus)
  51. ON_COMMAND(ID_32784, &CMFCApplication1View::ScaleZPlus)
  52. ON_COMMAND(ID_32785, &CMFCApplication1View::ScaleXMin)
  53. ON_COMMAND(ID_32786, &CMFCApplication1View::ScaleYMin)
  54. ON_COMMAND(ID_32787, &CMFCApplication1View::ScaleZMin)
  55. ON_COMMAND(ID_32780, &CMFCApplication1View::TransZMin)
  56. END_MESSAGE_MAP()
  57.  
  58. // создание/уничтожение CMFCApplication1View
  59.  
  60. CMFCApplication1View::CMFCApplication1View()
  61. : windH(0)
  62. , windW(0)
  63. , transX(0)
  64. , transY(0)
  65. , transZ(0)
  66. , rotX(0)
  67. , rotY(0)
  68. , rotZ(0)
  69. , scaleX(0)
  70. , scaleY(0)
  71. , scaleZ(0)
  72. , scale_(0)
  73. , alpha_(0)
  74. , beta_(0)
  75. , mousex_(0)
  76. , mousey_(0)
  77. {
  78. // TODO: добавьте код создания
  79.  
  80. }
  81.  
  82. CMFCApplication1View::~CMFCApplication1View()
  83. {
  84. }
  85.  
  86. BOOL CMFCApplication1View::PreCreateWindow(CREATESTRUCT& cs)
  87. {
  88. // TODO: изменить класс Window или стили посредством изменения
  89. // CREATESTRUCT cs
  90. cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
  91. return CView::PreCreateWindow(cs);
  92. }
  93.  
  94. // рисование CMFCApplication1View
  95. //class Point {
  96. //public: GLfloat x;
  97. // GLfloat y;
  98. // Point(GLfloat a,GLfloat b) {
  99. // x = a;
  100. // y = b;
  101. // }
  102. //};
  103.  
  104.  
  105. //void secondAlg(Point a, Point b, Point c, int count);
  106. void Cube();
  107. void CMFCApplication1View::OnDraw(CDC* pDC)
  108. {// TODO: add draw code for native data here
  109.  
  110.  
  111.  
  112. CRect ClientRect; // описываем переменную типа прямоугольник
  113. GetClientRect(&ClientRect); // определяем длину и ширину окна
  114.  
  115.  
  116. windW = abs(ClientRect.right - ClientRect.left);
  117. windH = abs(ClientRect.top - ClientRect.bottom);
  118. glClearColor(0.75f, 0.75f, 0.75f, 1.0f); // задаем цвет фона окна рисования
  119. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // устанавливаем этот цвет фона glClear(GL_COLOR_BUFFER_BIT); // устанавливаем этот цвет фона
  120. InitViewport(0, 0, windW, windH); // устанавливаем параметры области вывода
  121. // далее следуют команды построения изображения, например:
  122. /* glTranslatef(transX, transY, transZ);
  123. glRotatef(rotX, 1.0f, 0.0f, 0.0f);
  124. glRotatef(rotY, 0.0f, 1.0f, 0.0f);
  125. glRotatef(rotZ, 0.0f, 0.0f, 1.0f);
  126. glScalef(scaleX, scaleY, scaleZ);*/ //glColor3f(1., 0., 1.); // задаем цвет рисования
  127. //glPointSize (5.0); // задаем размер точки
  128. //glBegin(GL_POINTS); // определяем рисование точек (вершин)
  129. //glVertex2f(0., 0.); // задаем координаты вершин
  130. //glVertex2f(0., 100.);
  131. //glVertex2f(-30., 0.);
  132. //glVertex2f(-50., -50.);
  133. //glVertex2f(70., 4.);
  134. //glEnd();
  135. //glColor3f(0., 1., 1.); // меняем цвет рисования
  136. //glLineWidth (3.0); // задаем толщину линии
  137. //glBegin(GL_LINES); // рисуем линии
  138. //glVertex2f(-100., 10.); // задаем координаты вершин
  139. //glVertex2f(55., -70.);
  140. //glVertex2f(-50., 50.);
  141. //glVertex2f(35., 110.);
  142. //glVertex2f(0., -100.);
  143. //glVertex2f(70., 20.);
  144. //glEnd();
  145. //*Первое задание*
  146.  
  147.  
  148. //glColor3f(1., 1., 0.);
  149. ////glColor3f(0., 0., 1.); //Рома
  150. //for (int i = 0; i < 10; i++)
  151. // {
  152. //
  153. // glPointSize(1.0 + i);
  154. // glBegin(GL_POINTS);
  155. // glEnable(GL_BLEND);
  156. // glVertex2f(-windW / 4. + i*((windW / 4. + windW / 4.) / 10.), 0.);
  157. // //glVertex2f((-windW / 5.) + i*((windW / 5.)/9), (-windH / 2.5) + i*((2. * windH / 2.5)/9)); //Рома
  158. // glEnd();
  159. // }
  160. //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  161. //glEnable(GL_BLEND);
  162. //// Сглаживание точек
  163. //glEnable(GL_POINT_SMOOTH);
  164. //glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
  165. //glColor3f(1., 0., 0.);
  166. //glColor3f(1., 1., 0.); //Рома
  167. //for (int i = 0; i < 10; i++)
  168. //{
  169. //glPointSize(1.0 + i);
  170. // glBegin(GL_POINTS);
  171. //glVertex2f(0.,-windH/2.5 + i*(windH/2.5 + windH/2.5) / 10.);
  172. ////glVertex2f(0. + i*(windW / 5. / 9.), -windH / 2.5 + i*(2 * windH / 2.5 / 9)); //Рома
  173. // glEnd();
  174. //}
  175. //glDisable(GL_POINT_SMOOTH);
  176.  
  177.  
  178. // Второе задание
  179. //
  180. //glColor3f(1., 0., 0.);
  181. //glLineWidth(5.0);
  182. //glBegin(GL_TRIANGLES);
  183. //glVertex2f(0., windH/4.);
  184. //glVertex2f(0., -windH / 4.);
  185. ////glVertex2f(-windW / 5., -windH / 3.);
  186. ////glVertex2f(windW / 5., -windH / 3.);
  187. //glEnd();
  188. //glEnable(GL_LINE_STIPPLE);
  189. ////glLineStipple(1, 0xFC0F);
  190. //////glLineWidth(2.0);
  191. //glLineWidth(5.0);
  192. //glBegin(GL_LINES);
  193. //glVertex2f(0., windH / 4.);
  194. //glVertex2f(-windW/5., -windH / 4.);
  195. //glVertex2f(-windW / 5., -windH / 3.);
  196. //glVertex2f(windW / 5., windH / 3.);
  197.  
  198.  
  199. /*
  200. glBegin(GL_TRIANGLES);
  201. glColor3d(1, 0.75, 0.3);
  202. glVertex2d(-windW / 4., 10);
  203. glVertex2d(windW / 4., windH / 2.);
  204. glVertex2d(windW / 4., -windH / 2.);
  205. glEnd();
  206.  
  207. glBegin(GL_TRIANGLES);
  208. glColor3d(0., 0., 1);
  209. glVertex2d(0., -windW / 2);
  210. glVertex2d(windW / 2., windH / 2.);
  211. glVertex2d(windW / 2., -windH / 2.);
  212. glEnd();
  213.  
  214. glBegin(GL_TRIANGLES);
  215. glColor3d(1., 0., 1);
  216. glVertex2d(0., 0);
  217. glVertex2d(windW / 2., windH / 5.);
  218. glVertex2d(windW / 2., -windH / 5.);
  219. glEnd();
  220. */
  221.  
  222. //glEnd();
  223.  
  224. /*Третье задание Рома
  225. Point* a = new Point(-windW / 4., -windH / 2.5);
  226. Point* b = new Point(windW / 4., -windH / 5.);
  227. Point* c = new Point(0, windH / 2.5);
  228. int count = 3;
  229. secondAlg(*a, *b, *c, count);
  230. */
  231.  
  232. // 3 Задание
  233. //Points M1;
  234. //M1.x = 5;
  235. //M1.y = 5;
  236. //
  237. //Points M2;
  238. //M2.x = 3;
  239. //M2.y = 3;
  240. //
  241. //Points M3;
  242. //M3.x = 10;
  243. //M3.x = 10;
  244. ////
  245. //int RandomNumber;
  246. ////
  247. //Points middlePoint;
  248. //
  249. //for (int i = 0; i < 10; i++)
  250. //{
  251. // RandomNumber = rand() % 3;
  252. // if (RandomNumber == 0)
  253. // {
  254. // Points M1;
  255. // } else if(RandomNumber == 1)
  256. // {
  257. // Points M2;
  258. // }
  259. // else if(RandomNumber == 2)
  260. // {
  261. // Points M3;
  262. // }
  263. //}
  264.  
  265.  
  266.  
  267. //glColor3f(1., 0., 0.);
  268. ////glLineWidth(1.0);
  269. //glLineWidth(2.0);
  270. //glLineStipple(1, 0x8E8E);
  271. //glBegin(GL_LINES);
  272. ////glVertex2f(0., windH / 4.);
  273. ////glVertex2f(windW/5., -windH / 4.);
  274. //glVertex2f(-windW / 5., windH / 3.);
  275. //glVertex2f(-windW / 5., -windH / 3.);
  276. //glEnd();
  277. //glDisable(GL_LINE_STIPPLE);
  278. //glFlush();
  279.  
  280.  
  281.  
  282. //glColor3f(0.2,0.,0.6); //море
  283. //glBegin(GL_POLYGON);
  284. //glVertex2f(-windW/2.,windH/2);
  285. //glVertex2f(windW/2., windH/2.);
  286. //glVertex2f(windW / 2., 0.);
  287. //glVertex2f(-windW / 2., 0.);
  288. //glEnd();
  289. //
  290. //
  291. //glColor3f(0.4,0.6,1.0);
  292. //glBegin(GL_POLYGON);
  293. //glVertex2f(windW / 2., -windH / 2);
  294. //glVertex2f(-windW / 2.,-windH / 2.);
  295. //glVertex2f(-windW / 2., 0.);
  296. //glVertex2f(windW / 2., 0.);
  297. //glEnd();
  298.  
  299.  
  300.  
  301.  
  302. //glLineWidth(10.0);
  303. //glBegin(GL_LINES);
  304. //for (int i = 0; i < 10; i++) {
  305. // glColor3f(0.4, 0.6, 1.0);
  306. // glVertex2f(-windW, -windH / 2 + i*(windH / 2)/10);
  307. // glColor3f(0.2, 0., 0.6);
  308. // glVertex2f(windW/4., -windH / 4. + i *windW / 4.);
  309. // //glColor3f(0.4, 0.6, 1.0);
  310. // //glVertex2f(windW / 2. + i *windW / 2., -windH / 2. + i *windW / 2.);
  311. // //glColor3f(0.2, 0., 0.6);
  312. // //glVertex2f(windW / 2. + i *windW / 2., -windH / 2. + i *windW / 2.);
  313. //
  314. //}
  315. //glEnd();
  316.  
  317.  
  318.  
  319. //glColor3f(0.6,0.4,0.2);
  320. //glBegin(GL_POLYGON);
  321. //
  322. //glVertex2f(400.,100.);
  323. //glVertex2f(0.,100.);
  324. //glVertex2f(-175., 100);
  325. //glVertex2f(0., 0.);
  326. //glVertex2f(200., 0.);
  327. //glVertex2f(400., 100.);
  328. //
  329. //glEnd();
  330. //
  331. //
  332. //glLineWidth(5.0);
  333. //glColor3f(0.6, 0.4, 0.2);
  334. //glBegin(GL_LINES);
  335. //glVertex2f(0.,0.);
  336. //glVertex2f(0.,500.);
  337. //glEnd();
  338. //
  339. //
  340. //glColor3f(0.6, 0.4, 0.2);
  341. //glBegin(GL_TRIANGLES);
  342. //glVertex2f();
  343. //glEnd();
  344.  
  345. //
  346. //glBegin(GL_POLYGON);
  347. //glVertex2f(0., 0.); // задаем координаты вершин
  348. //glVertex2f(0., 200.);
  349. //glVertex2f(200.,200);
  350. //glVertex2f(200., 0.);
  351. //glVertex2f(0., 0.);
  352. //glEnd();
  353. //
  354. //glColor3f(0.8,0.6,0.2);
  355. //glBegin(GL_TRIANGLES);
  356. //glVertex2f(100., 280.); // задаем координаты вершин
  357. //glVertex2f(0., 200.);
  358. //glVertex2f(200., 200);
  359. //glEnd();
  360. //
  361. //glColor3f(0., 0.8, 1.);
  362. //
  363. //glTranslated(250.0, 30.0, 0);
  364. //glBegin(GL_POLYGON);
  365. //glTranslated(250.0, 30.0, 0);
  366. //glVertex2f(50., 50.); // задаем координаты вершин
  367. //glVertex2f(0., 50.);
  368. //glVertex2f(100., 100);
  369. //glVertex2f(100., 0.);
  370. //glVertex2f(50., 50.);
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377. //задание номер 5
  378. //double x, y;
  379. //int i, j, k, maxit;
  380. //complex <double> z, delta, z1; // комплексные переменные
  381. //maxit = 30;
  382. //glPointSize(4.);
  383. //for (i = 0; i < 400; i++)
  384. //{
  385. // y = -5 + i*0.025;
  386. // for (j = 0; j < 320; j++)
  387. // {
  388. // x = -4 + j*0.025;
  389. // // присвоение комплексной переменной z значения x+iy
  390. // z.real(x);
  391. // z.imag(y);
  392. // delta = z;
  393. // z1 = z;
  394. // k = 0;
  395. // while (k < maxit && abs(z) < 1e6 && abs(delta) > 1e-6)
  396. // {
  397. // k++;
  398. // //z = z - pow(tan(z), tan(z)) / (log(tan(z)) + 1.) * pow(cos(z),-2) * pow(tan(z), tan(z)); //tg(x) ^tg(x)
  399. // z = z - pow(sin(z), (2.*cos(z))) / (2.*sin(z)*pow(sin(z), 2.*cos(z))*(pow(cos(z), 2)*pow(sin(z), -2) - log(sin(z))));
  400. // delta = z1 - z;
  401. // z1 = z;
  402. // }
  403. // // Установка цвета для текущей точки, например, рисунок в от-тенках серого цвета:
  404. // glColor3f(2.0*k / maxit, 2.0*k / maxit, 2.0*k / maxit);
  405. // glBegin(GL_POINTS);
  406. // glVertex2f(x, y);
  407. // glEnd();
  408. // }
  409. //}
  410.  
  411. //for (int i = 0; i < 10; i++) лекция по КГ
  412. //{
  413. // glColor3d(0., 1., i*0.1);
  414. // glPushMatrix(); // сохраняем текущие координаты
  415. // glTranslated(20.0-4*i, 20.0-4*i, -2.0); // сдвигаем
  416. // glRotated(-75*i-10., 1.0, 0.0, 0.0);
  417. // auxSolidCone(1.99, 5.0);
  418. // glColor3d(0., 0., 1);
  419. // auxWireCone(2.0, 5.0);
  420. //
  421. //
  422. // glPopMatrix();
  423. //}
  424. // Задание На глушанкова(Сдано)
  425. //
  426. //glColor3d(1.,0.,0.);
  427. //glPushMatrix();
  428. //glTranslated(0., 50., 0.);
  429. //auxWireDodecahedron(10.);
  430. //glPopMatrix();
  431. //
  432. //glColor3d(0., 0., 0.5);
  433. //glPushMatrix();
  434. //glTranslated(45, 10., 0.);
  435. //glRotated(-65., 1.0, 0.0, 0.0);
  436. //auxWireTorus(5., 6.);
  437. //glPopMatrix();
  438. //
  439. //
  440. //glColor3d(0.,1.,0);
  441. //glPushMatrix();
  442. //glRotated(-65., 1.0, 0.0, 0.0);
  443. //glTranslated(15.,-50, 0.);
  444. //auxSolidCone(7,15);
  445. //glPopMatrix();
  446. //
  447. //
  448. //glColor3d(0.5, 1., 0.2);
  449. //glPushMatrix();
  450. //glTranslated(40., 40, 0.);
  451. //auxWireTeapot(8);
  452. //glPopMatrix();
  453. //
  454. //glColor3d(0.3, 1., 0.6);
  455. //glPushMatrix();
  456. //glRotated(-65., 1.0, 0.0, 0.0);
  457. //glTranslated(-30., 0, 0.);
  458. //auxSolidCylinder(7.0, 10.0);
  459. //glPopMatrix();
  460. //
  461. //glColor3d(0.3, 0.5, 0.6);
  462. //glPushMatrix();
  463. //glTranslated(-30., 40, 0.);
  464. //auxSolidSphere(7.0);
  465. //glPopMatrix();
  466.  
  467. //AUX_RGBImageRec* image; // область памяти, в которой будет храниться загружае-мое из файла изображение
  468. //
  469. //unsigned int tex[1];
  470. //
  471. //glGenTextures(1, tex);
  472. //
  473. //image = auxDIBImageLoadA("C:\\sails.bmp");
  474. //
  475. //glBindTexture(GL_TEXTURE_2D, tex[0]); // загрузили эту текстуру в 1-й (нулевой) элемент массива tex
  476. // // преобразовать размеры текстуры к степеням двойки:
  477. //gluBuild2DMipmaps(GL_TEXTURE_2D, 4,
  478. // image->sizeX, image->sizeY,
  479. // GL_RGB, GL_UNSIGNED_BYTE, image->data);
  480. //
  481. //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
  482. //glBindTexture(GL_TEXTURE_2D, tex[0]);
  483. //glEnable(GL_TEXTURE_2D);
  484.  
  485. //
  486. //
  487. //glTranslated(15,0,12);
  488. //GLfloat FogColor[4] = { 0.3,0.3,0.3,1 };
  489. //glEnable(GL_FOG);
  490. //glFogi(GL_FOG_MODE, GL_LINEAR);
  491. //glFogf(GL_FOG_START, -100.0);
  492. //glFogf(GL_FOG_END, 100.0);
  493. //glFogfv(GL_FOG_COLOR, FogColor);
  494. //
  495. //
  496. //GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; // значения RGBA, определяющие интенсивность рассеянного света ис-точника
  497. //GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; // интенсивность диффуз-ного освещения
  498. //GLfloat specular[] = { 0.0, 0.0, 1.0, 1.0 }; // интенсивность осве-щения зеркального от-ражения
  499. //GLfloat position[] = { 0.0, 0.0,25.0, 1.0 }; // местоположение 0-го источника света – про-жектора
  500. //GLfloat direction[] = { 0.0,0.0,-10.0 }; // направление действия про-жектора
  501. //GLfloat lmodel_ambient[] = { 0.5, 0.2, 0.7, 1.0 }; // полная фоновая интенсивность света
  502. //GLfloat local_view[] = { GL_TRUE }; // местоположение наблю-дателя в начале видовой системы координат
  503. // // Установка параметров источника света (прожектора GL_LIGHT0)
  504. //glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 10.0); // 0-128; по-казатель распределения интенсивности прожек-тора
  505. //glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 120.0); // 0-90, 180; угол разброса прожектора
  506. //glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction); // направление действия прожектора
  507. //glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); // фоновое осве-щение (рассеянный свет)
  508. //glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); // диффузное осве-щение
  509. //glLightfv(GL_LIGHT0, GL_SPECULAR, specular); // зеркальное
  510. //glLightfv(GL_LIGHT0, GL_POSITION, position); // местоположение прожектора
  511. //
  512. //
  513. //glEnable(GL_LIGHTING); // включение режима анализа освещения
  514. //glEnable(GL_LIGHT0); // включаем прожектор
  515. //glEnable(GL_NORMALIZE); // режим нормализации нормалей
  516. //glEnable(GL_DEPTH_TEST); // тест глубины
  517. //glEnable(GL_COLOR_MATERIAL); // учет цвета материала
  518. //
  519. //
  520. //
  521. //
  522. //
  523. //
  524. // glScalef(scale_, scale_, scale_); // одно и тоже масштаби-рование по каждой из осей
  525. // glRotatef(alpha_, 1.0f, 0.0f, 0.0f); // поворот вокруг оси x на угол alpha_
  526. // glRotatef(beta_, 0.0f, 1.0f, 0.0f); // поворот вокруг оси y на угол beta_
  527. // // //То что на лекции
  528. // //
  529. //
  530. // glEnable(GL_DEPTH_TEST);
  531. // glEnable(GL_ALPHA_TEST); //разрешаем обрабатывать четвертый компонент цвета
  532. // glEnable(GL_BLEND); // разрешаем наложение цветов
  533. //
  534. // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  535. //
  536. //
  537. // glPushMatrix();
  538. //
  539. // //облака
  540. // for (int i = 0; i < 100; i++) {
  541. //
  542. // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  543. //
  544. // //Sleep(5);
  545. //
  546. // glColor3d(0.6, 0.4, 0.2);
  547. //
  548. // glTranslated(18.5,-35,32.5);
  549. // glPushMatrix();
  550. // auxSolidCylinder(1., 23.);
  551. // glPopMatrix();
  552. //
  553. //
  554. // glPushMatrix();
  555. // glRotated(-90., 1., 0., 0.);
  556. // glTranslated(0., 0., -1.);
  557. // glColor4d(0., 0.8, 0., 1);
  558. // auxSolidCone(4., 6.99);
  559. // glColor4d(0., 0.6, 0., 1.);
  560. // auxWireCone(4., 7);
  561. //
  562. //
  563. // glTranslated(0., 0., -5.);
  564. // glColor4d(0., 0.8, 0., 1);
  565. // auxSolidCone(5., 6.99);
  566. // glColor3d(0., 0.6, 0.);
  567. // auxWireCone(5., 7);
  568. //
  569. // glTranslated(0., 0., -5.);
  570. // glColor4d(0., 0.8, 0., 1);
  571. // auxSolidCone(6., 6.99);
  572. // glColor3d(0., 0.6, 0.);
  573. // auxWireCone(6., 7);
  574. //
  575. // glTranslated(0., 0., -5.);
  576. // glColor4d(0., 0.8, 0., 1);
  577. // auxSolidCone(7., 6.99);
  578. // glColor4d(0., 0.6, 0., 1.);
  579. // auxWireCone(7., 7);
  580. //
  581. //
  582. // glPopMatrix();
  583. // glDisable(GL_DEPTH_TEST);
  584. // glPushMatrix();
  585. //
  586. //
  587. // //Горы
  588. // //Texture mountain
  589. // glEnable(GL_DEPTH_TEST);
  590. // glEnable(GL_TEXTURE_2D);
  591. // glPushMatrix();
  592. // glRotated(-90., 1., 0., 0.);
  593. // glTranslated(25., 25., -22.);
  594. // GLUquadricObj* quadObj;
  595. // quadObj = gluNewQuadric();
  596. // gluQuadricDrawStyle(quadObj, GLU_FILL);
  597. // gluQuadricTexture(quadObj, GL_TRUE);
  598. // gluCylinder(quadObj, 20.0, 0.0, 10.0, 100., 100.);
  599. // /*glColor4d(0.8, 0.6, 0.2, 1);
  600. // glRotated(-90., 1., 0., 0.);
  601. // glTranslated(25., 25., -22.);
  602. // auxSolidCone(20., 10);*/
  603. // glPopMatrix();
  604. // glDisable(GL_TEXTURE_2D);
  605. //
  606. // glPushMatrix();
  607. //
  608. // glColor4d(0.7, 0.6, 0.3, 1);
  609. // glRotated(-90., 1., 0., 0.);
  610. // glTranslated(0., -15, -22);
  611. // auxSolidCone(20., 10);
  612. //
  613. // glPopMatrix();
  614. //
  615. // glPushMatrix();
  616. //
  617. // glColor4d(0.8, 0.5, 0.3, 1);
  618. // glRotated(-90., 1., 0., 0.);
  619. // glTranslated(25., 0, -22);
  620. // auxSolidCone(20., 10);
  621. //
  622. // glPopMatrix();
  623. //
  624. // glDisable(GL_DEPTH_TEST);
  625. //
  626. //
  627. //
  628. //
  629. // glTranslated(-20., 30., -33.);
  630. // //Солнце
  631. //
  632. // glPushMatrix();
  633. // glColor4d(1., 1., 0., 1);
  634. //
  635. // auxSolidSphere(5.);
  636. //
  637. //
  638. // glPopMatrix();
  639. //
  640. //
  641. //
  642. //
  643. // glPushMatrix();
  644. // //Облако
  645. //
  646. // glTranslated(0.2+i/5, 0.2, 0.0);
  647. //
  648. //
  649. // glEnable(GL_DEPTH_TEST);
  650. //
  651. // glTranslated(0., 17., 0);
  652. //
  653. // glColor4d(0., 1., 1., 0.8);
  654. // glTranslated(0., 0., 5.);
  655. // auxSolidSphere(5.0);
  656. //
  657. // glTranslated(0.0, 0., -5.);
  658. //
  659. // auxSolidSphere(3);
  660. //
  661. // glTranslated(0., 3., -2.5);
  662. // auxSolidSphere(3);
  663. //
  664. // glTranslated(0., -3., -3);
  665. // auxSolidSphere(3);
  666. //
  667. // glPopMatrix();
  668. //
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675. //
  676. // glFlush();
  677. // SwapBuffers(wglGetCurrentDC());
  678.  
  679.  
  680. //}
  681.  
  682.  
  683. //
  684. //glPopMatrix();
  685.  
  686.  
  687. //все остальное
  688.  
  689.  
  690.  
  691. //glPushMatrix();
  692. //
  693. //glBegin(GL_POLYGON);
  694. //
  695. //
  696. //glVertex2f(0, -150);
  697. //
  698. //glVertex2f(-250, -250);
  699. //
  700. //
  701. //
  702. //glVertex2f(-100, 100);
  703. //
  704. //
  705. //glVertex2f(100, 100);
  706. //
  707. //
  708. //glVertex2f(100, -100);
  709. //
  710. //
  711. //glEnd();
  712.  
  713.  
  714. //Куст и заяц
  715. //const float Rout = 80.0f;//внешний радиус
  716. //const float Rin = 20.0f;//внутренний радиус
  717. //const int nRay = 15;//количество лучей
  718. //const int nInner = 30;//количество точек окружности
  719. //
  720. //glRotated(180,0,0,1);
  721. //
  722. //glColor3d(0,0.5,0);
  723. //float step = 3.14 * 2 / nRay;
  724. //
  725. //// КУСТ
  726. //step = 3.14 / nRay;
  727. //glBegin(GL_POLYGON);
  728. //for (int i = 0; i < nRay; i++)
  729. //{
  730. // glVertex2f(Rout*sin(step*i * 2), Rout*cos(step*i * 2));
  731. // glVertex2f(Rin*sin(step*(i * 2 + 1)), Rin*cos(step*(i * 2 + 1)));
  732. //}
  733. //glEnd();
  734. //
  735. //
  736. //glTranslated(50,50,0);
  737. //glColor3d(0.6, 0, 0);
  738. //step = 3.14 / 5;
  739. //glBegin(GL_POLYGON);
  740. //for (int i = 0; i < 5; i++)
  741. //{
  742. // glVertex2f(Rout*sin(step*i * 2), Rout*cos(step*i * 2));
  743. // glVertex2f(Rin*sin(step*(i * 2 + 1)), Rin*cos(step*(i * 2 + 1)));
  744. //}
  745. //glEnd();
  746. //
  747. //glPopMatrix();
  748.  
  749. for (int i = 0; i <= 360;i++) {
  750.  
  751. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  752. Sleep(25.0);
  753. //glRotated(1,1 ,0, 0);
  754.  
  755. glPushMatrix();
  756.  
  757. GLUquadricObj *quadObj;
  758. quadObj = gluNewQuadric(); // создаем новый объект
  759.  
  760.  
  761. glColor3d(1, 0, 0);
  762. glRotated(30, 1, 1, 0);
  763. glPushMatrix();
  764.  
  765. auxWireCylinder(50, 100);
  766.  
  767. glPopMatrix();
  768.  
  769. glTranslated(0, -50, 0);
  770. gluQuadricDrawStyle(quadObj, GLU_LINE); // устанавливаем стиль
  771. gluCylinder(quadObj, 75, 50, 50, 15, 15); // рисуем цилиндр
  772.  
  773. glPushMatrix();
  774. glRotated(70., 0.0, 0.0, 1.0);
  775. glRotated(-50, 1, 0, 0);
  776. glTranslated(50, -50, 0.0);
  777. glScaled(0.4, 0.4, 0.4);
  778. gluPartialDisk(quadObj, 50, 75, 30, 30, 50.0, 200.0);//ручка
  779. glPopMatrix();
  780.  
  781. glPushMatrix();
  782. glTranslated(0, -30, 0);
  783. gluPartialDisk(quadObj, 0, 50, 30, 30, 10.0, 360.0);//Дно
  784.  
  785. glPopMatrix();
  786.  
  787. glPopMatrix();
  788. glFlush();
  789. SwapBuffers(wglGetCurrentDC());
  790.  
  791. }
  792.  
  793. glFlush();
  794. SwapBuffers(wglGetCurrentDC());
  795.  
  796. }
  797.  
  798.  
  799.  
  800. //for (int j = 0; j < 150;j++) {
  801. // for (int i = 0; i < 150; i++)
  802. // {
  803. // glPushMatrix();
  804. // glRotated(360 / 50 + i, 1, 0, 0);
  805. // auxSolidCone(0.2, 10);
  806. // glPopMatrix();
  807. //
  808. // }
  809. //}
  810.  
  811. //8
  812. //glColor3d(1.0, 0.0, 0.);
  813. //
  814. //glEnable(GL_DEPTH_TEST); // выполнение теста глубины
  815. //glEnable(GL_LIGHTING); // использование фоновой освещенности
  816. //glEnable(GL_LIGHT0); // включение источника све-та с параметрами по умол-чанию
  817. //glEnable(GL_COLOR_MATERIAL); // учет цвета материала при освещении
  818. //float rotY = 60.0;
  819. //float rotX = 30.0;
  820. //glTranslatef(0.0f, 0.0f, -5.0f);
  821. //glRotatef(rotY, 0., 1., 0.);
  822. //glRotatef(rotX, 1., 0., 0.);
  823. //glScalef(2., 2., 2.);
  824. //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  825. //glColor3f(0.8, 0.7, 1.0);
  826. //
  827. ////Cube();
  828. ////float H[16]; // массив, задающий матрицу скоса
  829. ////for (int i = 0; i<16; i++)
  830. //// H[i] = 0.0;
  831. //// H[0] = H[5] = H[10] = H[15] = 1.0;
  832. //// H[8] = 0.8; H[9] = 1.5;
  833. ////glMultMatrixf(H); // применение матрицы скоса
  834. //Cube();
  835. //glDisable(GL_DEPTH_TEST); // отключение режимов
  836. //glDisable(GL_LIGHTING);
  837. //glDisable(GL_LIGHT0);
  838. //glDisable(GL_COLOR_MATERIAL);
  839.  
  840.  
  841.  
  842. //void ELka(GLfloat x = 0, GLfloat y = 0, GLfloat z = 0)
  843. //{
  844. // glColor3d(0.6, 0.4, 0.2);
  845. // glPushMatrix();
  846. // glTranslated(x,y,z);
  847. // auxSolidCylinder(2.,8.);
  848. // glPopMatrix();
  849. //}
  850.  
  851.  
  852.  
  853. //void secondAlg(Point a, Point b, Point c, int count) {
  854. // if (count == 0) return;
  855. // glBegin(GL_LINE_STRIP);
  856. // glColor3d(1., 0., 0.);
  857. // glLineWidth(3.);
  858. // glVertex2d(a.x, a.y);
  859. // glVertex2d(b.x, b.y);
  860. // glVertex2d(c.x, c.y);
  861. // glVertex2d(a.x, a.y);
  862. // glEnd();
  863. // count--;
  864. // secondAlg(a, Point((a.x + b.x) / 2, (a.y + b.y) / 2), Point((a.x + c.x) / 2, (a.y + c.y) / 2), count);
  865. // secondAlg(b, Point((a.x + b.x) / 2, (a.y + b.y) / 2), Point((b.x + c.x) / 2, (b.y + c.y) / 2), count);
  866. // secondAlg(c, Point((c.x + b.x) / 2, (c.y + b.y) / 2), Point((a.x + c.x) / 2, (a.y + c.y) / 2), count);
  867. //}
  868.  
  869. // печать CMFCApplication1View
  870.  
  871.  
  872. void CMFCApplication1View::OnFilePrintPreview()
  873. {
  874. #ifndef SHARED_HANDLERS
  875. AFXPrintPreview(this);
  876. #endif
  877. }
  878.  
  879. BOOL CMFCApplication1View::OnPreparePrinting(CPrintInfo* pInfo)
  880. {
  881. // подготовка по умолчанию
  882. return DoPreparePrinting(pInfo);
  883. }
  884.  
  885. void CMFCApplication1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  886. {
  887. // TODO: добавьте дополнительную инициализацию перед печатью
  888. }
  889.  
  890. void CMFCApplication1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  891. {
  892. // TODO: добавьте очистку после печати
  893. }
  894.  
  895. void CMFCApplication1View::OnRButtonUp(UINT /* nFlags */, CPoint point)
  896. {
  897. ClientToScreen(&point);
  898. OnContextMenu(this, point);
  899. }
  900.  
  901. void CMFCApplication1View::OnContextMenu(CWnd* /* pWnd */, CPoint point)
  902. {
  903. #ifndef SHARED_HANDLERS
  904. theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);
  905. #endif
  906. }
  907.  
  908.  
  909. // диагностика CMFCApplication1View
  910.  
  911. #ifdef _DEBUG
  912. void CMFCApplication1View::AssertValid() const
  913. {
  914. CView::AssertValid();
  915. }
  916.  
  917. void CMFCApplication1View::Dump(CDumpContext& dc) const
  918. {
  919. CView::Dump(dc);
  920. }
  921.  
  922. CMFCApplication1Doc* CMFCApplication1View::GetDocument() const // встроена неотлаженная версия
  923. {
  924. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCApplication1Doc)));
  925. return (CMFCApplication1Doc*)m_pDocument;
  926. }
  927. #endif //_DEBUG
  928.  
  929.  
  930. // обработчики сообщений CMFCApplication1View
  931.  
  932.  
  933. int CMFCApplication1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
  934. {
  935.  
  936. if (CView::OnCreate(lpCreateStruct) == -1)
  937. return -1;
  938. rotX = rotY = 30.0;
  939. rotZ = 0.0;
  940. scaleX = scaleY = scaleZ = 1.0;
  941. transX = transY = transZ = 0.0;
  942. alpha_ = 0;
  943. beta_ = 0;
  944. scale_ = 1;
  945. mousex_ = 0;
  946. mousey_ = 0;
  947.  
  948. // TODO: Add your specialized creation code here
  949.  
  950. // Настраиваем формат пикселей для работы с OpenGL:
  951. PIXELFORMATDESCRIPTOR pfd; // структура для описания формата пикселей
  952. memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); // для начала заполняем все значения структуры нулями
  953. // Начинаем заполнение нужных нам значений структуры:
  954. pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); // размер структуры, устанавливаем равным размеру типа PIXELFORMATDESCRIPTOR
  955. pfd.nVersion = 1; // номер версии, для работы с OpenGL ставим 1
  956. pfd.dwFlags = PFD_DRAW_TO_WINDOW | // рисовать в окне
  957. PFD_SUPPORT_OPENGL | // поддержка OpenGL
  958. PFD_DOUBLEBUFFER; // двойная буферизация
  959. pfd.iPixelType = PFD_TYPE_RGBA; // цветовая модель RGBA
  960. pfd.cColorBits = 32; // 32-битовая глубина цвета
  961. pfd.cAlphaBits = 8; // компонента альфа цвета
  962. pfd.cAccumBits = 32; // буфер аккумулятора
  963. pfd.cDepthBits = 32; // буфер глубины (z-буфер)
  964. pfd.cStencilBits = 8; // трафарет
  965. pfd.iLayerType = PFD_MAIN_PLANE; // тип плоскости – основная
  966. m_pdc = GetDC(); // создаем контекст устройства
  967. // Исходя из настройки пикселей и созданного контекста устройства, получаем оптимальный, наиболее совпадающий с требуемым, формат пикселей:
  968. int nPixelFormat = ChoosePixelFormat(m_pdc->m_hDC, &pfd);
  969. if (nPixelFormat == 0)
  970. {
  971. MessageBox(LPCTSTR("Ошибка при выборе формата пикселей"));
  972. return FALSE;
  973. }
  974. BOOL bResult = SetPixelFormat(m_pdc->m_hDC, nPixelFormat, &pfd);
  975. // Устанавливаем полученный формат пикселей:
  976. if (!bResult)
  977. {
  978. MessageBox(LPCTSTR("Ошибка при установке формата пикселей"));
  979. return FALSE;
  980. }
  981. if ((hrc = wglCreateContext(m_pdc->m_hDC)) == NULL) // на основе контекста устройства создаем контекст воспроизведения
  982. return FALSE;
  983. if (wglMakeCurrent(m_pdc->m_hDC, hrc) == FALSE) // делаем его текущим
  984. return FALSE;
  985. return 0;
  986. }
  987.  
  988.  
  989.  
  990. void CMFCApplication1View::OnDestroy()
  991. // функция обработки сообщения “Уничтожение окна”
  992. { // TODO: Add your message handler code here
  993. // Убираем из текущего и удаляем контекст воспроизведения:
  994. if (hrc == ::wglGetCurrentContext()) // запрашиваем текущий контекст воспроизведения
  995. {
  996. wglMakeCurrent(NULL, NULL); // делаем его не текущим
  997. wglDeleteContext(hrc); // удаляем контекст воспроизведения
  998. hrc = NULL;
  999. }
  1000. CView::OnDestroy(); // корректное завершение работы
  1001. }
  1002.  
  1003.  
  1004.  
  1005. void CMFCApplication1View::InitViewport(int x, int y, int width, int height)
  1006. {
  1007. glViewport(x, y, width, height);
  1008. glMatrixMode(GL_PROJECTION);
  1009. glLoadIdentity();
  1010. glOrtho(-900, 900, -500, 500, -2500, 2500);
  1011. //glFrustum(0.,0.,0.,0.,0.,0.);
  1012. //gluPerspective (90.0, width/height, 1.0, 10.0);
  1013. //gluLookAt(0., 0., 20., 0., 0., 0., 0., 1., 0.);
  1014. glMatrixMode(GL_MODELVIEW);
  1015. glLoadIdentity();
  1016. }
  1017.  
  1018.  
  1019.  
  1020. void CMFCApplication1View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
  1021. {
  1022. // TODO: добавьте свой код обработчика сообщений или вызов стандартного
  1023. if ((nChar == 'Z') || (nChar == 'M'))
  1024. {
  1025. transY -= 1;
  1026. OnDraw(m_pdc);
  1027. }
  1028. if ((nChar == 'W') || (nChar == 'T'))
  1029. {
  1030. transY += 1;
  1031. OnDraw(m_pdc);
  1032. }
  1033. if ((nChar == 'A') || (nChar == 'J'))
  1034. {
  1035. transX -= 1;
  1036. OnDraw(m_pdc);
  1037. }
  1038. if ((nChar == 'D') || (nChar == 'L'))
  1039. {
  1040. transX += 1;
  1041. OnDraw(m_pdc);
  1042. }
  1043. if (nChar == 'S')
  1044. {
  1045. rotY += 10;
  1046. OnDraw(m_pdc);
  1047. }
  1048. if (nChar == 'K')
  1049. {
  1050. rotY -= 10;
  1051. OnDraw(m_pdc);
  1052. }
  1053. if (nChar == '6')
  1054. {
  1055. if ((scaleX<4.1) && (scaleY<4.1) && (scaleZ<4.1))
  1056. {
  1057. scaleX = scaleX + 4.1 / 10.;
  1058. scaleY = scaleY + 4.1 / 10.;
  1059. scaleZ = scaleZ + 4.1 / 10.;
  1060. }
  1061. OnDraw(m_pdc);
  1062. }
  1063. if (nChar == '7')
  1064. {
  1065. if ((scaleX>4.1 / 10.) && (scaleY>4.1 / 10.) && (scaleZ>4.1 / 10.))
  1066. {
  1067. scaleX = scaleX - 4.1 / 10.;
  1068. scaleY = scaleY - 4.1 / 10.;
  1069. scaleZ = scaleZ - 4.1 / 10.;
  1070. }
  1071. OnDraw(m_pdc);
  1072. }
  1073.  
  1074. CView::OnKeyDown(nChar, nRepCnt, nFlags);
  1075. }
  1076.  
  1077.  
  1078. void CMFCApplication1View::OnMouseMove(UINT nFlags, CPoint point)
  1079. {
  1080. // TODO: добавьте свой код обработчика сообщений или вызов стандартного
  1081. // вращение сцены:
  1082. if (nFlags&MK_LBUTTON)
  1083. {
  1084. // прибавить переменным alpha_ и beta_ разницу между новыми и старыми положениями мыши
  1085. beta_ += point.x - mousex_;
  1086. alpha_ += point.y - mousey_;
  1087. Invalidate(false);
  1088. }
  1089. // масштабирование сцены
  1090. if (nFlags&MK_RBUTTON)
  1091. {
  1092. scale_ += (point.x - mousex_)*0.02;
  1093. if (scale_<0.1) scale_ = 0.1;
  1094. Invalidate(false);
  1095. }
  1096. // сохраняем положение мыши
  1097. mousex_ = point.x;
  1098. mousey_ = point.y;
  1099.  
  1100. CView::OnMouseMove(nFlags, point);
  1101. }
  1102.  
  1103.  
  1104.  
  1105.  
  1106. void CMFCApplication1View::AroundX()
  1107. {
  1108. // TODO: добавьте свой код обработчика команд
  1109. rotX = rotX + 10;
  1110. Invalidate();
  1111.  
  1112. }
  1113.  
  1114.  
  1115. void CMFCApplication1View::AroundY()
  1116. {
  1117. // TODO: добавьте свой код обработчика команд
  1118. rotY = rotY + 10;
  1119. Invalidate();
  1120. }
  1121.  
  1122.  
  1123. void CMFCApplication1View::AroundZ()
  1124. {
  1125. // TODO: добавьте свой код обработчика команд
  1126. rotZ = rotZ + 10;
  1127. Invalidate();
  1128. }
  1129.  
  1130.  
  1131. void CMFCApplication1View::TranslationXAdd()
  1132. {
  1133. // TODO: добавьте свой код обработчика команд
  1134. transX = transX + 1;
  1135. Invalidate();
  1136. }
  1137.  
  1138.  
  1139. void CMFCApplication1View::TranslationYAdd()
  1140. {
  1141. transY = transY + 1;
  1142. Invalidate();
  1143.  
  1144. // TODO: добавьте свой код обработчика команд
  1145. }
  1146.  
  1147.  
  1148. void CMFCApplication1View::TranslationZAdd()
  1149. {
  1150.  
  1151. transZ = transZ + 50.;
  1152. Invalidate();
  1153.  
  1154. // TODO: добавьте свой код обработчика команд
  1155. }
  1156.  
  1157.  
  1158. void CMFCApplication1View::TranslationXSub()
  1159. {
  1160. transX = transX-1;
  1161. Invalidate();
  1162.  
  1163. // TODO: добавьте свой код обработчика команд
  1164. }
  1165.  
  1166.  
  1167. void CMFCApplication1View::TranslationYSub()
  1168. {
  1169. // TODO: добавьте свой код обработчика команд
  1170. transY = transY -1.;
  1171. Invalidate();
  1172.  
  1173. }
  1174.  
  1175.  
  1176.  
  1177.  
  1178. void CMFCApplication1View::ScaleXAdd()
  1179. {
  1180. // TODO: добавьте свой код обработчика команд
  1181. if (scaleX < 4.1)
  1182. {
  1183. scaleX = scaleX + 4.1 / 10. ;
  1184. }
  1185. Invalidate();
  1186. }
  1187.  
  1188.  
  1189. void CMFCApplication1View::ProportionalScale()
  1190. {
  1191. if ((scaleX<4.1) && (scaleY<4.1) &&
  1192. (scaleZ<4.1))
  1193. {
  1194. scaleX = scaleX + 4.1 / 10.;
  1195. scaleY = scaleY + 4.1 / 10.;
  1196. scaleZ = scaleZ + 4.1 / 10.;
  1197. }
  1198. Invalidate();
  1199.  
  1200. // TODO: добавьте свой код обработчика команд
  1201. }
  1202.  
  1203.  
  1204. void CMFCApplication1View::ProportionalScaleMin()
  1205. {
  1206. // TODO: добавьте свой код обработчика команд
  1207. if ((scaleX > 4.1/ 10.) && (scaleY>4.1/ 10.) &&
  1208. (scaleZ >4.1/ 10.))
  1209. {
  1210. scaleX = scaleX -4.1 / 10.;
  1211. scaleY = scaleY -4.1 / 10.;
  1212. scaleZ = scaleZ -4.1 / 10.;
  1213. }
  1214. Invalidate();
  1215.  
  1216. }
  1217.  
  1218.  
  1219. void CMFCApplication1View::ScaleXPlus()
  1220. {
  1221. // TODO: добавьте свой код обработчика команд
  1222.  
  1223. if (scaleY < 4.1)
  1224. scaleY = scaleY + 4.1 / 10.;
  1225. Invalidate();
  1226.  
  1227. }
  1228.  
  1229.  
  1230. void CMFCApplication1View::ScaleZPlus()
  1231. {
  1232. // TODO: добавьте свой код обработчика команд
  1233. if (scaleZ < 4.1)
  1234. scaleZ = scaleZ + 4.1 / 10.;
  1235. Invalidate();
  1236. }
  1237.  
  1238.  
  1239. void CMFCApplication1View::ScaleXMin()
  1240. {
  1241. // TODO: добавьте свой код обработчика команд
  1242. if (scaleX < 4.1)
  1243. scaleX = scaleX - 4.1 / 10.;
  1244. Invalidate();
  1245. }
  1246.  
  1247.  
  1248. void CMFCApplication1View::ScaleYMin()
  1249. {
  1250. // TODO: добавьте свой код обработчика команд
  1251. if (scaleX < 4.1)
  1252. scaleX = scaleX - 4.1 / 10.;
  1253. Invalidate();
  1254. }
  1255.  
  1256.  
  1257. void CMFCApplication1View::ScaleZMin()
  1258. {
  1259. // TODO: добавьте свой код обработчика команд
  1260. if (scaleX < 4.1)
  1261. scaleX = scaleX - 4.1 / 10.;
  1262. Invalidate();
  1263. }
  1264.  
  1265.  
  1266. void CMFCApplication1View::TransZMin()
  1267. {
  1268. transZ = transZ - 50.;
  1269. Invalidate();
  1270. // TODO: добавьте свой код обработчика команд
  1271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement