-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFace.cpp
More file actions
53 lines (42 loc) · 1.12 KB
/
Face.cpp
File metadata and controls
53 lines (42 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* Face.cpp
*
* Created on: Sep 16, 2012
* Author: prathamesh
*/
#include "Face.h"
Face::Face()
{
}
Face::Face(Vertex *vertex1, Vertex *vertex2, Vertex *vertex3)
{
v1 = vertex1;
v2 = vertex2;
v3 = vertex3;
}
Face::Face(Vertex *vertex1, Vertex *vertex2, Vertex *vertex3, double *norm)
{
v1 = vertex1;
v2 = vertex2;
v3 = vertex3;
normal[0] = norm[0];
normal[1] = norm[1];
normal[2] = norm[2];
faceArea=computeArea();
}
Face::~Face()
{
}
void Face::computeLengths(void)
{
edgeLength[0] = sqrt((v1->x - v2->x)*(v1->x - v2->x) + (v1->y - v2->y)*(v1->y - v2->y) + (v1->z - v2->z)*(v1->z - v2->z));
edgeLength[1] = sqrt((v2->x - v3->x)*(v2->x - v3->x) + (v2->y - v3->y)*(v2->y - v3->y) + (v2->z - v3->z)*(v2->z - v3->z));
edgeLength[2] = sqrt((v3->x - v1->x)*(v3->x - v1->x) + (v3->y - v1->y)*(v3->y - v1->y) + (v3->z - v1->z)*(v3->z - v1->z));
semiperimeter = (edgeLength[0]+ edgeLength[1]+ edgeLength[2])/2;
}
double Face::computeArea(void)
{
computeLengths();
faceArea = sqrt(semiperimeter*(semiperimeter-edgeLength[0])*(semiperimeter-edgeLength[1])*(semiperimeter-edgeLength[2]));
return faceArea;
}