이론 관련/사진 광학 관련

삼각측량 소스코드...

구차니 2015. 10. 19. 12:30

대충 위키보고 짜고 성능은 나중에 생각하지 머..

국문위키에서 공식대로 따라가야 하는데

순서를 바꾸거나 생략할 수 있는 묘안이 없으려나?


$ ./a.out

alpha : 43.2

beta : 78.1

dist : 10

MC : 8.27144 


$ cat tri.c

#include <iostream>
#include <math.h>

using namespace std;

const double PI = 3.1415926535;

double SIN(double val)
{
        return sin(PI * val / 180.0);
}

double COS(double val)
{
        return cos(PI * val / 180.0);
}

int main(int argc, char** argv)
{
double alpha; // servo angle (left)
double beta; // servo angle (right)
double gamma = 0.0;
double AB; // distance of eye(10cm)
double AC = 0.0;
double BC = 0.0;
double RC = 0.0;
double MR = 0.0;
double MC = 0.0; // result

//alpha = 54;
//beta = 54;
//AB = 10;//

cout << "alpha : ";
cin >> alpha;
cout << "beta : ";
cin >> beta;
cout << "dist : ";
cin >> AB;

gamma = 180 - (alpha + beta);
AC = AB * SIN(beta) / SIN(gamma);
BC = AB * SIN(beta) / SIN(gamma);
RC =  AC * SIN(alpha);

MR = (AB / 2) - (BC * COS(beta));
MC = sqrt((MR * MR) + (RC * RC));

cout << "MC : " << MC << endl;
}


[링크 : https://en.wikipedia.org/wiki/Triangulation]

[링크 : http://linux.die.net/man/3/sin] 항상 그렇지만.. 라디안 값

[링크 : http://enter.tistory.com/60]