Skip to content

Instantly share code, notes, and snippets.

@iamandrewluca
Created February 20, 2016 12:58
Show Gist options
  • Save iamandrewluca/5ed59ef06a77ba750b53 to your computer and use it in GitHub Desktop.
Save iamandrewluca/5ed59ef06a77ba750b53 to your computer and use it in GitHub Desktop.
Rotirea unui patrat fata de un punct
#include <iostream>
#define PI 3.14
struct Punct
{
float x;
float y;
};
int main(int argc, char const *argv[])
{
float unghiRotire = 75;
float unghiRotireRadian = unghiRotire * PI / 180;
float laturaPatrat = 250;
Punct centruPatrat; // citit de la tastatura
Punct colturiPatrat[4]; // vor fi calculate
Punct punctulFix(320,240);
// citire centru patrat
std::cin >> centruPatrat.x >> centruPatrat.y;
// calculare colturi
colturiPatrat[0].x = colturiPatrat[3].x = centruPatrat.x - laturaPatrat / 2;
colturiPatrat[1].x = colturiPatrat[2].x = centruPatrat.x + laturaPatrat / 2;
colturiPatrat[0].y = colturiPatrat[1].y = centruPatrat.y - laturaPatrat / 2;
colturiPatrat[2].y = colturiPatrat[3].y = centruPatrat.y + laturaPatrat / 2;
// schimbam pozitia colturilor cu 75 grade fata de punctul fix
for (int i = 0; i < 4; ++i)
{
float x = colturiPatrat[i].x;
float y = colturiPatrat[i].y;
colturiPatrat[i].x = x * cos(unghiRotireRadian) - y * sin(unghiRotireRadian)
+ punctulFix.x - punctulFix.x * cos(unghiRotireRadian)
+ punctulFix.y * sin(unghiRotireRadian);
colturiPatrat[i].y = x * sin(unghiRotireRadian) + y * cos(unghiRotireRadian)
+ punctulFix.y - punctulFix.x * sin(unghiRotireRadian)
- punctulFix.y * cos(unghiRotireRadian);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment