0
我有一个由用户绘制的三角形,所有点都存储在一个n数组中。然后我想用这些数据的直线绘制一个“正确”的三角形。任何人都可以指向正确的方向。另一种方法是强制用户在三条单独的线上绘制三角形,并使用每条线的起点和终点绘制三角形 - 但我宁愿避免使用这种方法。从点列表直线创建三角形 - 用iPhone
所有帮助表示赞赏
问候
我有一个由用户绘制的三角形,所有点都存储在一个n数组中。然后我想用这些数据的直线绘制一个“正确”的三角形。任何人都可以指向正确的方向。另一种方法是强制用户在三条单独的线上绘制三角形,并使用每条线的起点和终点绘制三角形 - 但我宁愿避免使用这种方法。从点列表直线创建三角形 - 用iPhone
所有帮助表示赞赏
问候
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)。但是,在某些情况下,情况并非如此,这使得这种情况不太可靠。
干杯。
嗨,感谢您的回复,这正是我所看到的方法。但为了加快速度,我会让用户绘制三条独立的线,并使用起点和终点来创建三角形。此后,当所有人都在工作时,我会进一步研究这一点。 – Bjarke 2011-03-23 07:26:21