我想自己创建一个动态图。但我最大的问题是我怎样才能得到一条线和我的图形相交的坐标(假设只是一条线)?
类似于 iPhone 中的 Stock App,在这个应用程序中,如果您查看图表,当您在屏幕上移动手指时,您会看到线和图表相交的坐标。
感谢您的帮助,对不起我的英语:)
我想自己创建一个动态图。但我最大的问题是我怎样才能得到一条线和我的图形相交的坐标(假设只是一条线)?
类似于 iPhone 中的 Stock App,在这个应用程序中,如果您查看图表,当您在屏幕上移动手指时,您会看到线和图表相交的坐标。
感谢您的帮助,对不起我的英语:)
猜猜你可以使用线性代数技能获得线到线的交点坐标,例如维基百科对此的了解:http ://en.wikipedia.org/wiki/Line-line_intersection
要使用与您的问题相同的示例,在此问题上执行类似于 iPhone 上的 Stocks App 的操作,这很容易:
CGPoint pt = [[touches anyObject] locationInView:yourView]
)所以想象你y=sin(x)
在你的图表上绘制了一些函数,并且因为你的 Y 轴是 20 点宽以便你绘制 Y 轴标签,所以表示 X=0 的点被绘制在x=20pt
你的 UIView 上。并想象您的 X 轴从 0 变为 10,并且您表示 X=10 的点被绘制在x=300pt
您的视图上。
然后,当用户点击视图上 x 坐标为 的点时x=140pt
,很容易计算出它对应于图形上的坐标 X=5((x-20)/(300-20)*Xmax = 120/240*10 = 5
,简单的三规则)。因此,用户点击了对应于 X=5 的点,并且在曲线上,该点为 ,X=5
因为Y=sin(5)
您的曲线为y=sin(x)
。
就在我的脑海中,天真地无知图形显示程序通常如何做到这一点(即某种图形“最佳实践”):
假设您的图表由许多(线性)线组成,由法线方程 y = kx+m 描述,我想您必须求解当您的参考线(我们称之为 refline)具有相同时的方程x 和 y 坐标作为组成图形的线。
即,如果您的图表是一条线,由 y = 2*x+100 描述(这是 1999 年的超级 IT 股票!),并且您的参考线目前在 y = 120,我想您将不得不求解方程系统120 = 2*x + 100 以获得 refline 和图形相交处的 x。