Três pontos de coordenadas para um determinado plano bidimensional, encontrar a área do triângulo
E onda de co-seno pela fórmula função vector de derivação pode ser derivada
s = | (x1y2 - x1y3 - x2y1 + x3y1 + x2y3 - x3y2) / 2 |
Esta fórmula não se lembra da última fórmula, ainda me lembro do bar determinante acima
Aqui é a implementação do código c ++
1 #include <iostream> 2 #include <cmath> 3 usando namespace std; 4 5 struct ponto { 6 duplo x, y; 7 ponto ( duplo x, duplo y) { 8, ponto :: x = x; 9 ponto :: y = y; 10 } 11 }; 12 13 duplo triângulo (ponto a, b ponto, ponto c) { 14 de retorno Fabs ((ax * a - ax * cy - ay * bx + cx * ay + bx * cy - cx * por) / 2,0 ); 15 } 16 17 int main () { 18 ponto A ( 0 , 0 ); 19 alínea b ( 1 , 0 ); 20 alínea c ( 0,5 , 0,5 ); 21 cout << triângulo (a, b, c); 22 retorno 0 ; 23 }
Determinar se um ponto do triângulo
Pensando: Se o ponto do triângulo, o S (ABC) = S (ABP) + S (ACP) + S (BCP)
código de implementação
1 #include <iostream> 2 #include <cmath> 3 usando namespace std; 4 5 struct ponto { 6 duplo x, y; 7 ponto ( duplo x, duplo y) { 8, ponto :: x = x; 9 ponto :: y = y; 10 } 11 }; 12 13 duplo triângulo (ponto a, b ponto, ponto c) { 14 de retorno Fabs ((ax * a - ax * cy - ay * bx + cx * ay + bx * cy - cx * por) / 2,0 ); 15 } 16 17 boleano in_triangle (ponto a, b ponto, ponto C, o ponto P) { 18 duplas s = triângulo (a, b, c); 19 duplo S1 = triângulo (a, b, p); 20 duplo s2 = triângulo (a, c, p); 21 duplo s3 = triângulo (b, c, p); 22 de retorno s == (s1 + s2 + s3)? verdade : falsa ; 23 } 24 25 int main () { 26 ponto A ( 0 , 0 ); 27 alínea b (1 , 0 ); 28 alínea c ( 0,5 , 0,5 ); 29 ponto de p ( 1 , 1 ); 30 cout << in_triangle (a, b, c, p); 31 de retorno 0 ; 32 }