teRings = {
let ringRadius = [svg_h*0.25,
svg_h*0.35,
svg_h*0.43,
svg_h*0.5]
let ringWidth = [ringRadius[0],
ringRadius[1]-ringRadius[0],
ringRadius[2]-ringRadius[1],
ringRadius[3]-ringRadius[2] ]
let ringStart = [ringRadius[0]-ringWidth[0],
ringRadius[1]-ringWidth[1],
ringRadius[2]-ringWidth[2],
ringRadius[3]-ringWidth[3]]
let trackCount = [_.floor(ringWidth[0]/blipSize) -1,
_.floor(ringWidth[1]/blipSize),
_.floor(ringWidth[2]/blipSize),
_.floor(ringWidth[3]/blipSize) ]
let trackSpacing = [ringWidth[0]/trackCount[0],
ringWidth[1]/trackCount[1],
ringWidth[2]/trackCount[2],
ringWidth[3]/trackCount[3] ]
let trackPosition = []
for (let _ring = 0; _ring < 4 ; ++_ring) {
let tempTrackPos = []
for (let _trackNumber = 0; _trackNumber < trackCount[_ring]; ++_trackNumber) {
tempTrackPos.push((trackSpacing[_ring]*_trackNumber)+(trackSpacing[_ring]/2))
}
trackPosition.push(tempTrackPos) // maybe needs to be reversed??
}
// -------------------------------------------------------------------------------------------------------------------
// the size of 1 degree of difference at tracks radius. For positioning. size in pixels)
// 90/(blipSize/ sectorSize(22) ) 22 radius with a blipSize of 22 means 1.5 blips can fit into 90 degrees (rounded down)
let sectorGap = []
for (let _ring = 0; _ring < 4 ; ++_ring) {
let tempSectorGap = []
for (let _trackNumber = 0; _trackNumber < trackCount[_ring]; ++_trackNumber) {
tempSectorGap.push(blipSize/(sectorSize(ringStart[_ring]+trackPosition[_ring][_trackNumber])))
}
sectorGap.push(tempSectorGap)
}
//---------------
// sectors positions don't start from zero but from half blip size from zero, in degress
let firstSectorOffset = []
for (let _ring = 0; _ring < 4 ; ++_ring) {
let tempFirstSectorOffset = []
for (let _trackNumber = 0; _trackNumber < trackCount[_ring]; ++_trackNumber) {
tempFirstSectorOffset.push(sectorGap[_ring][_trackNumber]*0.5) // degrees to 1st blip
}
firstSectorOffset.push(tempFirstSectorOffset)
}
//----------------------------------------------------------------------------------------------------------------------------
// how many sector fit on a track
// Doesn't count the offset padding values.
// sectorGap[_ring][_trackNumber] // 1 degree movement around track in pixels
let sectorCount = []
for (let _ring = 0; _ring < 4 ; ++_ring) {
let tempTrackSectorCount = []
for (let _trackNumber = 0; _trackNumber < trackCount[_ring]; ++_trackNumber) {
tempTrackSectorCount.push( _.floor((90-firstSectorOffset[_ring][_trackNumber])/sectorGap[_ring][_trackNumber])) // number of blips on the track
}
sectorCount.push(tempTrackSectorCount)
}
// ------------------------------------------------------------------------------
// i need to get the floored remainder and divide that by the number of blips on a track and add that to the offset.
let sectorOffset = []
for (let _ring = 0; _ring < 4 ; ++_ring) {
let tempSectorOffset = []
for (let _trackNumber = 0; _trackNumber < trackCount[_ring]; ++_trackNumber) {
let so = 90-(sectorGap[_ring][_trackNumber]*sectorCount[_ring][_trackNumber])
tempSectorOffset.push(so/sectorCount[_ring][_trackNumber])
}
sectorOffset.push(tempSectorOffset)
}
// sectorGap[]
// ------------------------------------------------------------------------------
let quadrantName = _.uniq(blips.map(d => d.quadrant))
let quadrantRotation = [ 0, 90, 180, 270 ] // rotatation value for quadrent (I could have more quadrants by defing quadrant sizes.)
return {name:ringNames,
radius:ringRadius,
ringWidth:ringWidth,
ringStart:ringStart,
trackCount:trackCount, // number of tracks in a ring
trackSpacing:trackSpacing, // the space each track uses
trackPosition:trackPosition, // radius position []
sectorGap:sectorGap, // the size of 1 degree of difference at tracks in degrees (? radius [])
sectorCount:sectorCount, // number of blips that can fit onto a rings track []
firstSectorOffset:firstSectorOffset, // in degrees []
sectorOffset:sectorOffset,
quadrantName:quadrantName,
quadrantRotation:quadrantRotation
}
}