Не нужно преувеличивать:

Код AS3:
public class Vector2
{
............
public function mirror( mirrorVec:Vector2 ):void
{
var v:Vector2 = new Vector2( mirrorVec.y, -mirrorVec.x );
v.normalize();
var m:Number = -2.0 * (this.x * v.x + this.y * v.y);
this.x += m * v.x;
this.y += m * v.y;
}
............
}
Причем эту часть можно еще и неплохо оптимизировать...
Если mirrorVec будет единичным, а он должен быть единичным исходя из задачи, то все сведется к паре действий:

Код AS3:
public function mirror( mirrorVec:Vector2 ):void
{
var m:Number = -2.0 * (this.x * mirrorVec.y - this.y * mirrorVec.x);
this.x += m * mirrorVec.y;
this.y -= m * mirrorVec.x;
}
Не мудрите с углами — синусы и косинусы в разы тяжелее умножений и сложений
