1 |
gezelter |
3640 |
vert0 = {x0, y0, z0} |
2 |
|
|
vert1 = {x1, y1, z1} |
3 |
|
|
vert2 = {x2, y2, z2} |
4 |
|
|
|
5 |
|
|
centroid = (vert0 + vert1 + vert2) / 3 |
6 |
|
|
a = vert0 - vert1 |
7 |
|
|
b = vert0 - vert2 |
8 |
|
|
c = vert1 - vert2 |
9 |
|
|
|
10 |
|
|
u0 = -a |
11 |
|
|
v0 = centroid - vert0 |
12 |
|
|
s0 = Sqrt[Cross[u0,v0] . Cross[u0,v0]] / 2 |
13 |
|
|
|
14 |
|
|
u1 = -c |
15 |
|
|
v1 = centroid - vert1 |
16 |
|
|
s1 = Sqrt[Cross[u1,v1] . Cross[u1,v1]] / 2 |
17 |
|
|
|
18 |
|
|
u2 = b |
19 |
|
|
v2 = centroid - vert2 |
20 |
|
|
s2 = Sqrt[Cross[u2,v2] . Cross[u2,v2]] / 2 |
21 |
|
|
|
22 |
|
|
|
23 |
|
|
sc0 = (centroid + vert1 + vert0) / 3 |
24 |
|
|
dr0 = centroid - sc0 |
25 |
|
|
l0 = 1 / (dr0.dr0) |
26 |
|
|
|
27 |
|
|
G0 = (IdentityMatrix[3] + Outer[Times, dr0, dr0]*l0)*Sqrt[l0]*s0*8/(Pi*eta) |
28 |
|
|
|
29 |
|
|
sc1 = (centroid + vert1 + vert2) / 3 |
30 |
|
|
dr1 = centroid - sc1 |
31 |
|
|
l1 = 1 / (dr1.dr1) |
32 |
|
|
|
33 |
|
|
G1 = (IdentityMatrix[3] + Outer[Times, dr1, dr1]*l1)*Sqrt[l1]*s1*8/(Pi*eta) |
34 |
|
|
|
35 |
|
|
sc2 = (centroid + vert2 + vert0) / 3 |
36 |
|
|
dr2 = centroid - sc2 |
37 |
|
|
l2 = 1 / (dr2.dr2) |
38 |
|
|
|
39 |
|
|
G2 = (IdentityMatrix[3] + Outer[Times, dr2, dr2]*l2)*Sqrt[l2]*s2*8/(Pi*eta) |
40 |
|
|
|
41 |
|
|
|
42 |
|
|
Hmat = G0 + G1 + G2 |
43 |
|
|
|
44 |
|
|
Xi = Inverse[Hmat] |