# needs to get projection of one point from one x-axis to another

1 view (last 30 days)
Aleksandra on 28 May 2012
Hello. I have a problem with gui. I got a plot with 2 different scaling x-axes and one y-axis. I need to get position of point (created on red axis) in values of magenta axes. And then to create a plot using this point as a start on magenta axes. How can I do it?
Aleksandra on 28 May 2012
so magenta axes - xaxislocation, bottom
yaxislocation, left
red axes - xaxislocation, top
yaxislocatopn, right

Geoff on 28 May 2012
Have I understood correctly? You have xred and xmag which are two different ranges. You want to translate the x-coord from the red axis to the magenta axis without a visual change in position.
I assume that xred and xmag are both 1-by-2 vectors defining a min- and max-value. Assuming that your axis scale is linear, I'll first turn a point x into an axis-relative value with the red scaling (axis-relative being a number from 0 to 1 - ie normalised):
xrel = (x - xred(1)) / diff(xred);
Now, I'll reverse the calculation and translate the relative position into the magenta axis:
x1 = xmag(1) + xrel * diff(xmag);
Putting that together, to translate from one axis limit to another you could do this:
xlate = @(x,lim1,lim2) lim2(1) + (x-lim1(1)) * diff(lim2) / diff(lim1);
x1 = xlate(x, xred, xmag);
This will work if x is a vector, too.
Aleksandra on 25 Jun 2012
It works now. Thanks.
Geoff on 26 Jun 2012

Aleksandra on 25 Jun 2012
Finally, I used ginput(1) to get pixel location of desired point and then use this location as start point for new axes.