rapids/src/features/location_barnett/MaxDistBetweenTrajectories.R

30 lines
908 B
R

MaxDistBetweenTrajectories <-
function(mat1,mat2,t_gap=1){
mat1=matrix(mat1,ncol=7);mat2=matrix(mat2,ncol=7)
t0=mat1[1,4];t1=mat2[nrow(mat2),7]
t_mesh = seq(t0,t1,t_gap)
d_v = rep(0,length(t_mesh))
for(i in 1:length(t_mesh)){
ID1=intersect(which(mat1[,4]<=t_mesh[i]),which(mat1[,7]>=t_mesh[i]))[1]
if(mat1[ID1,1]==2){
x1=mat1[ID1,2]
y1=mat1[ID1,3]
}else{
w1=(t_mesh[i]-mat1[ID1,4])/(mat1[ID1,7]-mat1[ID1,4])
x1=mat1[ID1,2]*(1-w1)+mat1[ID1,5]*w1
y1=mat1[ID1,3]*(1-w1)+mat1[ID1,6]*w1
}
ID2=intersect(which(mat2[,4]<=t_mesh[i]),which(mat2[,7]>=t_mesh[i]))[1]
if(mat2[ID2,1]==2){
x2=mat2[ID2,2]
y2=mat2[ID2,3]
}else{
w2=(t_mesh[i]-mat2[ID2,4])/(mat2[ID2,7]-mat2[ID2,4])
x2=mat2[ID2,2]*(1-w2)+mat2[ID2,5]*w2
y2=mat2[ID2,3]*(1-w2)+mat2[ID2,6]*w2
}
d_v[i] = sqrt((x1-x2)^2+(y1-y2)^2)
}
return(max(d_v))
}