-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfiremaskinRange.m
More file actions
59 lines (45 loc) · 2.17 KB
/
Copy pathfiremaskinRange.m
File metadata and controls
59 lines (45 loc) · 2.17 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function output = firemaskinRange(u, lonlat)
% Determines if the firemask intersects the box given by lonlat
% Returns true if one of the 4 corners lands in lonlat
% fmTL = Top Left of firemask
% fmTR = Top Right of firemask
% fmBL = Bottom Left of firemask
% fmBR = Bottom Right of firemask
% These represent cases where the corner of a firemask lands in the box
lonwidth = size(u.long, 1);
lonheight = size(u.long, 2);
fmLonTL = u.long(1);
fmLonTR = u.long(lonwidth,1);
fmLonBL = u.long(1,lonheight);
fmLonBR = u.long(lonwidth, lonheight);
latwidth = size(u.lat, 1);
latheight = size(u.lat, 2);
fmLatTL = u.lat(1);
fmLatTR = u.lat(latwidth,1);
fmLatBL = u.lat(1, latheight);
fmLatBR = u.lat(latwidth, latheight);
fmLonTLinRange = fmLonTL > lonlat(1) && fmLonTL < lonlat(2);
fmLonTRinRange = fmLonTR > lonlat(1) && fmLonTR < lonlat(2);
fmLonBLinRange = fmLonBL > lonlat(1) && fmLonBL < lonlat(2);
fmLonBRinRange = fmLonBR > lonlat(1) && fmLonBR < lonlat(2);
fmLatTLinRange = fmLatTL > lonlat(3) && fmLatTL < lonlat(4);
fmLatTRinRange = fmLatTR > lonlat(3) && fmLatTR < lonlat(4);
fmLatBLinRange = fmLatBL > lonlat(3) && fmLatBL < lonlat(4);
fmLatBRinRange = fmLatBR > lonlat(3) && fmLatBR < lonlat(4);
fmTLinRange = fmLonTLinRange && fmLatTLinRange;
fmTRinRange = fmLonTRinRange && fmLatTRinRange;
fmBLinRange = fmLonBLinRange && fmLatBLinRange;
fmBRinRange = fmLonBRinRange && fmLatBRinRange;
fminbox = fmTLinRange || fmTRinRange || fmBLinRange || fmBRinRange;
% These represent cases where the corner of the box lands in a firemask
boxLonL = lonlat(1);
boxLonR = lonlat(2);
boxLatT = lonlat(3);
boxLatB = lonlat(4);
boxLonLinRange = (boxLonL > fmLonTL && boxLonL < fmLonTR) || (boxLonL > fmLonBL && boxLonL < fmLonBR);
boxLonRinRange = (boxLonR > fmLonTL && boxLonR < fmLonTR) || (boxLonR > fmLonBL && boxLonR < fmLonBR);
boxLatTinRange = (boxLatT > fmLatBL && boxLatT < fmLatTL) || (boxLatT > fmLatBR && boxLatT < fmLatTR);
boxLatBinRange = (boxLatB > fmLatBL && boxLatB < fmLatTL) || (boxLatB > fmLatBR && boxLatB < fmLatTR);
boxinfm = boxLonLinRange && boxLonRinRange && boxLatTinRange && boxLatBinRange;
output = fminbox || boxinfm;
end