How to transform a set of lines to a set of circles using möbius transformation?

14 次查看(过去 30 天)
I should write a code to transform a set of lines to a set of circles and here the pictures I have.I know I should use möbius transformation and I searched a lot but I don't understand what I should do.could anyone help?

采纳的回答

William Rose
William Rose 2023-1-12
编辑:William Rose 2023-1-12
[edit: fix typos in my text; code is unchanged]
Your image does not include a scale or (more importantly) an indication of where the origin is. The lines in fig 1 and the circles in figure 2 represent sets of complex numbers. You can think of the lines as very large circles that pass thorugh the point at infinity. The Mobius transformation maps these "circles" in figure 1 to the circles in figure 2.
The general Mobius transform is
.
Notice that it appears that all three circles in fig.2 would intersect at a common point, if the circles were complete. Let's assume this common point is the origin. This point must map to infinity - the place where all three lines in fig.1 would "intersect". The general equation for f(z) will map z=0 (the origin) to the point at infinity, if a=d=0. Then we have
which simplifies to , up to a scaling factor. Let's try this:
z1=-ones(1,101)+i*[-5:.1:5];
z2=-2*ones(1,101)+i*[-5:.1:5];
z3=[-5:.1:5]+i*ones(1,101);
plot(z1,'-r.'); hold on; plot(z2,'-g.'); plot(z3,'-b.'); axis equal
Now transform the points:
fz1=1./z1; fz2=1./z2; fz3=1./z3;
Plot transformed points:
figure;
plot(fz1,'-r.'); hold on; plot(fz2,'-g.'); plot(fz3,'-b.');
axis equal
This looks like your figure 2. Note that the transform we used was f(z)=1/z, which corresponds to the Mobius transform, with a=d=0, and b=c=1.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by