2011-03-22 49 views
0

我有一个由用户绘制的三角形,所有点都存储在一个n数组中。然后我想用这些数据的直线绘制一个“正确”的三角形。任何人都可以指向正确的方向。另一种方法是强制用户在三条单独的线上绘制三角形,并使用每条线的起点和终点绘制三角形 - 但我宁愿避免使用这种方法。从点列表直线创建三角形 - 用iPhone

所有帮助表示赞赏

问候

回答

4

Bjarke,

至于你绘制三角形是相当简单的。您可以使用UIBezierPaths或CGPaths完成图纸:

UIBezierPath *triangle = [UIBezierPath bezierPath]; 
[triangle moveToPoint:firstPoint]; 
[triangle addLineToPoint:secondPoint]; 
[triangle addLineToPoint:thirdPoint]; 
[triangle addLineToPoint:firstPoint]; 
[triangle stroke]; // [triangle fill] would work too 

至于搞清楚这点是你的顶点,这是涉及更复杂一点,非常的数学。有两件事可以帮助:

1)一旦顶点被击中,线的斜率将会改变。因此,您可以检查每个点与前一点的关系,并且如果斜率(delta x/delta y)与前一个斜率不同(在原始三角形的手工绘制的合理范围内),则最有可能达到顶点。

2)顶点(在大多数情况下)是三角形的末端(最小/最大x和y)。但是,在某些情况下,情况并非如此,这使得这种情况不太可靠。

干杯。

+0

嗨,感谢您的回复,这正是我所看到的方法。但为了加快速度,我会让用户绘制三条独立的线,并使用起点和终点来创建三角形。此后,当所有人都在工作时,我会进一步研究这一点。 – Bjarke 2011-03-23 07:26:21