Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not returning the smallest possible bounding box #3

Open
verner-lall opened this issue May 9, 2018 · 1 comment
Open

Not returning the smallest possible bounding box #3

verner-lall opened this issue May 9, 2018 · 1 comment

Comments

@verner-lall
Copy link

I need to use this in my application and the algorithm doesnt want to work right at some circumstances.

I've captured one of these circumstances below.

  • Just replace the points with my points.
  • It doesn't get the minimum bounding box, seems like it doesnt go all the way around the thing.
  • replace the number 423 with 420 in the map() function
  • it works like a charm
points =
[
    new Vector(-225.65538315715122, 2497.308365149243),
    new Vector(-225.5415137063559, 2496.4434408000507),
    new Vector(-225.35269443912452, 2495.5917321256948),
    new Vector(-225.09036238409297, 2494.7597211434636),
    new Vector(-224.75651404660047, 2493.953739959313),
    new Vector(672.9266944960153, 674.7572612295129),
    new Vector(695.5515969417622, 645.0418222163289),
    new Vector(695.5781507423472, 645.0072166296611),
    new Vector(695.6076195733135, 644.9750570439111),
    new Vector(695.6397791590636, 644.9455882129448),
    new Vector(695.6743847457313, 644.9190344123598),
    new Vector(695.7111729639068, 644.895597732612),
    new Vector(695.7498638330366, 644.875456540986),
    new Vector(695.7901628922441, 644.8587641241113),
    new Vector(695.8317634413557, 644.8456475213598),
    new Vector(695.8743488750736, 644.8362065579981),
    new Vector(695.9175950925332, 644.8305130854584),
    new Vector(695.9611729639071, 644.8286104345043),
    new Vector(696.0047508352809, 644.8305130854584),
    new Vector(696.0479970527406, 644.8362065579981),
    new Vector(696.0943206289946, 644.8466646914152),
    new Vector(848.6474493905852, 686.992680477345),
    new Vector(848.6853117971613, 687.0047799100413),
    new Vector(848.7256108563687, 687.021472326916),
    new Vector(848.7643017254983, 687.041613518542),
    new Vector(848.8010899436738, 687.0650501982898),
    new Vector(848.8356955303416, 687.0916039988747),
    new Vector(848.8678551160915, 687.121072829841),
    new Vector(848.8973239470578, 687.1532324155909),
    new Vector(848.9238777476427, 687.1878380022587),
    new Vector(848.9473144273904, 687.2246262204342),
    new Vector(848.9674556190165, 687.2633170895638),
    new Vector(848.9841480358912, 687.3036161487712),
    new Vector(848.9972646386427, 687.3452166978827),
    new Vector(849.0067056020042, 687.3878021316006),
    new Vector(849.0123990745441, 687.4310483490601),
    new Vector(853.1744024114805, 724.5544879717766),
    new Vector(717.9753414604593, 1147.6290190583172),
    new Vector(531.454275303352, 1597.9307066430933),
    new Vector(306.396600073248, 2030.262478297805),
    new Vector(44.51514057218628, 2441.3340281910996),
    new Vector(-74.65958841725904, 2605.131062762545),
    new Vector(-74.97735723549349, 2605.5299992058135),
    new Vector(-75.56673385481793, 2606.173190920814),
    new Vector(-76.20992556981814, 2606.762567540138),
    new Vector(-76.90203730317323, 2607.293643551838),
    new Vector(-77.63780166668384, 2607.762377146793),
    new Vector(-78.41161904927702, 2608.165200979315),
    new Vector(-79.2176002334275, 2608.499049316808),
    new Vector(-80.04961121565916, 2608.7613813718394),
    new Vector(-80.90131989001524, 2608.9502006390708),
    new Vector(-81.76624423920815, 2609.064070089866),
    new Vector(-82.63780166668492, 2609.102123108949),
    new Vector(-83.5093590941617, 2609.064070089866),
    new Vector(-84.3742834433546, 2608.9502006390708),
    new Vector(-85.22599211771069, 2608.7613813718394),
    new Vector(-86.05800309994234, 2608.499049316808),
    new Vector(-86.86398428409282, 2608.165200979315),
    new Vector(-87.637801666686, 2607.762377146793),
    new Vector(-88.37356603019661, 2607.293643551838),
    new Vector(-88.68103719272821, 2607.069513169488),
    new Vector(-221.7366717022757, 2506.147312637258),
    new Vector(-222.12131227309993, 2505.8403670079074),
    new Vector(-222.76450398809988, 2505.2509903885834),
    new Vector(-223.35388060742406, 2504.6077986735836),
    new Vector(-223.88495661912407, 2503.9156869402286),
    new Vector(-224.35369021407843, 2503.1799225767186),
    new Vector(-224.75651404660047, 2502.4061051941258),
    new Vector(-225.09036238409297, 2501.6001240099754),
    new Vector(-225.35269443912452, 2500.768113027744),
    new Vector(-225.5415137063559, 2499.9164043533883),
    new Vector(-225.65538315715122, 2499.051480004196),
    new Vector(-225.69343617623375, 2498.1799225767195),
    ].map(e=>new Vector(e.x/10+ 300, e.y/10 +423))
@verner-lall
Copy link
Author

verner-lall commented May 9, 2018

The map function is there just to fit it in the view. Removing points that are relatively close to each other to make it more low-poly does seem to help, but I'm not sure I want to do that.

function cleanPoints(points) {
    let i = 0;
    let i2 = 1;
    let newPoints = [points[0]];
    while (i2<points.length){
        const p = points[i];
        const p2= points[i2];
        if (p2.distance(p)>18){
            newPoints.push(p2)
            i=i2;
        }
        i2+=1;
    }
    return newPoints;
}
points = cleanPoints(points);

But it still doesn't work right with bigger numbers.
I'm testing it against a regular axis bounding box, and if the minimum-bounding-box is bigger than that then it's failing somewhere.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant