首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逆时针cgpath/uibezierpath

逆时针cgpath/uibezierpath
EN

Stack Overflow用户
提问于 2018-05-01 14:29:39
回答 2查看 114关注 0票数 2

如何判断这些点是逆时针连接还是顺时针连接?我的GameScene.m中有以下代码

代码语言:javascript
复制
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];
EN

回答 2

Stack Overflow用户

发布于 2018-05-01 14:56:54

方向可以从带符号的区域中推断出来。您可以通过连续点的叉积和来计算有符号面积:

代码语言:javascript
复制
2 * area = (0, -radius) x (a, b) + (a, b) ⨯ (-a, b) + (-a, b) ⨯ (0, -radius)

使用2D叉积的定义:

代码语言:javascript
复制
(a, b) ⨯ (c, d) = a * d - b * c

这将为您提供:

代码语言:javascript
复制
area = a * radius + a * b

使用area的符号来确定路径是顺时针还是逆时针(哪个符号指的是哪个符号取决于您的坐标系)。

票数 0
EN

Stack Overflow用户

发布于 2018-05-01 23:37:42

您所拥有的内容类似于:

代码语言:javascript
复制
           Y
(-a,b)     ^    (a,b)
   +       |      +
           |
           |
           |
           | 
   --------+---------> X
           |
           + (0,r)
           |

所以它在标准坐标系下是逆时针的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50112245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档