public void WyznaczPunktStyku(ref Odcinek O, out Vector2 PunktStyku) { if (!wyznaczoneAB && !O.wyznaczoneAB) { PunktStyku = O.OdPoczotkuProcent(0.5f); return; } if (!this.wyznaczoneAB) { PunktStyku = new Vector2(KoniecX, O.WartośćY(KoniecX)); return; } if (!O.wyznaczoneAB) { PunktStyku = new Vector2(O.KoniecX, WartośćY(O.KoniecX)); return; } float A = a - O.a; float B = -(b - O.b); float x = B / a; PunktStyku = new Vector2(x, WartośćY(x)); }
public bool Kolizja(Odcinek O, out Vector2 PunktStyku) { WyZnaczAB(); O.WyZnaczAB(); PunktStyku = Vector2.Zero; if (kX < O.pX || O.kX < pX) { return(false); } float PDX = (PoczotekX > O.PoczotekX) ? PoczotekX : O.PoczotekX; float KDX = (KoniecX > O.KoniecX) ? O.KoniecX : KoniecX; float PDY1, KDY1; float PDY2, KDY2; if (wyznaczoneAB) { PDY1 = WartośćY(PDX); KDY1 = WartośćY(KDX); } else { PDY1 = pY; KDY1 = kY; } if (O.wyznaczoneAB) { KDY2 = O.WartośćY(KDX); PDY2 = O.WartośćY(PDX); } else { PDY2 = O.pY; KDY2 = O.kY; } if (KDY1 < KDY2) { if (PDY1 < PDY2) { return(false); } else { WyznaczPunktStyku(ref O, out PunktStyku); return(true); } } else { if (PDY1 < PDY2) { WyznaczPunktStyku(ref O, out PunktStyku); return(true); } else { return(false); } } }