Показать сообщение отдельно
  #6 (permalink)  
Старый 20.05.2018, 13:55
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

Ух, сам бы не догадался. Спасибо, Rise и MallSerg!

Получился такой код:
// Исходный массив с точками фигуры
let pointsArr = [10,0, 0,50, 60,60, 70,10];
// Функция принимает массив точек фигуры и возвращает массив индексов
let indexesArr = earcut(pointsArr); // returns [1,0,3, 3,2,1];
// Массив с итоговыми точками треугольников
let result = [];

// Соединю два массива. Из indexesArr возьму индексы, из pointsArr значения координат
for(let i = 0; i < indexesArr.length; i++) {
    result.push( pointsArr[ indexesArr[i] * 2 ] );
    result.push( pointsArr[ indexesArr[i] * 2 + 1 ] );
}

// Вывод координат получившихся треугольников
console.log(result); // [0, 50, 10, 0, 70, 10, 70, 10, 60, 60, 0, 50]

// Уменьшу координаты точек чтобы фигура полностью помещалась на холсте
for(let i = 0; i < result.length; i++) {
    result[i] /= 100;
}
Ответить с цитированием