www.gusucode.com > Arduino_Engineering_Kit_Project_Files工具箱matlab程序 > Arduino_Engineering_Kit_Project_Files/DrawingRobot/HelperFunctions/transformPixelsToMeters.m
function segmentsMeters = transformPixelsToMeters(segmentsPix,xLim,yLim,xLimPix,yLimPix,fraction) % Copyright 2018 The MathWorks, Inc. xMinM = xLim(1); yMinM = yLim(1); xRangeM = diff(xLim); yRangeM = diff(yLim); % Determine the range of the coordinates to draw xMinPix = xLimPix(1); yMinPix = yLimPix(1); xRangePix = diff(xLimPix); yRangePix = diff(yLimPix); % Scale from pixels to real world units (Mes) xScaleFactor = fraction * xRangeM/xRangePix; yScaleFactor = fraction * yRangeM/xRangePix; % Pick the smaller scale factor. If both are NaN, pick 0. pix2M = min(xScaleFactor,yScaleFactor); if isnan(pix2M) pix2M = 0; end % Identify origin position of scaled drawing centerMeters = [xMinM yMinM] + [xRangeM yRangeM]/2; drawingOriginM = centerMeters - pix2M*[xRangePix yRangePix]/2; segmentsMeters = cell(size(segmentsPix)); nSegments = length(segmentsPix); for ii = 1:nSegments % Scale all segments by the computed scaling factor coordsPix = segmentsPix{ii}; coordsPix = fliplr(coordsPix); %Convert from row,col to x,y coordsMeters = pix2M*(coordsPix-[xMinPix yMinPix]) + drawingOriginM; segmentsMeters{ii} = coordsMeters; end