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); }
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); }
public Coords Reflect(Coords normal) { Coords normalNormalized = normal.Normalize(); Coords vNormalized = v.Normalize(); var r = vNormalized - ((2 * HolisticMath.Dot(vNormalized, normalNormalized)) * normalNormalized); return(r); }
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())); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }