Я нашел интересную демонстрацию того, как найти самый большой прямоугольник в многоугольнике неправильной формы здесь , используя D3plus.
Я пытаюсь воссоздать это для многоугольника, над которым я работаювключен, но в настоящее время код не работает.Кажется, работает бесконечно.Код, который я использую, выглядит следующим образом:
d3.csv("data/polyPoints.csv", function(error, polyPoints) {
if (error) return console.error(error);
// coerce string values to numbers
polyPoints.forEach(function(d) {
d3.keys(d).forEach(function(k) {
d[k] = +d[k]
})
});
// settings for geom.largestRect
var rectOptions = {
angle: 0,
maxAspectRatio: 5,
nTries: 1
};
console.log(rectOptions);
console.log(polyPoints);
var lRect = d3plus.geom.largestRect(polyPoints, rectOptions);
console.log(lRect);
});
Я подозреваю, что мой многоугольник не в правильном формате.
Обновление
Я делаю успехи,Мой оригинальный объект многоугольника был взят из CSV и создал массив массивов пар ключ-значение (например, {"x": 0 "y": 1}, {"x": 2, "y": 1} ....)
Я преобразовал это в массив массивов (например, [[1,0], [2,0] ....])
Теперь код выполняется, но выводопределяет прямоугольники, которые пересекают границу исходного многоугольника.