Вот мой метод, который я набросал за минуту:

Вам нужно пройтись по трем пунктам, чтобы выяснить, какиеточка образует 90 с двумя другими точками, так как это противоположно 4-й точке.Эта точка называется P на диаграмме, а A и B являются двумя другими точками.
Отсюда мы можем просто добавить A и B и минус P, чтобы получить нашу 4-ую точку.
Здесьэто примерный код:
public Vector3 Find4th(Vector3 a, Vector3 b, Vector3 c) {
Vector3 point, cornerA, cornerB;
Vector3[] points = new Vector3[] {a, b, c};
float angleDelta = 180;
int pointIndex = -1;
//find point with angle closest to 90 degrees
for (int i = 0; i < 3; ++i) {
point = points[i];
cornerA = points[i != 0 ? i-1 : 2];
cornerB = points[i != 2 ? i+1 : 0];
Vector3 lineA = cornerA - point;
Vector3 lineB = cornerB - point;
float ang = Mathf.Abs(Vector3.Angle(lineA, lineB)-90);
if (ang < angleDelta) {
angleDelta = ang;
pointIndex = i;
}
}
point = points[pointIndex];
cornerA = points[pointIndex != 0 ? pointIndex-1 : 2];
cornerB = points[pointIndex != 2 ? pointIndex+1 : 0];
return cornerA + cornerB - point;
}
Мой тестовый скрипт https://pastebin.com/mKhNq9ZD дает ожидаемые результаты для тестов, которые я провел.