- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法找出两个 CGPathRef 是否相交。就我而言,所有 CGPath 都有 closePath。
例如,我有两条路径。一条路径是旋转一定角度的矩形,另一条路径是弯曲路径。两条路径的原点会经常变化。在某些时候它们可能会相交。我想知道它们什么时候相交。如果您有任何解决方案,请告诉我。
提前致谢
最佳答案
将一条路径设为剪切路径,绘制另一条路径,然后搜索在剪切过程中幸存下来的像素:
// initialise and erase context
CGContextAddPath(context, path1);
CGContextClip(context);
// set fill colour to intersection colour
CGContextAddPath(context, path2);
CGContextFillPath(context);
// search for pixels that match intersection colour
这是有效的,因为裁剪 = 相交。
不要忘记,交集取决于内部性的定义,而内部性的定义有多种。此代码使用绕数填充规则,您可能需要偶数规则或其他规则。如果内在性不会让你彻夜难眠,那么这段代码应该没问题。
我之前的回答涉及将透明曲线绘制到 RGBA 上下文。该解决方案优于旧解决方案,因为它是
谁能要求更多?
我想您可以要求一个完整的实现,准备好剪切和粘贴,但这会破坏乐趣并混淆原本简单的答案。
较旧、较难理解且效率较低的答案
以 50% 的透明度单独将两个 CGPathRefs
绘制到归零、CGBitmapContextCreate
-ed RGBA 内存缓冲区中,并检查是否有任何像素值 > 128 . 这适用于任何支持 CoreGraphics 的平台(即 iOS 和 OSX)。
伪代码
// zero memory
CGContextRef context;
context = CGBitmapContextCreate(memory, wide, high, 8, wide*4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
CGContextSetRGBFillColor(context, 1, 1, 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 buffer
if(*p > 128) return true; // curves intersect
else p+= 4; // keep looking
让光栅化版本的分辨率成为您的精度,并选择适合您的性能需求的精度。
关于iphone - CGPathRef 交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1021801/
我有这个代码: CGPathRef cgPath = [path quartzPath]; self.blackLine.path = cgPath; self.whiteDashe
有没有办法找出两个 CGPathRef 是否相交。就我而言,所有 CGPath 都有 closePath。 例如,我有两条路径。一条路径是旋转一定角度的矩形,另一条路径是弯曲路径。两条路径的原点会经常
我的SKSpriteNode在逆时针方向上遵循此路径,我如何使其沿顺时针方向遵循路径? 提前致谢! CGPathRef circle = CGPathCreateWithEllipseInRe
我是 cocoa 核心图形的新手。我有一张鸡蛋的图片,我正在使用 Sprite 工具包来模拟鸡蛋自由落体的物理现象。我需要设置鸡蛋的 physicsBody 属性。如何为此目的创建一个椭圆形的 CGP
我们如何获取特定字符串的路径?我刚发现 CTFontCreatePathForGlyph 会给出 CGPathRef ,但它会是文本的轮廓。例如字母“O”我从上面的方法得到的路径就像一个圆圈..看看我
请问我们怎样才能得到法语字母的特定阿拉伯语路径?我刚刚发现 CTFontCreatePathForGlyph 会给 CGPathRef 之类的,但它会是文本的轮廓。 我需要这个真实的文本路径来显示文本
我正在使用 SKShapeNodes 通过在用户触摸屏幕时更新路径属性来动态绘制线条。这条线完成后,我想在路径的末端附加一条新的固定长度垂直线。 我已经研究了 CGAffineTransform 以根
所以我有一个 SKSpriteNode,它应该从屏幕中间拖动,放开,然后平滑地流到最近的角(或者更确切地说,从最近的角在每个轴上 10 个点)。 我使用的方法应该返回一个 CGPathRef,原点在节
我试图通过 CGPathRefs 将文本分成所有不同的部分。例如,L 有一条路径,而 ?有两个(点和其余部分)。 目前,我能够将每个字母作为路径,但是在“?”的示例中该路径同时包含点和其余部分。我想将
我正在寻找一些算法或某种方式,甚至是一些引用资料,它们可以让我从 CGPathRef 生成一组矩形。 考虑以下情况: 在路径中添加一个矩形 CGMutablePathRef pathref = CGP
在我的 iOS 游戏中,我试图沿着路径移动对象(见下文): 我想将上面的三角形移动到框的底部。 但是我不知道如何很好地使用CGPathRefs。这是我正在尝试的: CGMutablePathRef p
在 iOS 中,有两个 C 结构表示描述可绘制形状的路径:CGPathRef 和 CGMutablePathRef。从他们的名字看来,CGPathRef 指的是一旦创建就不能更改的路径,而 CGMut
我有一个由 n 个重叠矩形创建的 CGPath。是否有 API 可以获取原始路径的新路径?或者是否可以通过填充原始路径或创建剪切路径来做一些聪明的事情? 做不到这些,您能推荐一本关于 bool 路径运
我必须创建一个 CGPathRef 来模拟 Sprite Kit 中的物理属性。 我正在尝试通过一半圆形加一半椭圆形创建蛋形路径。鸡蛋的比例是0.4(半圆底部)到0.6(半椭圆上部);但是,我不知道为
有一种方法可以使用 CorelDraw 或 Adobe Flash 等应用程序绘制复杂的形状,将其保存或导出为 PDF,然后在 iOS 中使用 Core Graphics 打开它。这个想法是,用
是否可以对 CGPathRef 变量进行编码?我的意思是 CGPathRef 变量有类似 encodeObject:forKey 的方法吗? 最佳答案 是的,有 - 我已经这样做了:https://g
大家好我一直在 map 应用程序中工作,我需要在两个位置之间绘制路线,我也有路线坐标(使用 google Direction api)并将其保存在一个数组中,现在我只需要要做的是从点数组创建路径,稍后
给定一个CGPathRef,如何找到沿路径的 1/3 点? 我正在开发一款纸牌游戏,想向玩家展示他们的牌呈扇形展开的弧形。它们的间距应该相等,具体取决于它们拥有的卡片数量。 谢谢 最佳答案 不要尝试为
在 Apple 文档中,他们为您提供了如何将 NSBezierPath 转换为 CGPathRef 的代码。我需要反过来转换,从 CGPathRef 到 NSBezierPath。 UIBezierP
鉴于我有一个 CGPathRef,或一个 UIBezierPath,或其他一些等效的 iOS 表示,是否有内置的库函数可用于计算剪辑这个对象给我? 我特别需要针对轴对齐的矩形进行裁剪。 如果能够针对另
我是一名优秀的程序员,十分优秀!