Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 static public Triangle2 ProjectTriangle(this PlaneSpace item, Triangle3 triangle)
 {
     return(new Triangle2(item.ProjectPoint(triangle.v0), item.ProjectPoint(triangle.v1), item.ProjectPoint(triangle.v2)));
 }
Esempio n. 4
0
 static public LineSegment2 ProjectLineSegment(this PlaneSpace item, LineSegment3 line_segment)
 {
     return(new LineSegment2(item.ProjectPoint(line_segment.v0), item.ProjectPoint(line_segment.v1)));
 }
Esempio n. 5
0
 static public Vector2 ProjectVector(this PlaneSpace item, Vector3 vector)
 {
     return(item.ProjectPoint(vector + item.origin));
 }
Esempio n. 6
0
 static public IEnumerable <Vector2> ProjectPoints(this PlaneSpace item, IEnumerable <Vector3> points)
 {
     return(points.Convert(p => item.ProjectPoint(p)));
 }