浏览代码

Fixed bug caused by a copy/paste error in Face3::get_closest_point_to

s * edge0 = -d / a * edge0 = -edge0⋅v0 / (edge0⋅edge0) * edge0 = vector projection of -v0 onto edge0

By incorrectly using -e/c instead of -d/a, Face3::get_closest_point_to was returning the wrong point in certain cases.  Specifically, I noticed it returning vertex[0] when it should have been returning vertex[1].

(cherry picked from commit 8abd64dcbbe80e20b23fd526437bd068289f365c)
stoofin 5 年之前
父节点
当前提交
577b6d1196
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      core/math/face3.cpp

+ 1 - 1
core/math/face3.cpp

@@ -393,7 +393,7 @@ Vector3 Face3::get_closest_point_to(const Vector3 &p_point) const {
 				s = CLAMP(numer / denom, 0.f, 1.f);
 				s = CLAMP(numer / denom, 0.f, 1.f);
 				t = 1 - s;
 				t = 1 - s;
 			} else {
 			} else {
-				s = CLAMP(-e / c, 0.f, 1.f);
+				s = CLAMP(-d / a, 0.f, 1.f);
 				t = 0.f;
 				t = 0.f;
 			}
 			}
 		} else {
 		} else {