reflect {lorentz} | R Documentation |
Mirrors
Description
Plane mirrors in special relativity
Usage
reflect(P,m,ref=1)
Arguments
P |
Vector of four-momenta |
m |
Orientation of mirror, expressed as a three-vector |
ref |
Coefficient of reflectivity of the mirror |
Value
Takes a four-momentum and returns the four-momentum after reflection. Will handle objects or photons.
Note
All four-momenta are measured in the rest frame of the mirror, but it is easy to reflect from moving mirrors; see examples.
However, note that the ref
argument is designed to work with
photons only, where it is conceptually the percentage of photons
reflected and not absorbed by the mirror. If ref
is less than
unity, odd results are given for four momenta of nonzero restmass
objects.
Author(s)
Robin K. S. Hankin
See Also
Examples
## We will reflect some photons from an oblique mirror moving at half
## the speed of light.
## First create 'A', a bunch of photons all moving roughly along the x-axis:
A <- as.photon(as.3vel(cbind(0.9,runif(10)/1000,runif(10)/1000)))
## Now create 'm', a mirror oriented perpendicular to c(1,1,1):
m <- c(1,1,1)
## Reflect the photons in the mirror:
reflect(A,m)
## Reflect the photons in a series of mirrors:
A |> reflect(m) |> reflect(1:3) |> reflect(3:1)
## To reflect from a moving mirror we need to transform to a frame in
## which the mirror is at rest, then transform back to the original
## frame. First create B, a boost representing the mirror's movement
## along the x-axis at speed c/2:
B <- boost(as.3vel(c(0.5,0,0)))
## Transform to the mirror's rest frame:
A %*% t(B)
## NB: in the above, take a transpose because the *rows* of A are 4-vectors.
## Then reflect the photons in the mirror:
reflect(A %*% t(B),m)
## Now transform back to the original rest frame (NB: active transform):
A |> tcrossprod(B) |> reflect(m) |> tcrossprod(solve(B))
[Package lorentz version 1.1-1 Index]