function generatePoints({
  axisStart,
  axisEnd,
  numberOfTicks,
  axisDomain
}) {
  const {left, right, slope, offset} = generateFit(axisStart, axisEnd);
  // construct a linear band of points, then map them
  const pointSlope = (right - left) / numberOfTicks;
  const axisScale = scaleLinear()
    .domain([left, right])
    .range(axisDomain);

  const slopeVertical = axisStart.x === axisEnd.x;
  return {
    slope: slopeVertical ? Infinity : slope,
    points: range(left, right + pointSlope, pointSlope)
      .map(val => {
        if (slopeVertical) {
          return {y: val, x: slope * val + offset, text: axisScale(val)};
        }
        return {x: val, y: slope * val + offset, text: axisScale(val)};
      })
      .slice(0, numberOfTicks + 1)
  };
}
Generate a description of a decorative axis in terms of a linear equation
y = slope * x + offset in coordinates
@param props
props.@param {Object} axisStart Object of format {x, y} describing in coordinates
the start position of the decorative axis
props.@param {Object} axisEnd Object of format {x, y} describing in coordinates
the start position of the decorative axis
props.@param {Number} numberOfTicks The number of ticks on the axis
props.@param {Array.Numbers} axisDomain The values to be interpolated across for the axis
@returns {Number} Object describing the slope and the specific coordinates of the points