static public bool IsIntersecting(this PlaneSpace item, Plane plane, out Plane2 output) { Ray ray; if (item.plane.IsIntersecting(plane, out ray)) { output = Plane2Extensions.CreatePointsAndInsidePoint( item.ProjectPoint(ray.origin), item.ProjectPoint(ray.origin + ray.direction), item.ProjectPoint(ray.origin - plane.normal) ); return(true); } output = default(Plane2); return(false); }
static public void CalculateUVs(this Mesh item) { Vector2[] uvs = new Vector2[item.vertexCount]; for (int i = 0; i < item.vertexCount; i++) { Vector3 normal = item.normals[i]; Vector3 position = item.vertices[i]; PlaneSpace place = new PlaneSpace(PlaneExtensions.CreateNormalAndDistance(normal, 0.0f)); uvs[i] = place.ProjectPoint(position); } item.uv = uvs; }
static public Triangle2 ProjectTriangle(this PlaneSpace item, Triangle3 triangle) { return(new Triangle2(item.ProjectPoint(triangle.v0), item.ProjectPoint(triangle.v1), item.ProjectPoint(triangle.v2))); }
static public LineSegment2 ProjectLineSegment(this PlaneSpace item, LineSegment3 line_segment) { return(new LineSegment2(item.ProjectPoint(line_segment.v0), item.ProjectPoint(line_segment.v1))); }
static public Vector2 ProjectVector(this PlaneSpace item, Vector3 vector) { return(item.ProjectPoint(vector + item.origin)); }
static public IEnumerable <Vector2> ProjectPoints(this PlaneSpace item, IEnumerable <Vector3> points) { return(points.Convert(p => item.ProjectPoint(p))); }