Hirdetés

Új hozzászólás Aktív témák

  • Vico87
    tag

    Hello.

    Unalom űzésként találtam ezt a topicot, ide legalább tudok írogatni :)

    Előszöris, sajna csak C# ban tudom elmondani az én megoldásomat, de remélem az is segít:

    először is, az oké, hogy kivonod X2 - X1 et, és Y1 ből Y2 őt, de ugye, arra is gondolj, hogy a két pont közül nem tudod, melyik hol, van, tehát először megkell állapítani, hogy melyik a nagyobb, és nagyobból a kisebbet számold ki.

    public double GetDistance(PointF p1, PointF p2)
    {
    double xDistance = Math.Max(p1.X, p2.X) - Math.Min(p1.X, p2.Y);
    double yDistance = Math.Max(p1.Y, p2.Y) - Math.Min(p1.Y, p2.Y);

    return Math.Sqrt(Math.Pow(xDistance, 2) + Math.Pow(yDistance, 2));
    }

    ezt aztán egysorossá is lelehet redukálni, nah meg PointF objektum helyett lehet több double, int, decimal, vagy neked tetsző változót használni. Lehet, hogy nem tökéletes mert notepadba lehet elírtam valamit, de sztem ez jó lesz

    Igazából nem kell megnézni, hogy valamelyik nagyobb-e. Mert ugyanis négyzetre emeled, ami után mindenképp nemnegatív értéket kapsz.
    Az újabb C szabványban már van inline függvényekre támogatás. Azzal szerintem a legjobb egy ilyet megoldani.
    Valahogy így :

    inline tavolsag(int x1, int x2, int y1, int y2) {
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );
    }

    (Bár a Visual Studio 2005 nem eszi meg C esetén az inline függvényt)

Új hozzászólás Aktív témák