LatLonPoint llp2 = inverse(to.x, to.y, new LatLonPoint());
    protected float[] rhumbProject(Point from, Point to, boolean include_last,                                   int nsegs) {        // calculate pixel distance        if (nsegs < 1) {            // dynamically calculate the number of segments to draw            nsegs = DrawUtil.pixel_distance(from.x, from.y, to.x, to.y) >> 3;// /8            if (nsegs == 0)                nsegs = 1;            else if (nsegs > MAX_RHUMB_SEGS)                nsegs = MAX_RHUMB_SEGS;        }        //      Debug.output(        //              "from=("+from.x+","+from.y+")to=("+to.x+","+to.y+")");        LatLonPoint llp = inverse(from.x, from.y, new LatLonPoint());        LatLonPoint llp2 = inverse(to.x, to.y, new LatLonPoint());        //      Debug.output(        //              "invfrom=("+llp.getLatitude()+","+llp.getLongitude()+        //              ")invto=("+llp2.getLatitude()+","+llp2.getLongitude()+")");        //      Debug.output("nsegs="+nsegs);        // calculate nsegs(+1) extra vertices between endpoints        int[] xypts = DrawUtil.lineSegments(from.x, from.y, // coords                to.x, to.y, nsegs, // number of segs between                include_last, // include last point                new int[nsegs << 1] // retval                );        float[] llpts = new float[xypts.length];        for (int i = 0; i < llpts.length; i += 2) {            //          System.out.print("("+xypts[i]+","+xypts[i+1]+")");            inverse(xypts[i], xypts[i + 1], llp);            llpts[i] = llp.radlat_;            llpts[i + 1] = llp.radlon_;        }        //      Debug.output("");        return llpts;    }