SpeciesFileGroup/taxonworks

View on GitHub
app/javascript/vue/components/ui/VGraph/svg/pentagon.js

Summary

Maintainability
B
5 hrs
Test Coverage
export function pentagon({ color }, { size }) {
  const element = document.createElementNS(
    'http://www.w3.org/2000/svg',
    'polygon'
  )

  element.setAttribute('points', points(size))
  element.setAttribute('width', size)
  element.setAttribute('height', size)
  element.setAttribute('fill', color)
  element.setAttribute(
    'transform',
    `rotate(18, ${size / 2}, ${size / 2}) translate(-${size / 2}, -${size / 2})`
  )

  return element
}

function points(size) {
  return [...Array(6)]
    .map((_, i) => {
      const angleDeg = 72 * i - 36
      const angleRad = (Math.PI / 180) * angleDeg

      return [
        size / 1.8 + size * Math.cos(angleRad),
        size / 1.8 + size * Math.sin(angleRad)
      ]
    })
    .map((p) => p.join(','))
    .join(' ')
}