52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 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
 | 
						|
) {
 | 
						|
  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(1),
 | 
						|
    shortestDiameter: width.toFixed(1)
 | 
						|
  }
 | 
						|
}
 |