# [R] angle and distance between sets of vectors

Petr Pikal petr.pikal at precheza.cz
Fri Sep 19 18:19:47 CEST 2003

```Dear all

I want to find a distance between two points in three dimensional space and an
angle between two vectors from [0,0,0] to specified points. I searched archives
and found some solution using dist but I am not sure how to use it if I have
several sets of such points.

Here is some example

#Four points

y <- c(1,0,0)
z <- c(1,1,0)
x <- 2*z
v <- 2*x

# two sets

mata<-rbind(y,x)

> mata
[,1] [,2] [,3]
y    1    0    0
x    2    2    0

matb<-rbind(z,v)

> matb
[,1] [,2] [,3]
z    1    1    0
v    4    4    0

# I want a distances and angles

> dist(rbind(y,z))
 1
> dist(rbind(y/sum(y),z/sum(z)))
 0.7071068

> dist(rbind(x,v))
 2.828427
> dist(rbind(x/sum(x),v/sum(v)))
 0

# they are actually here but they are a little bit hidden

> dist(rbind(mata,matb))
y        x        z
x 2.236068
z 1.000000 1.414214
v 5.000000 2.828427 4.242641

> dist(rbind(mata/rowSums(mata),matb/rowSums(matb)))
y x z
x 0.7071068
z 0.7071068 0
v 0.7071068 0 0

Before I start programming a for loop (something like that)

for (i in 1:length(mata)) result<-dist(rbind(mata[i,],matb[i,]))

I would like to ask some more experienced if there is a way how to get a vector
of distances and angles directly?

Something like
some.experienced.use.of.dist(mata,matb) resulting in matrix or dataframe or 2
vectors or whatever

distance        angle
1         1,                 .7071068
2         2.828427,     0

will be greatly appreciated.
Thanks

Petr Pikal
Petr Pikal
petr.pikal at precheza.cz

```