Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. // ConsoleApplication1.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <cstdio>
  7. #include <cmath>
  8.  
  9. using namespace std;
  10. using namespace System;
  11. using namespace System::Drawing;
  12.  
  13.  
  14. int main()
  15. {
  16.     Bitmap ^bmp, ^bmp2;
  17.     bmp = gcnew Bitmap("D:\\Polar.bmp", true);
  18.     int wys, szer;
  19.     wys=bmp->Height;
  20.     szer=bmp->Width;
  21.  
  22.     bmp2 = gcnew Bitmap(szer, wys); //(szerokość, wysokość)
  23.  
  24.     // --- ROTACJA ---
  25.  
  26.     double kat;
  27.     cout << "Podaj kat rotacji" << endl;
  28.     cin >> kat;
  29.     kat*=3.141592/180;
  30.    
  31.     double cc=cos(kat);
  32.     double ss=sin(kat);
  33.  
  34.     Color Px;
  35.     int kx, kz, nx, nz;
  36.     double w2, s2;
  37.    
  38.     w2=(double)wys/2.0; //przesuwamy punkt rotacji na środek obrazka
  39.     s2=(double)szer/2.0;
  40.  
  41.     for (kz = 0; kz < wys; kz++) {
  42.         for (kx = 0; kx < szer; kx++) {
  43.             Px=Color::FromArgb(255,255,255); //białe rogi
  44.             bmp2->SetPixel(kx,kz,Px);
  45.         }
  46.     }
  47.  
  48.     for (kz = 0; kz < wys; kz++) {
  49.         for (kx = 0; kx < szer; kx++) {
  50.             //macierz odwrotna
  51.             nx=(int)(s2 + (kx-s2)*cc + (kz-w2)*ss); //zaokrąglamy i przesuwamy o połowę szerokości
  52.             nz=(int)(w2 - (kx-s2)*ss + (kz-w2)*cc); //zaokrąglamy i przesuwamy o połowę wysokości
  53.  
  54.             //teraz sprawdzamy, czy nasze współrzędne zawierają się w obrazku (nie mogą być poza)
  55.             if((nx>=0) && (nx<szer) && (nz>=0) && (nz<wys))
  56.                 bmp2->SetPixel(kx,kz,bmp->GetPixel(nx,nz)); //współrzędna w starym obrazku->na postawie nowego obrazka
  57.         }
  58.     }
  59.  
  60.  
  61.     cout << "wys = " << wys << " szer = " << szer << endl;
  62.     bmp2->Save("D:\\new_Polar.png");
  63.     system("PAUSE");
  64.    
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement