math - 给定二维空间中的一组线,如何将它们截断到边界内?

标签 math go geometry line

背景:

嘿嘿!我正在尝试生成一个电路板,上面印有旧金山的一个子集。大部分工作都已完成,我正在生成如下所示的图像:

Rendered San Francisco

问题是我渲染的线延伸到我的硬编码截止边界之外(我渲染的线一侧在边界内,另一侧在边界外)。

问题:

给定一组这样的行:

# x1,y1,  x2,y2
10,10,40,40
80,80,120,120

如何修改每条线的坐标,使其在特定边界处“截断”?

在上面的例子中,第二行(以原始形式)延伸到 (120,120),假设边界为 100,100,应该只延伸到 (100,100)。

想法

根据我记得的高中数学知识,我应该在公式 y=mx+b 中代入一些东西是吗?即便如此,我将如何处理无限梯度等?

感谢您提供的所有帮助 :D Puesdocode/python/Go 更受欢迎,但解释也很慷慨。

<3 汤姆

最佳答案

您最好的 friend 是 Cohen–Sutherland 剪线算法。

https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm

关于math - 给定二维空间中的一组线,如何将它们截断到边界内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728950/

相关文章:

algorithm - 通过给定点的线

python - 在 Sympy 中设置变量相对于其他变量的假设

for-loop - 在 for 循环中使用 AtoI 时出错

algorithm - 拼图 : Find largest rectangle (maximal rectangle problem)

Javascript - 更改数量时调整价格

math - 分割贝塞尔曲线

javascript - Three.js:围绕物体的旋转?

javascript - 如何使用 d3.js 在圆内创建 voronoi 图

json - 在Go中将类似JSON的字符串转换为struct

go - 将 Websocket 消息发送到 Go 中的特定 channel (使用 Gorilla)