2015-04-19 3 views
2

Я пытаюсь применить теорему Гаусса-Бонне к моему приложению Open C++ C++ и вычислить значение внутреннего угла в вершине Vi в соседнем треугольнике Fi в моей сетке.Расчет угла/кривизны?

Я сделал некоторые поиски, прежде чем сделать этот пост, и я знаю, что сделать это для 2D-модели, можно использовать функцию ниже, чтобы получить углы:

void angles(double points[][2], double angles[], int npoints){ 
for(int i = 0; i < npoints; i++){ 
    int last = (i - 1 + npoints) % npoints; 
    int next = (i + 1) % npoints; 
    double x1 = points[i][0] - points[last][0]; 
    double y1 = points[i][1] - points[last][1]; 
    double x2 = points[next][0] - points[i][0]; 
    double y2 = points[next][1] - points[i][1]; 
    double theta1 = atan2(y1, x1)*180/3.1415926358979323; 
    double theta2 = atan2(y2, x2)*180/3.1415926358979323; 
    angles[i] = (180 + theta1 - theta2 + 360); 
    while(angles[i]>360)angles[i]-=360; 
} } 

Но как я могу найти углы с вершинами 3D-сетки (x, y и z)?

ответ

0

Аналогичная концепция в 3D называется Гауссова кривизна. Ситуация намного сложнее, чем 2D, и нет единого хорошего способа вычисления или оценки гауссовой кривизны для сетки. Есть survey paper, который может дать вам некоторые идеи.