gpt4 book ai didi

ios - 简单 2D "collision detection"iOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:46 29 4
gpt4 key购买 nike

我正在编写一个应用程序,它将计算 CGPoint 并在信封中显示一个标记(如果您愿意,可以是图表)。我的信封只是 UIImageView 中背景图像的一部分。我想要做的是构造一种“线”,对应于包络线限制(它们不是直线,而是曲线),这样如果计算出的 CGPoint 位于这条线的左侧,或者位于另一行,则计算点不被批准。如果它位于这两者的中间,则它被批准。

我首先想到使用 CoreGraphics 绘制线条,但我不确定是否可以检查计算出的 CGPoint 是在这些线条的右侧还是左侧。

信封只有 149px 高,所以我也在考虑整理一个字典,其中 y 位置的键和代表定义边界线的像素的 x 位置的值。

该应用程序相当简单,没有任何动画。有没有人知道如何最好地为这种行为提出解决方案?

最佳答案

您可以通过创建代表您的边界线(包络线的轮廓)的 CGPath 并使用 CGPathContainsPoint 测试其中是否包含一个点来实现此目的。

您必须反复试验才能构建与您的信封形状匹配的 CGPath,尝试将其填充到 drawRect 方法中以查看您的路径实际是什么。

这是一个圆形路径的例子:

CGPoint viewCenter = CGPointMake(100,100);
CGPoint checkPoint = CGPointMake(110,110);
UIBezierPath *bpath = [UIBezierPath bezierPathWithArcCenter:viewCenter radius:50 startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:YES];
CGPathRef path = [bpath CGPath];
BOOL inPath = CGPathContainsPoint(path, NULL, checkPoint, NO);

这里我定义了 DEGREES_TO_RADIANS:

#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)

关于ios - 简单 2D "collision detection"iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049614/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com