gpt4 book ai didi

cocoa - NSBezierPath/线相交/展平

转载 作者:行者123 更新时间:2023-12-03 17:37:18 27 4
gpt4 key购买 nike

我目前正在将我的 jruby/java2d 图形绘制/布局应用程序移植到 macruby/cocoa。因此我需要获取开放的 NSBezierPath 与封闭的 NSBezierPath 的交点。

在 java2d 中我使用了以下技巧。我展平了两条路径,并对每一段进行了简单的线相交测试。

那么有没有一种简单的方法可以将 NSBezierPath 转换为一堆直线?

我当前的算法只是简单地走线(以二分搜索方式),直到找到 containsPoint 为 true 的 NSPoint。但它只适用于直线。我在 java2d 中实现的也适用于弯曲路径。

def getIntersection edge, path
out = edge.source
ins = edge.target
until (out.dist(ins) < 1.0)
mid = out + ((ins - out) * 0.5)
if (path.containsPoint (NSMakePoint(mid.x, mid.y)))
ins = mid
else
out = mid
end
end
return out
end

Graph

最佳答案

So is there a simple way to convert a NSBezierPath to a bunch of straight lines?

向路径发送 bezierPathByFlatteningPath 消息。这将返回一个新路径,并进行转换。

关于cocoa - NSBezierPath/线相交/展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366832/

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