게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
각도 없이 회전하는 코드 왜 안돌아가는지 확인 가능하신 분 계시나요...
게시물ID : programmer_13951짧은주소 복사하기
작성자 : 다람쥐같이
추천 : 0
조회수 : 567회
댓글수 : 1개
등록시간 : 2015/10/18 16:03:46

#include <iostream>

#include <string>

#include <vector>

#include <math.h>

class Rotator {

   public:

   int c, d;

   double e, f;

   int p;

   double r, l;

   double A, B;

   //상대좌표, 기준 객체 중심점을 0, 0이라 하고 클릭된 지점

   void set(int c, int d, int x, int y){

       this->c = c;

       this->d = d;

       r = root((double)(c*c + d*d));

       double R = root(x*x + y*y);

       e = x*r/R;

       f = y*r/R;

       l = root((c-e)*(c-e)+(d-f)*(d-f));

       int k = d*e-c*f;

       if(k > 0) p = 1;

       else if(k == 0) p = 0;

       else p = -1;

       A = 1 - l*l/2/r/r;

       B = p*l/r/r*root(r*r-l*l/4);

   }

   //inline

   double root(double x){

       //다른 라이브러리 참조를 래핑한 것

       return sqrt(x);

   }

   void get(double a, double b, double& x, double& y){

       x = A*a + B*b;

       y = A*b - B*a;

   }

};


int main()

{

   Rotator test;

   test.set(1, 0, 1, 1);

   double a = -1, b = 1;

   double x, y;

   test.get(a, b, x, y);

   //std::cout << x << " " << y << std::endl;

   //std::cout << test.r;

}



마우스가 클릭된 지점을 향하여 모든 점들을 같은 각도만큼 회전시키는 건데, 

삼각형 합동을 이용한 거거든요. 

각도값을 안구하고 하려는데... 확실히 되는 점이 있는데, 안되는 점들이 있어요... 

제가 지금 설명할 시간이 없어서 코드에 주석은 못달았는데 

저 코드를 봐달라기 보다는... 

혹시 오픈소스 중에 각도 안구하고 주어진 벡터를 이용해서(삼각형 합동으로) 회전하는 함수 없나요? 속시원하게 풀어버리고 싶은데... 


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호