如何判断这些点是逆时针还是顺时针连接?
我在GameScene.m
:
CGFloat radius = (self.frame.size.width - 6) / 2;
CGFloat a = radius * sqrt((CGFloat)3.0) / 2;
CGFloat b = radius / 2;
UIBezierPath *pathFirstTrigon = [UIBezierPath bezierPath];
[pathFirstTrigon moveToPoint:CGPointMake(0, -radius)];
[pathFirstTrigon addLineToPoint:CGPointMake(a, b)];
[pathFirstTrigon addLineToPoint:CGPointMake(-a, b)];
[pathFirstTrigon closePath];
答案 0 :(得分:0)
可以从签名区域推断出方向。您可以从连续点的叉积之和计算签名区域:
2 * area = (0, -radius) x (a, b) + (a, b) ⨯ (-a, b) + (-a, b) ⨯ (0, -radius)
使用2D交叉产品的定义:
(a, b) ⨯ (c, d) = a * d - b * c
这会让你:
area = a * radius + a * b
使用area
的符号确定路径是顺时针还是逆时针(哪一个指的是哪个符号取决于您的坐标系)。
答案 1 :(得分:0)
你所拥有的是类似的东西:
Y
(-a,b) ^ (a,b)
+ | +
|
|
|
|
--------+---------> X
|
+ (0,r)
|
因此它在标准坐标系上是逆时针的。