|
| 1 | +/** |
| 2 | + *@param {number[]} p1 |
| 3 | + *@param {number[]} p2 |
| 4 | + *@param {number[]} p3 |
| 5 | + *@param {number[]} p4 |
| 6 | + *@return {boolean} |
| 7 | + */ |
| 8 | + |
| 9 | +// const d12 = distanceSquare(p1, p2) |
| 10 | +// const d13 = distanceSquare(p1, p3) |
| 11 | +// const d14 = distanceSquare(p1, p4) |
| 12 | +// const d23 = distanceSquare(p2, p3) |
| 13 | +// const d24 = distanceSquare(p2, p4) |
| 14 | +// const d34 = distanceSquare(p3, p4) |
| 15 | + |
| 16 | +// if (d12 === 0 || d13 === 0 || d14 === 0) return false |
| 17 | + |
| 18 | +// // 1 2 |
| 19 | +// // 3 4 |
| 20 | +// if (d12 === d13 && d12 + d13 === d14 && d23 === d24 + d34) return true |
| 21 | + |
| 22 | +// // 1 2 |
| 23 | +// // 4 3 |
| 24 | +// if (d12 === d14 && d12 + d14 === d13 && d24 === d34 + d23) return true |
| 25 | + |
| 26 | +// // 1 3 |
| 27 | +// // 4 2 |
| 28 | +// if (d13 === d14 && d13 + d14 === d12 && d34 === d23 + d24) return true |
| 29 | + |
| 30 | +varvalidSquare=function(p1,p2,p3,p4){ |
| 31 | +functiondistanceSquare(a,b){ |
| 32 | +return(a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1]) |
| 33 | +} |
| 34 | + |
| 35 | +constds=[distanceSquare(p1,p2),distanceSquare(p1,p3),distanceSquare(p1,p4),distanceSquare(p2,p3),distanceSquare(p2,p4),distanceSquare(p3,p4)].sort((a,b)=>a-b) |
| 36 | + |
| 37 | +for(vari=0;i<3;i++)if(ds[i]!==ds[i+1]||ds[i]===0)returnfalse |
| 38 | + |
| 39 | +if(ds[4]===ds[5]&&ds[4]===ds[0]*2)returntrue |
| 40 | + |
| 41 | +returnfalse |
| 42 | +} |