i believe the box2d physics don't have this.
a reflection is easy, it used 2 vectors (with length 1)
surface normal + direction
the result is the new direction
example:
rem
rem AGK Application 1.08B16
rem MR
SetDisplayAspect( 4.0/3.0 )
type TVector
x as float
y as float
endtype
do
Print("Reflection")
//--------------------
//Norface Normal
n as TVector
n.x=-1
n.y=0
//n.x=0
//n.y=-1
//--------------------
//Line Start
p1 as TVector
p1.x=50
p1.y=50
//Line End
p2 as TVector
p2.x=GetPointerX()
p2.y=GetPointerY()
//Delta
d as TVector
d.x=p2.x-p1.x
d.y=p2.y-p1.y
l#=sqrt(d.x*d.x + d.y*d.y) //length
//Direction
dir as TVector
dir.x=d.x/l#
dir.y=d.y/l#
DrawLine(p1.x , p1.y , p2.x , p2.y , 255,255,0)
//Reflect Direction
o as TVector
op# =2.0 * (dir.x*n.x + dir.y*n.y)
o.x=dir.x - (op# * n.x)
o.y=dir.y - (op# * n.y)
//Start from End to New Point
p1.x=p2.x+o.x*100.0
p1.y=p2.y+o.y*100.0
//Reflected Line
DrawLine(p1.x , p1.y , p2.x , p2.y , 255,0,0)
//Normal
DrawLine(p2.x , p2.y , p2.x + n.x*10.0 , p2.y + n.y*10.0 , 192,192,192)
Sync()
loop
http://en.wikipedia.org/wiki/Specular_reflection