// This finds all triangles perpendicular to the input position public List <P3D_Result> FindPerpendicularAll(Vector3 point, float maxDistance) { ClearResults(); if (IsReady == true && maxDistance > 0.0f) { var maxDistanceSqr = maxDistance * maxDistance; BeginSearchDistance(point, maxDistanceSqr); // Go through all potential triangles for (var i = potentials.Count - 1; i >= 0; i--) { var triangle = potentials[i]; var weights = default(Vector3); var distanceSqr = default(float); // See if a perpendicular triangle point can be found if (P3D_Helper.ClosestBarycentric(point, triangle, ref weights, ref distanceSqr) == true) { if (distanceSqr <= maxDistanceSqr) { AddToResults(triangle, weights, Mathf.Sqrt(distanceSqr) / maxDistance); } } } } return(results); }
public List <P3D_Result> FindPerpendicularAll(Vector3 point, float maxDistance) { this.ClearResults(); if (this.IsReady && (maxDistance > 0f)) { float maxDistanceSqr = maxDistance * maxDistance; this.BeginSearchDistance(point, maxDistanceSqr); for (int i = potentials.Count - 1; i >= 0; i--) { P3D_Triangle triangle = potentials[i]; Vector3 weights = new Vector3(); float distanceSqr = 0f; if (P3D_Helper.ClosestBarycentric(point, triangle, ref weights, ref distanceSqr) && (distanceSqr <= maxDistanceSqr)) { this.AddToResults(triangle, weights, Mathf.Sqrt(distanceSqr) / maxDistance); } } } return(results); }
// This finds the nearest triangle perpendicular to the input position public List <P3D_Result> FindPerpendicularNearest(Vector3 point, float maxDistance) { ClearResults(); if (IsReady == true && maxDistance > 0.0f) { var bestDistanceSqr = maxDistance * maxDistance; var bestTriangle = default(P3D_Triangle); var bestWeights = default(Vector3); BeginSearchDistance(point, bestDistanceSqr); // Go through all potential triangles for (var i = potentials.Count - 1; i >= 0; i--) { var triangle = potentials[i]; var weights = default(Vector3); var distanceSqr = default(float); // See if a perpendicular triangle point can be found if (P3D_Helper.ClosestBarycentric(point, triangle, ref weights, ref distanceSqr) == true) { if (distanceSqr <= bestDistanceSqr) { bestDistanceSqr = distanceSqr; bestTriangle = triangle; bestWeights = weights; } } } // Add the best triangle to the results if (bestTriangle != null) { AddToResults(bestTriangle, bestWeights, Mathf.Sqrt(bestDistanceSqr) / maxDistance); } } return(results); }
// This finds the nearest triangles to the input position within maxDistance public P3D_Result FindNearest(Vector3 point, float maxDistance) { ClearResults(); if (IsReady == true && maxDistance > 0.0f) { var bestDistanceSqr = maxDistance * maxDistance; var bestTriangle = default(P3D_Triangle); var bestWeights = default(Vector3); BeginSearchDistance(point, bestDistanceSqr); // Go through all potential triangles for (var i = potentials.Count - 1; i >= 0; i--) { var triangle = potentials[i]; var weights = default(Vector3); var distanceSqr = P3D_Helper.ClosestBarycentric(point, triangle, out weights); if (distanceSqr <= bestDistanceSqr) { bestDistanceSqr = distanceSqr; bestTriangle = triangle; bestWeights = weights; } } // Add the best triangle to the results if (bestTriangle != null) { return(GetResult(bestTriangle, bestWeights, Mathf.Sqrt(bestDistanceSqr) / maxDistance)); } } return(null); }
public P3D_Result FindPerpendicularNearest(Vector3 point, float maxDistance) { this.ClearResults(); if (this.IsReady && (maxDistance > 0f)) { float maxDistanceSqr = maxDistance * maxDistance; P3D_Triangle triangle = null; Vector3 vector2 = new Vector3(); Vector3 weights = vector2; this.BeginSearchDistance(point, maxDistanceSqr); int num2 = potentials.Count - 1; while (true) { if (num2 < 0) { if (triangle == null) { break; } return(this.GetResult(triangle, weights, Mathf.Sqrt(maxDistanceSqr) / maxDistance)); } P3D_Triangle triangle2 = potentials[num2]; vector2 = new Vector3(); Vector3 vector3 = vector2; float distanceSqr = 0f; if (P3D_Helper.ClosestBarycentric(point, triangle2, ref vector3, ref distanceSqr) && (distanceSqr <= maxDistanceSqr)) { maxDistanceSqr = distanceSqr; triangle = triangle2; weights = vector3; } num2--; } } return(null); }