例如,我有两条路.一条路径是以一定角度旋转的矩形,另一条路径是弯曲路径.两条路径的起源将经常变化.在某些时候,它们可能相交.我想知道它们什么时候相交.如果您有任何解决方案,请告诉我.
提前致谢
解决方法 将一条路径设为剪切路径,绘制另一条路径,然后搜索在剪切过程中幸存的像素:// initialise and erase contextCGContextAddpath(context,path1);CGContextClip(context);// set fill colour to intersection colourCGContextAddpath(context,path2);CGContextFillPath(context);// search for pixels that match intersection colour
这是因为裁剪=相交.
不要忘记,交叉点取决于内部性的定义,其中有几个.此代码使用了绕组数填充规则,您可能需要偶数奇数规则或其他内容.如果内在性不能让你夜不能寐,那么这段代码应该没问题.
我之前的回答涉及将透明曲线绘制到RGBA上下文.这种解决方案优于旧解决方案,因为它是
>更简单
>使用四分之一的内存作为8位灰度上下文就足够了
>不需要毛茸茸的,难以调试的透明度代码
谁还能要求更多?
我想你可以要求一个完整的实现,准备削减”””,但这会破坏乐趣并混淆一个简单的答案.
年纪较大,更难理解并且缺乏有效的答案
将50%透明度的CGPathrefs分别绘制到已归零的CGBitmapContextCreate-ed RGBA内存缓冲区中并检查任何像素值> 128.这适用于任何支持CoreGraphics(即iOS和OSX)的平台.
在伪代码中
// zero memoryCGContextRef context;context = CGBitmapContextCreate(memory,wIDe,high,8,wIDe*4,CGcolorSpaceCreateDeviceRGB(),kCGImageAlphaPremultiplIEdLast);CGContextSetRGBFillcolor(context,1,0.5); // Now everything you draw will be at 50%// draw your path 1 to context// draw your path 2 to context// for each pixel in memory bufferif(*p > 128) return true; // curves intersect else p+= 4; // keep looking
让光栅化版本的分辨率成为您的精度,并选择精度以满足您的性能需求.
总结以上是内存溢出为你收集整理的iphone – CGPathRef交集全部内容,希望文章能够帮你解决iphone – CGPathRef交集所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)