1 2 3 public class mirrorvisitor extends visitor 4 { 5 protected float a,b,c; // Hesse Normalform 6 protected float norm, distance; 7 8 public mirrorvisitor(float x1,float y1, float x2, float y2) 9 { 10 11 a=y1-y2; 12 b=x2-x1; 13 c=-(a*x1+b*y1); 14 norm=(float) Math.sqrt(a*a+b*b); 15 a/=norm; 16 b/=norm; 17 c/=norm; 18 } 19 20 public void visitPOINT (point p) 21 { 22 distance=a*p.X+b*p.Y+c; 23 p.set(p.X-2*distance*a,p.Y-2*distance*b); 24 } 25 26 public void visitLINE (line l) 27 { 28 l.Begin.receive(this); 29 l.End.receive(this); 30 } 31 32 public void visitCIRCLE (circle c) 33 { 34 c.Center.receive(this); 35 } 36 }