raycast(raycaster) {
    let {startAngle, endAngle, startRadius, endRadius=startRadius, threeObject} = this
    let origGeom = threeObject.geometry
    let raycastGeometry = origGeom.clone()

    // Modify raycasting geometry to match what the vertex shader would produce
    let posAttr = raycastGeometry.attributes.position
    for (let i = 0; i < posAttr.count; i++) {
      let angle = endAngle + ((posAttr.getX(i) + 0.5) * (startAngle - endAngle));
      let radius = startRadius + ((posAttr.getY(i) + 0.5) * (endRadius - startRadius));
      posAttr.setXY(i, Math.cos(angle) * radius, Math.sin(angle) * radius)
    }
    raycastGeometry.computeBoundingSphere()

    // Temporarily replace geometry with the modified one
    threeObject.geometry = raycastGeometry
    let result = super.raycast(raycaster)
    threeObject.geometry = origGeom
    return result
  }
Override raycast method to handle vertex shader transformation