相关疑难解决方法(0)

UIBezierPath相交

我一直在寻找一个小时的答案,但很难找到关于这个主题的任何内容.

我有一个与Objective-c相关的问题.我正在制作一个应用程序,其中UIView检查来自用户的触摸,如果用户触摸并移动他/她的手指,则绘制使用UIBezierPath的路径.如果用户绘制以使路径自身相交,则它应从屏幕上消失.当用户完成绘制图案时,路径中最后一个点的一条线应自动连接到路径中的第一个点(我正在使用方法"closePath"),如果此线与另一个"线"相交"在路径中,路径也应该从屏幕上消失.

我将每个触摸点存储在CGPoint中,我将其存储在另一个名为Line的类中作为A点和B点.然后我将"line"保存到名为"lines"的NSMutableArray中.每次将一个点添加到路径时,我都会检查该点与它之前绘制的点之间的线是否与行中的任何"行"相交( - (BOOL)checkLineIntersection:(CGPoint)p1 :(CGPoint)p2:(CGPoint)p3:(CGPoint)p4)我从本教程中获得"http://www.iossourcecode.com/2012/08/02/how-to-make-a-game-like-切的绳部分-2 /".

问题

问题是,当我运行应用程序时,它有时会起作用,但有时当我绘制时,线条与路径相交并不会消失.我无法弄清楚为什么......当我慢慢画画时,似乎更常见.

代码:

MyView.h:

#import <UIKit/UIKit.h>
#import "Line.h"
@interface MyView : UIView {

NSMutableArray *pathArray;
UIBezierPath *myPath;
NSMutableArray *lines;
Line *line;
} 

@end
Run Code Online (Sandbox Code Playgroud)

MyView.m:

#import "MyView.h"

@implementation MyView


- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Initialization code
    pathArray=[[NSMutableArray alloc]init];

}
return self;
}

- (void)drawRect:(CGRect)rect
{
[[UIColor redColor] setStroke];
[[UIColor blueColor] setFill];

for (UIBezierPath *_path in pathArray) {
    //[_path fill];

    [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
}

#pragma mark - Touch …
Run Code Online (Sandbox Code Playgroud)

algorithm drawing objective-c intersect uibezierpath

7
推荐指数
1
解决办法
4316
查看次数

斯威夫特:有没有一种简单的方法来绘制形状并检测它们是否相交?

有没有一种简单的方法可以在Swift中绘制形状(最好使用Sprite-Kit),然后检测它们是否相交以及它们相交的位置?就像这里是一个相交的形状:

在此输入图像描述

intersection ios sprite-kit swift

6
推荐指数
1
解决办法
2435
查看次数