irc_web/.svn/pristine/53/5375e7a0003aef1fabbb1c863c5...

53 lines
1.4 KiB
Plaintext

import getPixelSpacing from './getPixelSpacing'
/**
* Calculates longest and shortest diameters using measurement handles and pixelSpacing
* @param {Object} measurementData
* @param {Object} pixelSpacing pixelSpacing
*
*@returns {Object} longestDiameter and shortestDiameter
*/
export default function calculateLongestAndShortestDiameters(
measurementData,
image,
digits = 1
) {
const pixelSpacing = getPixelSpacing(image)
const { rowPixelSpacing, colPixelSpacing } = pixelSpacing
const {
start,
end,
perpendicularStart,
perpendicularEnd
} = measurementData.handles
// Calculate the long axis length
const dx = (start.x - end.x) * (colPixelSpacing || 1)
const dy = (start.y - end.y) * (rowPixelSpacing || 1)
let length = Math.sqrt(dx * dx + dy * dy)
// Calculate the short axis length
const wx =
(perpendicularStart.x - perpendicularEnd.x) * (colPixelSpacing || 1)
const wy =
(perpendicularStart.y - perpendicularEnd.y) * (rowPixelSpacing || 1)
let width = Math.sqrt(wx * wx + wy * wy)
if (!width) {
width = 0
}
// Length is always longer than width
if (width > length) {
const tempW = width
const tempL = length
length = tempW
width = tempL
}
return {
longestDiameter: length.toFixed(digits),
shortestDiameter: width.toFixed(digits)
}
}