Пример #1
0
        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));
        }
Пример #2
0
        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);
                }
            }
        }