将负多边形转换为正坐标 - Javascript

时间:2017-09-01 09:46:40

标签: javascript math polygon snap.svg

我希望保持我的分数(x,y)始终为正。

我有一个包含这些值的数组:

(points) [-916, 214, 10, 214, 10, 362, 200, 362, 200, 764, -916, 764]
            X    Y    X   Y    X   Y    X    Y    X    Y     X    Y

是否有算法可以将这些点移动到它们的原点,以便坐标始终保持正值?

1 个答案:

答案 0 :(得分:1)

您可以先获得xy的最小值,然后使用更正来映射新数组。

  

最低值

[-916, 0]
     

转换

[-916,  214,   10,  214,   10,  362,  200,  362,  200,  764, -916,  764] original
[   0,  214,  926,  214,  926,  362, 1116,  362, 1116,  764,    0,  764] updated

var data = [-916, 214, 10, 214, 10, 362, 200, 362, 200, 764, -916, 764];
    min = [0, 0];
    
data.forEach(function (v, i) {
    if (v < min[i % 2]) {
        min[i % 2] = v;
    }
});

console.log(min);
console.log(data.map(function (v, i) {
    return v - min[i % 2];
}));
.as-console-wrapper { max-height: 100% !important; top: 0; }