Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication1.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- using namespace System;
- using namespace System::Drawing;
- int main()
- {
- Bitmap ^bmp, ^bmp2;
- bmp = gcnew Bitmap("D:\\Polar.bmp", true);
- int wys, szer;
- wys=bmp->Height;
- szer=bmp->Width;
- bmp2 = gcnew Bitmap(szer, wys); //(szerokość, wysokość)
- // --- ROTACJA ---
- double kat;
- cout << "Podaj kat rotacji" << endl;
- cin >> kat;
- kat*=3.141592/180;
- double cc=cos(kat);
- double ss=sin(kat);
- Color Px;
- int kx, kz, nx, nz;
- double w2, s2;
- w2=(double)wys/2.0; //przesuwamy punkt rotacji na środek obrazka
- s2=(double)szer/2.0;
- for (kz = 0; kz < wys; kz++) {
- for (kx = 0; kx < szer; kx++) {
- Px=Color::FromArgb(255,255,255); //białe rogi
- bmp2->SetPixel(kx,kz,Px);
- }
- }
- for (kz = 0; kz < wys; kz++) {
- for (kx = 0; kx < szer; kx++) {
- //macierz odwrotna
- nx=(int)(s2 + (kx-s2)*cc + (kz-w2)*ss); //zaokrąglamy i przesuwamy o połowę szerokości
- nz=(int)(w2 - (kx-s2)*ss + (kz-w2)*cc); //zaokrąglamy i przesuwamy o połowę wysokości
- //teraz sprawdzamy, czy nasze współrzędne zawierają się w obrazku (nie mogą być poza)
- if((nx>=0) && (nx<szer) && (nz>=0) && (nz<wys))
- bmp2->SetPixel(kx,kz,bmp->GetPixel(nx,nz)); //współrzędna w starym obrazku->na postawie nowego obrazka
- }
- }
- cout << "wys = " << wys << " szer = " << szer << endl;
- bmp2->Save("D:\\new_Polar.png");
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement