File: RectCenter.m

package info (click to toggle)
psychtoolbox-3 3.0.14.20170103%2Bgit6-g605ff5c.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 103,044 kB
  • ctags: 69,483
  • sloc: ansic: 167,371; cpp: 11,232; objc: 4,708; sh: 1,875; python: 383; php: 344; makefile: 207; java: 113
file content (37 lines) | stat: -rw-r--r-- 1,064 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function [x, y] = RectCenter(r)
%   [x,y] = RectCenter(rect);
%
%	RectCenter returns the integer x,y point closest to the center of a rect.  
%
%	See also PsychRects, CenterRectOnPoint.

%	9/13/99	Allen Ingling wrote it.
%	10/6/99	dgp Fixed bug.
%   5/18/08 mk Vectorized.
%   5/30/09 mk Bugfix in vectorization.

if nargout~=2
	error('Usage: [x, y] = RectCenter(rect);');
end

if PsychNumel(r) == 4
    % Single rect:
    x = round(0.5*(r(1)+r(3)));
    y = round(0.5*(r(2)+r(4)));
else
    % Multi-rect array:
    if (size(r, 1)==4) && (size(r,2)>=1)
        % Multi-column array with one 4-comp. rect per column:
        x = round(0.5*(r(1,:)+r(3,:)));
        y = round(0.5*(r(2,:)+r(4,:)));
    else
        if (size(r, 2)==4) && (size(r,1)>=1)
            % Multi-row array with one 4-comp. rect per row:
            x = round(0.5*(r(:,1)+r(:,3)));
            y = round(0.5*(r(:,2)+r(:,4)));
        else
            % Something weird and unknown:
            error('Given matrix of rects not of required 4-by-n or n-by-4 format.');
        end
    end
end