Cześć, wie ktoś jak policzyć pole dość sporej figury bo powstałej z 676 punktów x,y,z.
0 0 -4
0 0.251327 -3.49052
0 0.502655 0.837392
0 0.753982 12.4593
...
...
i tak dalej
Słyszałem że można jakoś wykorzystać wzór na odległość na odległość między dwoma punktami, żeby policzyć pole trójkątów z których składa się ta figura, no ale wynik otrzymuje zły.
d = sqrt(pow((x2-x1),2)+pow((y2-y1),2)+pow((z2-z1),2))
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
ifstream plik("wspolrzedne.txt");
float wspl=0,bok=0,a=0,b=0,p=0,p1=0,P,suma=0;
float x[676],y[676],z[676],xyz[2028];
int i=0,k;
cout << setprecision(6);
while(plik>>wspl)
{
xyz[i]=wspl;
i++;
}
for(i=0;i<2028;i+=3)
{
x[i]=xyz[i];
y[i]=xyz[i+1];
z[i]=xyz[i+2];
//cout << x[i] << " " << y[i] << " " << z[i] << endl;
}
for(i=1,k=1;i<1352;i+=2,k++)
{
bok= sqrt(pow((x[i]-x[i-1]),2)+pow((y[i]-y[i-1]),2)+pow((z[i]-z[i-1]),2));
if(k==1)a = bok;
if(k==2)
{ k=0;
b = bok;
P =((1.0)/(2.0))*a*b;
suma +=P;
}
}
cout << suma;
return 0;
}
próbowałem wzorem Herona, wzorem na trójkąt prostokątny, nic nie pomaga, chyba przez to że nie wszystkie odległości tworzą trójkąt. Ma ktoś pomysł jak policzyć to pole?