参照文献
https://math.stackexchange.com/questions/544946/determine-if-projection-of-3d-point-onto-plane-is-within-a-triangle
https://pdfs.semanticscholar.org/0141/b1416bb749bb5ba94210a30d70f0824760a4.pdf
这里不同的是, 这里的法向量不是三角形的法向量, 而是给定点上的法向量.
先说他这里的求法,
P
′
P'
P′的barycentric coordinates的求法
b
[
0
]
=
A
Δ
P
′
C
B
/
A
Δ
A
B
C
b[0] = A_{\Delta P'CB} / A_{\Delta ABC}
b[0]=AΔP′CB/AΔABC
b
[
1
]
=
A
Δ
A
P
′
C
/
A
Δ
A
B
C
b[1] = A_{\Delta AP'C} / A_{\Delta ABC}
b[1]=AΔAP′C/AΔABC
b
[
2
]
=
A
Δ
A
B
P
′
/
A
Δ
A
B
C
b[2] = A_{\Delta ABP'} / A_{\Delta ABC}
b[2]=AΔABP′/AΔABC
然后 A Δ P ′ C B , A Δ A P ′ C , A Δ A B P ′ A_{\Delta P'CB},A_{\Delta AP'C},A_{\Delta ABP'} AΔP′CB,AΔAP′C,AΔABP′的求法是算 A Δ P C B , A Δ A P C , A Δ A B P A_{\Delta PCB},A_{\Delta APC},A_{\Delta ABP} AΔPCB,AΔAPC,AΔABP的投影, 就是他们的面积乘以他们的法向量与 Δ A B C \Delta ABC ΔABC法向量的cosine
如果P’是P沿P的法向量 n ⃗ \vec n n与 Δ A B C \Delta ABC ΔABC所在平面的交点, 那么就是我们这里的问题
求法类似,
b
[
0
]
=
p
r
o
j
(
A
Δ
P
C
B
)
/
p
r
o
j
(
A
Δ
A
B
C
)
b[0] = proj(A_{\Delta PCB}) / proj(A_{\Delta ABC})
b[0]=proj(AΔPCB)/proj(AΔABC)
b
[
1
]
=
p
r
o
j
(
A
Δ
A
P
C
)
/
p
r
o
j
(
A
Δ
A
B
C
)
b[1] = proj(A_{\Delta APC}) / proj(A_{\Delta ABC})
b[1]=proj(AΔAPC)/proj(AΔABC)
b
[
2
]
=
p
r
o
j
(
A
Δ
A
B
P
)
/
p
r
o
j
(
A
Δ
A
B
C
)
b[2] = proj(A_{\Delta ABP}) / proj(A_{\Delta ABC})
b[2]=proj(AΔABP)/proj(AΔABC)
其中 proj是三角形在垂直于
n
⃗
\vec n
n平面上的投影