Spaces:
Running
Running
| import { LineSegments } from '../objects/LineSegments.js'; | |
| import { LineBasicMaterial } from '../materials/LineBasicMaterial.js'; | |
| import { Float32BufferAttribute } from '../core/BufferAttribute.js'; | |
| import { BufferGeometry } from '../core/BufferGeometry.js'; | |
| import { Color } from '../math/Color.js'; | |
| class PolarGridHelper extends LineSegments { | |
| constructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888) { | |
| color1 = new Color(color1); | |
| color2 = new Color(color2); | |
| const vertices = []; | |
| const colors = []; | |
| // create the radials | |
| for (let i = 0; i <= radials; i++) { | |
| const v = (i / radials) * (Math.PI * 2); | |
| const x = Math.sin(v) * radius; | |
| const z = Math.cos(v) * radius; | |
| vertices.push(0, 0, 0); | |
| vertices.push(x, 0, z); | |
| const color = i & 1 ? color1 : color2; | |
| colors.push(color.r, color.g, color.b); | |
| colors.push(color.r, color.g, color.b); | |
| } | |
| // create the circles | |
| for (let i = 0; i <= circles; i++) { | |
| const color = i & 1 ? color1 : color2; | |
| const r = radius - (radius / circles) * i; | |
| for (let j = 0; j < divisions; j++) { | |
| // first vertex | |
| let v = (j / divisions) * (Math.PI * 2); | |
| let x = Math.sin(v) * r; | |
| let z = Math.cos(v) * r; | |
| vertices.push(x, 0, z); | |
| colors.push(color.r, color.g, color.b); | |
| // second vertex | |
| v = ((j + 1) / divisions) * (Math.PI * 2); | |
| x = Math.sin(v) * r; | |
| z = Math.cos(v) * r; | |
| vertices.push(x, 0, z); | |
| colors.push(color.r, color.g, color.b); | |
| } | |
| } | |
| const geometry = new BufferGeometry(); | |
| geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); | |
| geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); | |
| const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false }); | |
| super(geometry, material); | |
| this.type = 'PolarGridHelper'; | |
| } | |
| } | |
| export { PolarGridHelper }; | |