<b></b> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">#include <iostream></span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">#include <string></span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">#include <vector></span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">#include <math.h></span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">class Rotator {</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> public:</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> int c, d;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double e, f;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> int p;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double r, l;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double A, B;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> //상대좌표, 기준 객체 중심점을 0, 0이라 하고 클릭된 지점</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> void set(int c, int d, int x, int y){</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> this->c = c;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> this->d = d;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> r = root((double)(c*c + d*d));</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double R = root(x*x + y*y);</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> e = x*r/R;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> f = y*r/R;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> l = root((c-e)*(c-e)+(d-f)*(d-f));</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> int k = d*e-c*f;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> if(k > 0) p = 1;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> else if(k == 0) p = 0;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> else p = -1;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> A = 1 - l*l/2/r/r;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> B = p*l/r/r*root(r*r-l*l/4);</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> }</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> //inline</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double root(double x){</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> //다른 라이브러리 참조를 래핑한 것</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> return sqrt(x);</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> }</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> void get(double a, double b, double& x, double& y){</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> x = A*a + B*b;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> y = A*b - B*a;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> }</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">};</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">int main()</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">{</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> Rotator test;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> test.set(1, 0, 1, 1);</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double a = -1, b = 1;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> double x, y;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> test.get(a, b, x, y);</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> //std::cout << x << " " << y << std::endl;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;"> //std::cout << test.r;</span></p> <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:14.666666666666666px;font-family:Arial;background-color:transparent;font-weight:400;vertical-align:baseline;white-space:pre-wrap;">}</span></p><br><div><b><br></b></div> <div><b>마우스가 클릭된 지점을 향하여 모든 점들을 같은 각도만큼 회전시키는 건데, </b></div> <div><b><br></b></div> <div><b>삼각형 합동을 이용한 거거든요. </b></div> <div><b><br></b></div> <div><b>각도값을 안구하고 하려는데... 확실히 되는 점이 있는데, 안되는 점들이 있어요... </b></div> <div><b><br></b></div> <div><b>제가 지금 설명할 시간이 없어서 코드에 주석은 못달았는데 </b></div> <div><b><br></b></div> <div><b>저 코드를 봐달라기 보다는... </b></div> <div><b><br></b></div> <div><b>혹시 오픈소스 중에 각도 안구하고 주어진 벡터를 이용해서(삼각형 합동으로) 회전하는 함수 없나요? 속시원하게 풀어버리고 싶은데... </b></div> <div><b><br></b></div> <div><b><br></b></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.