public float IntersectsAt(Line l)
    {
        Coords c = l.A - this.A;
        float  t = HolisticMath.Dot(Coords.Perp(l.v), c) / HolisticMath.Dot(Coords.Perp(l.v), v);

        return(t);
    }
Exemplo n.º 2
0
    public float IntersectsAt(Line l)
    {
        var normal = HolisticMath.GetNormal(HolisticMath.Cross(u, v));
        var t      = HolisticMath.Dot(-normal, l.A - B) / HolisticMath.Dot(normal, l.v);

        return(t);
    }
Exemplo n.º 3
0
    public Coords Reflect(Coords normal)
    {
        Coords normalNormalized = normal.Normalize();
        Coords vNormalized      = v.Normalize();
        var    r = vNormalized - ((2 * HolisticMath.Dot(vNormalized, normalNormalized)) * normalNormalized);

        return(r);
    }
Exemplo n.º 4
0
    public Coords Reflection(Coords hitVector)
    {
        Coords hitNormal = Coords.GetNormal(hitVector);
        Coords normalV   = Coords.GetNormal(this.v);
        float  dotTemp   = HolisticMath.Dot(normalV, hitNormal);

        return(new Coords((normalV - (hitNormal * (2 * dotTemp))).ToVector()));
    }
Exemplo n.º 5
0
    public float IntersectsAt(Plane p)
    {
        var normal = HolisticMath.GetNormal(HolisticMath.Cross(p.u, p.v));

        if (HolisticMath.Dot(normal, p.v) == 0)
        {
            return(float.NaN);
        }
        var t = HolisticMath.Dot(-normal, p.A - A) / HolisticMath.Dot(normal, v);

        return(t);
    }
Exemplo n.º 6
0
    public float IntersectsAt(Plane p)
    {
        Coords normal = HolisticMath.Cross(p.u, p.v);

        if (HolisticMath.Dot(normal, v) == 0)
        {
            return(float.NaN);
        }
        float t = HolisticMath.Dot(normal, p.A - A) / HolisticMath.Dot(normal, v);

        return(t);
    }
Exemplo n.º 7
0
    public Coords Reflect(Coords normal)
    {
        Coords norm  = normal.GetNormal();
        Coords vnorm = v.GetNormal();

        float d = HolisticMath.Dot(norm, vnorm);

        float  vn2 = d * 2;
        Coords r   = vnorm - norm * vn2;

        return(r);
    }
Exemplo n.º 8
0
    public float IntersectsAt(Plane plane)
    {
        Coords normal = HolisticMath.CrossProduct(plane.u, plane.v);

        if (HolisticMath.Dot(normal, V) == 0)
        {
            return(float.NaN);
        }

        float t = HolisticMath.Dot(normal, plane.A - A) / HolisticMath.Dot(normal, V);

        return(t);
    }
Exemplo n.º 9
0
    public float IntersectsAt(Plane p, out bool found)
    {
        found = false;
        var normal = HolisticMath.GetNormal(HolisticMath.Cross(p.u, p.v));

        if (HolisticMath.Dot(normal, p.v) == 0)
        {
            found = true;
            return(float.NaN);
        }
        var t = HolisticMath.Dot(-normal, p.A - A) / HolisticMath.Dot(normal, v);

        return(t);
    }
Exemplo n.º 10
0
    public float IntersectsAt(Line l)
    {
        if (HolisticMath.Dot(Coords.Perp(l.v), v) == 0)
        {
            return(float.NaN);
        }
        Coords c = l.A - this.A;
        float  t = HolisticMath.Dot(Coords.Perp(l.v), c) / HolisticMath.Dot(Coords.Perp(l.v), v);

        if ((t < 0 || t > 1) && type == LINETYPE.SEGMENT)
        {
            return(float.NaN);
        }
        return(t);
    }
Exemplo n.º 11
0
    public float IntersectsAt(Line l)
    {
        if (HolisticMath.Dot(Coords.Perp(l.v), v) == 0)
        {
            return(float.NaN);
        }
        var c = l.a - a;
        var t = HolisticMath.Dot(Coords.Perp(l.v), c) / HolisticMath.Dot(Coords.Perp(l.v), v);

        if ((t < 0 || t > 1) && type == LineType.SEGMENT)
        {
            return(float.NaN);
        }
        return(t);
    }
Exemplo n.º 12
0
    public Coords Reflect(Coords normal)
    {
        Coords norm  = normal.Normalize();
        Coords vnorm = v.Normalize();

        float d = HolisticMath.Dot(norm, vnorm);

        if (d == 0)
        {
            return(v);
        }

        float  vn2 = d * 2;
        Coords r   = vnorm - norm * vn2;

        return(r);
    }
Exemplo n.º 13
0
    public Coords Reflect(Coords normal)
    {
        Coords norm  = normal.GetNormal();
        Coords vNorm = V.GetNormal();

        float d = HolisticMath.Dot(norm, vNorm);

        if (d == 0) //d will be zero if tryng to reflect against parallel line or wall therefore won't reflect
        {
            return(V);
        }

        float  vn2 = d * 2;
        Coords reflectionVector = vNorm - norm * vn2;

        return(reflectionVector);
    }
Exemplo n.º 14
0
    public float IntersectsAt(Line L2)
    {
        if (HolisticMath.Dot(Coords.Perp(L2.V), V) == 0)
        {
            return(float.NaN); // lines are parallel!
        }

        Coords c = L2.A - this.A;
        float  t = HolisticMath.Dot(Coords.Perp(L2.V), c) / HolisticMath.Dot(Coords.Perp(L2.V), V);

        if ((t < 0 || t > 1) && type == LineType.Segment)
        {
            return(float.NaN);
        }

        return(t);
    }