Advertisement
Guest User

1231231123

a guest
Dec 7th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.47 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. void setFog() {
  95. GLfloat FogColor[4] = { 0.3,0.3,0.3,1 };
  96. glEnable(GL_FOG);
  97. glFogi(GL_FOG_MODE, GL_LINEAR);
  98. glFogf(GL_FOG_START, -100.0);
  99. glFogf(GL_FOG_END, 70.0);
  100. glFogfv(GL_FOG_COLOR, FogColor);
  101.  
  102. }
  103.  
  104. void setLightning() {
  105. GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; // значения RGBA, определяющие интенсивность рассеянного света ис-точника
  106. GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; // интенсивность диффуз-ного освещения
  107. GLfloat specular[] = { 0.0, 0.0, 1.0, 1.0 }; // интенсивность осве-щения зеркального от-ражения
  108. GLfloat position[] = { 15.0, 12.0, 45.0, 1.0 }; // местоположение 0-го источника света – про-жектора
  109. //GLfloat direction[] = { -10.0, -10.0, -10.0 }; // направление действия про-жектора
  110. GLfloat lmodel_ambient[] = { 0.5, 0.2, 0.7, 1.0 }; // полная фоновая интенсивность света
  111. GLfloat local_view[] = { GL_TRUE }; // местоположение наблю-дателя в начале видовой системы координат
  112. // Установка параметров источника света (прожектора GL_LIGHT0)
  113. glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 10.0); // 0-128; по-казатель распределения интенсивности прожек-тора
  114. glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 120.0); // 0-90, 180; угол разброса прожектора
  115. //glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction); // направление действия прожектора
  116. glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); // фоновое осве-щение (рассеянный свет)
  117. glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); // диффузное осве-щение
  118. glLightfv(GL_LIGHT0, GL_SPECULAR, specular); // зеркальное
  119. glLightfv(GL_LIGHT0, GL_POSITION, position); // местоположение прожектора
  120.  
  121. glEnable(GL_LIGHTING); // включение режима анализа освещения
  122. glEnable(GL_LIGHT0); // включаем прожектор
  123. glEnable(GL_NORMALIZE); // режим нормализации нормалей
  124. glEnable(GL_DEPTH_TEST); // тест глубины
  125. glEnable(GL_COLOR_MATERIAL); // учет цвета материала
  126. }
  127.  
  128. void drawMountain(float shade, float posX, float posY, float posZ) {
  129. glPushMatrix();
  130. glColor3f(0.396 * shade, 0.263 * shade, 0.12 * shade);
  131. glTranslated(posX, posY, posZ);
  132. auxSolidCone(25, 15);
  133. glPopMatrix();
  134. }
  135.  
  136. void drawSun() {
  137. glPushMatrix();
  138. glTranslated(15, 12, 45);
  139. glColor4d(1, 1, 0, 1.0);
  140. auxSolidSphere(7);
  141. glPopMatrix();
  142. }
  143.  
  144. void drawTree(float scale, float posX, float posY, float posZ) {
  145. glPushMatrix();
  146. glTranslated(posX, posY, posZ);
  147. glRotated(90, 1, 0, 0);
  148. glColor3f(0.396 * 2, 0.263 * 2, 0.12 * 2);
  149. auxSolidCylinder(2 * scale, 10 * scale);
  150. glPopMatrix();
  151.  
  152. glPushMatrix();
  153. glTranslated(posX, posY, posZ);
  154. glRotated(0, 1, 0, 0);
  155. glColor3d(0, 1, 0);
  156. auxSolidCone(5 * scale, 4 * scale);
  157. glPopMatrix();
  158.  
  159. glPushMatrix();
  160. glTranslated(posX, posY, posZ + 4 * scale);
  161. glRotated(0, 1, 0, 0);
  162. glColor3d(0, 1, 0);
  163. auxSolidCone(5 * scale, 4 * scale);
  164. glPopMatrix();
  165.  
  166. glPushMatrix();
  167. glTranslated(posX, posY, posZ + 8 * scale);
  168. glRotated(0, 1, 0, 0);
  169. glColor3d(0, 1, 0);
  170. auxSolidCone(5 * scale, 4 * scale);
  171. glPopMatrix();
  172. }
  173. void CMFCApplication1View::OnDraw(CDC* pDC)
  174. {// TODO: add draw code for native data here
  175. CRect ClientRect; // описываем переменную типа прямоугольник
  176. GetClientRect(&ClientRect); // определяем длину и ширину окна
  177. windW = abs(ClientRect.right - ClientRect.left);
  178. windH = abs(ClientRect.top - ClientRect.bottom);
  179. glClearColor(0.75f, 0.75f, 0.75f, 1.0f); // задаем цвет фона окна рисования
  180. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // устанавливаем этот цвет фона glClear(GL_COLOR_BUFFER_BIT); // устанавливаем этот цвет фона
  181. InitViewport(0, 0, windW, windH); // устанавливаем параметры области вывода
  182. // далее следуют команды построения изображения, например:
  183. glTranslatef(transX, transY, transZ);
  184. glRotatef(rotX, 1.0f, 0.0f, 0.0f);
  185. glRotatef(rotY, 0.0f, 1.0f, 0.0f);
  186. glRotatef(rotZ, 0.0f, 0.0f, 1.0f);
  187. glScalef(scaleX, scaleY, scaleZ);
  188.  
  189. glScalef(scale_, scale_, scale_); // одно и тоже масштаби-рование по каждой из осей
  190. glRotatef(alpha_, 1.0f, 0.0f, 0.0f); // поворот вокруг оси x на угол alpha_
  191. glRotatef(beta_, 0.0f, 1.0f, 0.0f); // поворот вокруг оси y на угол beta_
  192.  
  193. //setLightning();
  194. ////setFog();
  195. //
  196. //glEnable(GL_DEPTH_TEST);
  197. //glEnable(GL_ALPHA_TEST); //разрешаем обрабатывать четвертый компонент цвета
  198. //glEnable(GL_BLEND); // разрешаем наложение цветов
  199. //
  200. //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  201. //
  202. //for (int i = 0; i < 200; i++) {
  203. // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  204. // drawMountain(1, 0.0, 0, 0);
  205. // drawMountain(0.3, 22, 0, 0);
  206. // drawMountain(1.5, 10, 22, 0);
  207. // drawTree(i / 200., 24, 22, 12);
  208. // glDisable(GL_LIGHTING);
  209. // drawSun();
  210. // glEnable(GL_LIGHTING);
  211. // glFlush();
  212. // SwapBuffers(wglGetCurrentDC());
  213. //}
  214. for (int i = 0; i <= 360; i++) {
  215.  
  216. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  217. Sleep(25.0);
  218. glRotated(1,1 ,1, 1);
  219.  
  220.  
  221. GLUquadricObj *quadObj;
  222. quadObj = gluNewQuadric(); // создаем новый объект
  223. glPushMatrix();
  224.  
  225. glColor3d(1, 0, 0);
  226.  
  227.  
  228. auxWireCylinder(50, 100);
  229.  
  230. glPopMatrix();
  231.  
  232. //glPushMatrix();
  233. //glRotated(90,1,0,0);
  234. //glTranslated(20,50,0);
  235. //gluQuadricDrawStyle(quadObj, GLU_LINE); // устанавливаем стиль
  236. //gluCylinder(quadObj, 75, 50, 50, 15, 15); // рисуем цилиндр
  237.  
  238. glPopMatrix();
  239.  
  240. glPushMatrix();
  241. //glRotated(70., 0.0, 0.0, 1.0);
  242. //glRotated(-50, 1, 0, 0);
  243. glTranslated(50, 1, 0.0);
  244. glTranslated(-15,-40,1);
  245. //glScaled(0.4, 0.4, 0.4);
  246. auxWireTorus(30,10);
  247. glPopMatrix();
  248.  
  249. glPushMatrix();
  250. glTranslated(0, -100, 0);
  251. glRotated(90,1,0,0);
  252. gluPartialDisk(quadObj, 0, 50, 30, 30, 10.0, 360.0);//Дно
  253.  
  254. glPopMatrix();
  255.  
  256.  
  257. glFlush();
  258. SwapBuffers(wglGetCurrentDC());
  259.  
  260. }
  261.  
  262. glFlush();
  263. SwapBuffers(wglGetCurrentDC());
  264.  
  265. }
  266.  
  267. void CMFCApplication1View::OnFilePrintPreview()
  268. {
  269. #ifndef SHARED_HANDLERS
  270. AFXPrintPreview(this);
  271. #endif
  272. }
  273.  
  274. BOOL CMFCApplication1View::OnPreparePrinting(CPrintInfo* pInfo)
  275. {
  276. // подготовка по умолчанию
  277. return DoPreparePrinting(pInfo);
  278. }
  279.  
  280. void CMFCApplication1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  281. {
  282. // TODO: добавьте дополнительную инициализацию перед печатью
  283. }
  284.  
  285. void CMFCApplication1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  286. {
  287. // TODO: добавьте очистку после печати
  288. }
  289.  
  290. void CMFCApplication1View::OnRButtonUp(UINT /* nFlags */, CPoint point)
  291. {
  292. ClientToScreen(&point);
  293. OnContextMenu(this, point);
  294. }
  295.  
  296. void CMFCApplication1View::OnContextMenu(CWnd* /* pWnd */, CPoint point)
  297. {
  298. #ifndef SHARED_HANDLERS
  299. theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);
  300. #endif
  301. }
  302.  
  303.  
  304. // диагностика CMFCApplication1View
  305.  
  306. #ifdef _DEBUG
  307. void CMFCApplication1View::AssertValid() const
  308. {
  309. CView::AssertValid();
  310. }
  311.  
  312. void CMFCApplication1View::Dump(CDumpContext& dc) const
  313. {
  314. CView::Dump(dc);
  315. }
  316.  
  317. CMFCApplication1Doc* CMFCApplication1View::GetDocument() const // встроена неотлаженная версия
  318. {
  319. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCApplication1Doc)));
  320. return (CMFCApplication1Doc*)m_pDocument;
  321. }
  322. #endif //_DEBUG
  323.  
  324.  
  325. // обработчики сообщений CMFCApplication1View
  326.  
  327.  
  328. int CMFCApplication1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
  329. {
  330.  
  331. if (CView::OnCreate(lpCreateStruct) == -1)
  332. return -1;
  333. rotX = rotY = 30.0;
  334. rotZ = 0.0;
  335. scaleX = scaleY = scaleZ = 1.0;
  336. transX = transY = transZ = 0.0;
  337. alpha_ = 0;
  338. beta_ = 0;
  339. scale_ = 1;
  340. mousex_ = 0;
  341. mousey_ = 0;
  342.  
  343. // TODO: Add your specialized creation code here
  344.  
  345. // Настраиваем формат пикселей для работы с OpenGL:
  346. PIXELFORMATDESCRIPTOR pfd; // структура для описания формата пикселей
  347. memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); // для начала заполняем все значения структуры нулями
  348. // Начинаем заполнение нужных нам значений структуры:
  349. pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); // размер структуры, устанавливаем равным размеру типа PIXELFORMATDESCRIPTOR
  350. pfd.nVersion = 1; // номер версии, для работы с OpenGL ставим 1
  351. pfd.dwFlags = PFD_DRAW_TO_WINDOW | // рисовать в окне
  352. PFD_SUPPORT_OPENGL | // поддержка OpenGL
  353. PFD_DOUBLEBUFFER; // двойная буферизация
  354. pfd.iPixelType = PFD_TYPE_RGBA; // цветовая модель RGBA
  355. pfd.cColorBits = 32; // 32-битовая глубина цвета
  356. pfd.cAlphaBits = 8; // компонента альфа цвета
  357. pfd.cAccumBits = 32; // буфер аккумулятора
  358. pfd.cDepthBits = 32; // буфер глубины (z-буфер)
  359. pfd.cStencilBits = 8; // трафарет
  360. pfd.iLayerType = PFD_MAIN_PLANE; // тип плоскости – основная
  361. m_pdc = GetDC(); // создаем контекст устройства
  362. // Исходя из настройки пикселей и созданного контекста устройства, получаем оптимальный, наиболее совпадающий с требуемым, формат пикселей:
  363. int nPixelFormat = ChoosePixelFormat(m_pdc->m_hDC, &pfd);
  364. if (nPixelFormat == 0)
  365. {
  366. MessageBox(LPCTSTR("Ошибка при выборе формата пикселей"));
  367. return FALSE;
  368. }
  369. BOOL bResult = SetPixelFormat(m_pdc->m_hDC, nPixelFormat, &pfd);
  370. // Устанавливаем полученный формат пикселей:
  371. if (!bResult)
  372. {
  373. MessageBox(LPCTSTR("Ошибка при установке формата пикселей"));
  374. return FALSE;
  375. }
  376. if ((hrc = wglCreateContext(m_pdc->m_hDC)) == NULL) // на основе контекста устройства создаем контекст воспроизведения
  377. return FALSE;
  378. if (wglMakeCurrent(m_pdc->m_hDC, hrc) == FALSE) // делаем его текущим
  379. return FALSE;
  380. return 0;
  381. }
  382.  
  383.  
  384.  
  385. void CMFCApplication1View::OnDestroy()
  386. // функция обработки сообщения “Уничтожение окна”
  387. { // TODO: Add your message handler code here
  388. // Убираем из текущего и удаляем контекст воспроизведения:
  389. if (hrc == ::wglGetCurrentContext()) // запрашиваем текущий контекст воспроизведения
  390. {
  391. wglMakeCurrent(NULL, NULL); // делаем его не текущим
  392. wglDeleteContext(hrc); // удаляем контекст воспроизведения
  393. hrc = NULL;
  394. }
  395. CView::OnDestroy(); // корректное завершение работы
  396. }
  397.  
  398.  
  399.  
  400. void CMFCApplication1View::InitViewport(int x, int y, int width, int height)
  401. {
  402. glViewport(x, y, width, height);
  403. glMatrixMode(GL_PROJECTION);
  404. glLoadIdentity();
  405. glOrtho(-900, 900, -500, 500, -250, 250);
  406. //glFrustum(0.,0.,0.,0.,0.,0.);
  407. //gluPerspective (90.0, width/height, 1.0, 10.0);
  408. //gluLookAt(0., 0., 20., 0., 0., 0., 0., 1., 0.);
  409. glMatrixMode(GL_MODELVIEW);
  410. glLoadIdentity();
  411. }
  412.  
  413.  
  414.  
  415. void CMFCApplication1View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
  416. {
  417. // TODO: добавьте свой код обработчика сообщений или вызов стандартного
  418. if ((nChar == 'Z') || (nChar == 'M'))
  419. {
  420. transY -= 1;
  421. OnDraw(m_pdc);
  422. }
  423. if ((nChar == 'W') || (nChar == 'T'))
  424. {
  425. transY += 1;
  426. OnDraw(m_pdc);
  427. }
  428. if ((nChar == 'A') || (nChar == 'J'))
  429. {
  430. transX -= 1;
  431. OnDraw(m_pdc);
  432. }
  433. if ((nChar == 'D') || (nChar == 'L'))
  434. {
  435. transX += 1;
  436. OnDraw(m_pdc);
  437. }
  438. if (nChar == 'S')
  439. {
  440. rotY += 10;
  441. OnDraw(m_pdc);
  442. }
  443. if (nChar == 'K')
  444. {
  445. rotY -= 10;
  446. OnDraw(m_pdc);
  447. }
  448. if (nChar == '6')
  449. {
  450. if ((scaleX<4.1) && (scaleY<4.1) && (scaleZ<4.1))
  451. {
  452. scaleX = scaleX + 4.1 / 10.;
  453. scaleY = scaleY + 4.1 / 10.;
  454. scaleZ = scaleZ + 4.1 / 10.;
  455. }
  456. OnDraw(m_pdc);
  457. }
  458. if (nChar == '7')
  459. {
  460. if ((scaleX>4.1 / 10.) && (scaleY>4.1 / 10.) && (scaleZ>4.1 / 10.))
  461. {
  462. scaleX = scaleX - 4.1 / 10.;
  463. scaleY = scaleY - 4.1 / 10.;
  464. scaleZ = scaleZ - 4.1 / 10.;
  465. }
  466. OnDraw(m_pdc);
  467. }
  468.  
  469. CView::OnKeyDown(nChar, nRepCnt, nFlags);
  470. }
  471.  
  472.  
  473. void CMFCApplication1View::OnMouseMove(UINT nFlags, CPoint point)
  474. {
  475. // TODO: добавьте свой код обработчика сообщений или вызов стандартного
  476. // вращение сцены:
  477. if (nFlags&MK_LBUTTON)
  478. {
  479. // прибавить переменным alpha_ и beta_ разницу между новыми и старыми положениями мыши
  480. beta_ += point.x - mousex_;
  481. alpha_ += point.y - mousey_;
  482. Invalidate(false);
  483. }
  484. // масштабирование сцены
  485. if (nFlags&MK_RBUTTON)
  486. {
  487. scale_ += (point.x - mousex_)*0.02;
  488. if (scale_<0.1) scale_ = 0.1;
  489. Invalidate(false);
  490. }
  491. // сохраняем положение мыши
  492. mousex_ = point.x;
  493. mousey_ = point.y;
  494.  
  495. CView::OnMouseMove(nFlags, point);
  496. }
  497.  
  498.  
  499.  
  500.  
  501. void CMFCApplication1View::AroundX()
  502. {
  503. // TODO: добавьте свой код обработчика команд
  504. rotX = rotX + 10;
  505. Invalidate();
  506.  
  507. }
  508.  
  509.  
  510. void CMFCApplication1View::AroundY()
  511. {
  512. // TODO: добавьте свой код обработчика команд
  513. rotY = rotY + 10;
  514. Invalidate();
  515. }
  516.  
  517.  
  518. void CMFCApplication1View::AroundZ()
  519. {
  520. // TODO: добавьте свой код обработчика команд
  521. rotZ = rotZ + 10;
  522. Invalidate();
  523. }
  524.  
  525.  
  526. void CMFCApplication1View::TranslationXAdd()
  527. {
  528. // TODO: добавьте свой код обработчика команд
  529. transX = transX + 1;
  530. Invalidate();
  531. }
  532.  
  533.  
  534. void CMFCApplication1View::TranslationYAdd()
  535. {
  536. transY = transY + 1;
  537. Invalidate();
  538.  
  539. // TODO: добавьте свой код обработчика команд
  540. }
  541.  
  542.  
  543. void CMFCApplication1View::TranslationZAdd()
  544. {
  545.  
  546. transZ = transZ + 50.;
  547. Invalidate();
  548.  
  549. // TODO: добавьте свой код обработчика команд
  550. }
  551.  
  552.  
  553. void CMFCApplication1View::TranslationXSub()
  554. {
  555. transX = transX-1;
  556. Invalidate();
  557.  
  558. // TODO: добавьте свой код обработчика команд
  559. }
  560.  
  561.  
  562. void CMFCApplication1View::TranslationYSub()
  563. {
  564. // TODO: добавьте свой код обработчика команд
  565. transY = transY -1.;
  566. Invalidate();
  567.  
  568. }
  569.  
  570.  
  571.  
  572.  
  573. void CMFCApplication1View::ScaleXAdd()
  574. {
  575. // TODO: добавьте свой код обработчика команд
  576. if (scaleX < 4.1)
  577. {
  578. scaleX = scaleX + 4.1 / 10. ;
  579. }
  580. Invalidate();
  581. }
  582.  
  583.  
  584. void CMFCApplication1View::ProportionalScale()
  585. {
  586. if ((scaleX<4.1) && (scaleY<4.1) &&
  587. (scaleZ<4.1))
  588. {
  589. scaleX = scaleX + 4.1 / 10.;
  590. scaleY = scaleY + 4.1 / 10.;
  591. scaleZ = scaleZ + 4.1 / 10.;
  592. }
  593. Invalidate();
  594.  
  595. // TODO: добавьте свой код обработчика команд
  596. }
  597.  
  598.  
  599. void CMFCApplication1View::ProportionalScaleMin()
  600. {
  601. // TODO: добавьте свой код обработчика команд
  602. if ((scaleX > 4.1/ 10.) && (scaleY>4.1/ 10.) &&
  603. (scaleZ >4.1/ 10.))
  604. {
  605. scaleX = scaleX -4.1 / 10.;
  606. scaleY = scaleY -4.1 / 10.;
  607. scaleZ = scaleZ -4.1 / 10.;
  608. }
  609. Invalidate();
  610.  
  611. }
  612.  
  613.  
  614. void CMFCApplication1View::ScaleXPlus()
  615. {
  616. // TODO: добавьте свой код обработчика команд
  617.  
  618. if (scaleY < 4.1)
  619. scaleY = scaleY + 4.1 / 10.;
  620. Invalidate();
  621.  
  622. }
  623.  
  624.  
  625. void CMFCApplication1View::ScaleZPlus()
  626. {
  627. // TODO: добавьте свой код обработчика команд
  628. if (scaleZ < 4.1)
  629. scaleZ = scaleZ + 4.1 / 10.;
  630. Invalidate();
  631. }
  632.  
  633.  
  634. void CMFCApplication1View::ScaleXMin()
  635. {
  636. // TODO: добавьте свой код обработчика команд
  637. if (scaleX < 4.1)
  638. scaleX = scaleX - 4.1 / 10.;
  639. Invalidate();
  640. }
  641.  
  642.  
  643. void CMFCApplication1View::ScaleYMin()
  644. {
  645. // TODO: добавьте свой код обработчика команд
  646. if (scaleX < 4.1)
  647. scaleX = scaleX - 4.1 / 10.;
  648. Invalidate();
  649. }
  650.  
  651.  
  652. void CMFCApplication1View::ScaleZMin()
  653. {
  654. // TODO: добавьте свой код обработчика команд
  655. if (scaleX < 4.1)
  656. scaleX = scaleX - 4.1 / 10.;
  657. Invalidate();
  658. }
  659.  
  660.  
  661. void CMFCApplication1View::TransZMin()
  662. {
  663. transZ = transZ - 50.;
  664. Invalidate();
  665. // TODO: добавьте свой код обработчика команд
  666. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement