polygon.ts 749 B

123456789101112131415161718192021222324
  1. /**
  2. * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. /**
  7. * Create 3d points for a polygon:
  8. * 3 for a triangle, 4 for a rectangle, 5 for a pentagon, 6 for a hexagon...
  9. */
  10. export function polygon(sideCount: number, shift: boolean) {
  11. const points = new Float32Array(sideCount * 3)
  12. const radius = sideCount <= 4 ? Math.sqrt(2) / 2 : 0.6
  13. const offset = shift ? 1 : 0
  14. for (let i = 0, il = sideCount; i < il; ++i) {
  15. const c = (i * 2 + offset) / sideCount * Math.PI
  16. points[i * 3] = Math.cos(c) * radius
  17. points[i * 3 + 1] = Math.sin(c) * radius
  18. points[i * 3 + 2] = 0
  19. }
  20. return points
  21. }