获取线和任何iphone交叉点的坐标

时间:2012-10-15 15:40:01

标签: iphone ios coordinates

我想自己创建一个动态图表。 但我最大的问题是如何获得一条线与我的图形的交点坐标(假设只是一条线)?

像iPhone中的Stock App之类的东西,在这个应用程序中,如果你看一下图表,当你在屏幕上移动手指时,你会看到线条和图形交叉点的坐标。

感谢您的帮助 抱歉我的英语:)

3 个答案:

答案 0 :(得分:0)

要使用与您的问题相同的示例,要在此问题上执行与iPhone上的Stocks App类似的操作,这很容易:

  • 当用户触摸视图时,您会在视图上获得触摸的坐标(CGPoint pt = [[touches anyObject] locationInView:yourView]
  • 然后在图表上的某个点的视图坐标中转换此点:您可能知道绘制图表的横坐标X = 0的点,以及表示横坐标X = XMax的点也在哪里,所以简单数学你可以确定你的触摸的X位置对应的横坐标
  • 然后,如果您的横坐标X对应于您的触摸点,则您拥有所有内容(曲线上与此X对应的Y由图表的dataSource指定)

因此,假设您在图表上绘制了一些函数y=sin(x),并且因为您的Y轴宽20点,可以绘制Y轴标签,表示X = 0的点在{{1在你的UIView上。并且假设你的X轴从0到10,你的X = 10的点在你的视图上的x=20pt处被描绘出来。

然后,当用户点击视图中x坐标为x=300pt的点时,很容易计算它对应于图表上的坐标X = 5(x=140pt,简单三条规则)。因此,用户点击了与X = 5对应的点,而在曲线上,(x-20)/(300-20)*Xmax = 120/240*10 = 5的点为X=5,因为曲线为Y=sin(5)

答案 1 :(得分:0)

从我的头脑中,天真地忽略了图表显示程序通常如何做到这一点(即某种图形“最佳实践”):

假设你的图形由许多(线性)线组成,由法线方程y = kx + m描述,我想你必须解决你的参考线(让我们称之为refline)的方程式具有与构成图形的线相同的x和y坐标。

也就是说,如果您的图表是一行,由y = 2 * x + 100描述(这是1999年的超级IT股票!),而您的参考线目前在y = 120,我猜您必须解决方程系统120 = 2 * x + 100,得到x为refline和图形相交的位置。

答案 2 :(得分:0)

猜猜你可以使用线性代数技能获得线对线交点坐标,例如维基百科知道的内容:http://en.wikipedia.org/wiki/Line-line_intersection