計算缺失U/V屬性的頂點的barycentric coordinates,並使用這些座標來外推缺失的屬性(U/V或任何其他實際值)。
下面是一個完整的推導和溶液額外面頂點與P
位置和U/V座標T
:
P1 = (x1, y1, z1), T1 = (u1, v1)
P2 = (x2, y2, z2), T2 = (u2, v2)
P3 = (x3, y3, z3), T3 = (u3, v3)
P = (x , y , z), T = (u , v) = ?
上支撐所述三角形(P1
,P2
,P3
)(該平面上的點P
從而對整個面)具有重心座標l1
,l2
,l3
:
P = l1 P1 + l2 P2 + l3 P3
with l1 + l2 + l3 = 1
這可以被改寫爲:
P - P1 = (l1 - 1) P1 + l2 P2 + l3 P3
= -(l2 + l3) P1 + l2 P2 + l3 P3
= l2 (P2 - P1) + l3 (P3 - P1)
with l1 = 1 - l2 - l3
投影矢量V = P - P1
到矢量V21 = P2 - P1
和V31 = P3 - P1
給出:
< V, V21 > = l2 < V21, V21 > + l3 < V31, V21 >
< V, V31 > = l2 < V21, V31 > + l3 < V31, V31 >
其中< V1, V2 >
是3D的點積矢量V1
和V2
。
所以(l1
,l2
,l3
)可以P
通過求解線性系統找到:
G L = (< V21, V21 > < V31, V21 >) (l2) = (< V, V21 >) = D
(< V21, V31 > < V31, V31 >) (l3) (< V, V31 >)
L = (l2) = G^-1 D
(l3)
and l1 = 1 - l2 - l3
這可以明確地解決:
d = < V21, V21 > < V31, V31 > - < V21, V31 >^2
l1 = 1 - l2 - l3
l2 = (< V31, V31 > < V, V21 > - < V21, V31 > < V, V31 >)/d
l3 = (< V21, V21 > < V, V31 > - < V21, V31 > < V, V21 >)/d
注意,由於位置P
附加頂點在三角形之外(P1
,P2
,P3
),不等式l1, l2, l3 >= 0
不一定會持有。
最後計算外推的U/V座標的附加頂點的T
:
T = l1 T1 + l2 T2 + l3 T3