如何生成“粗”的贝塞尔曲线?

2023-12-23

我正在寻找一种通过“加厚”贝塞尔曲线以编程方式生成多边形的方法。像这样的东西:

我最初的想法是找到直线中的法线,并从中生成多边形:

但问题是法线可能会以陡峭的曲线相互交叉,如下所示:

是否有任何公式或算法可以从贝塞尔曲线生成多边形?我在互联网上找不到任何信息,但也许我搜索时使用了错误的词语......


如果您想要恒定的厚度,这称为偏移曲线,并且您使用法线的想法是正确的。

这确实带来了两个困难:

  1. 偏移曲线不能完全表示为贝塞尔曲线;您可以使用折线代替,或者将贝塞尔曲线改造为折线;

  2. 当曲率半径变得小于偏移宽度时,确实会出现尖点。您必须检测折线的自相交。

据我所知,没有简单的解决方案。

有关更多信息,请检查38. 曲线偏移 https://pomax.github.io/bezierinfo/#offsetting.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成“粗”的贝塞尔曲线? 的相关文章

  • Three.js 中的文本几何

    我在 Three js r74 中的 TextGeometry 遇到一些问题 我该如何正确实施 这是我的代码笔 codepen io cheesyeyes pen eJqZxK 提前致谢 好吧 对于每个正在寻找简单答案而不是链接和其他超载示
  • 这段用于确定圆和线段是否相交的代码正确吗?

    显然很难找到一条线是否存在的答案segment和圆相交 例如 如果你用谷歌搜索 你会发现这个问题 https stackoverflow com questions 1073336 circle line segment collision
  • 如何使用 start 和 endAngle 渲染 svg 圆

    我使用 start 和 endAngle 渲染了 svg 圆 效果很好 但是当我渲染完整的圆 startAngle为70 endAngle为70 时 输出有很大的不同 0 90 180 270除外 我为这段代码做错了什么 function
  • 如何为浏览器生成CMY三角形? (CSS、SVG、画布?)

    我正在尝试为一个项目生成一个 CMY 三角形 我希望能够使用 css svg 或 canvas 直接在网络上渲染它 根据 Amelia 的评论 我尝试构建一个 CSS SASS 类来用线性渐变渲染三角形 triangle include b
  • 如何在不进行昂贵的预计算的情况下以恒定速度沿着贝塞尔曲线移动?

    请原谅我的长代码示例 但我无法弄清楚如何用更少的代码正确解释我的问题 let c document querySelector canvas let ctx c getContext 2d class BezierCurve constru
  • 自定义圆形视图。放置视图

    昨天我尝试创建一个自定义视图 其中所有元素 像按钮 图像按钮 被放置在一个圆圈周围 间距相等 我的目标是得到这个 我尝试了这段代码 public class CircleView extends RelativeLayout private
  • 基于正方形瓷砖直角三角形象限的坐标系中的边界框

    我正在为游戏创建一个基于图块的 2D 地形系统 然而 我还使用游戏中的坐标 需要能够将边界框映射到 图块坐标 中 并点击边界框接触的每个图块 不用担心 有一个 kd 树和所有工作 美好的 使用定点 真实世界 坐标 我可以将每个图块计为 2
  • 如何确定多边形点列表是否按顺时针顺序排列?

    有了一个点列表 如何找到它们是否按顺时针顺序排列 例如 point 0 5 0 point 1 6 4 point 2 4 5 point 3 1 5 point 4 1 0 会说它是逆时针的 或者对某些人来说是逆时针的 对于非凸多边形 例
  • 为什么 Point 和 Rectangle 不能用作可选参数?

    我试图将一个可选参数传递给一个几何函数 称为offset 可能会或可能不会指定 但 C 不允许我执行以下任何操作 有办法做到这一点吗 默认为空 错误 类型的值无法用作默认参数 因为没有到 System Drawing Point 类型的标准
  • 在iOS开发中,使用Core Graphics和/或Quartz 2D,如何绘制一个充满渐变的圆,使其看起来像一个球体?

    到目前为止 我已经研究过使用 CGContextDrawLinearGradient 和 CGContextDrawRadialGradient 但是 对于前者 我无法弄清楚如何使渐变看起来像球体 对于后者 我无法弄清楚如何使渐变成球体形状
  • 笛卡尔坐标到极坐标

    看一下这里的例子 http www brianhare com physicals so html http www brianhare com physics so html 看一下 console log 我在其中使用了这两个主要函数
  • 二维几何:如何检查点是否在角度内

    我有以下二维几何问题 我有一个点 从该点投射一个无限角度 2D 锥体 该角度由方向和角度给出 该点和方向形成一个向量 并且角度的每一侧一半形成 2D 锥体 现在我想检查 2D 中的另一个点是在这个圆锥体内部还是外部 如何才能实现这一目标 谢
  • 投影 3D 网格的 2D 轮廓算法

    给定 一个 3D 网格 由一组顶点和三角形定义 并用这些点构建网格 问题 找到任意平面上投影的任意旋转网格的二维轮廓 投影很容易 挑战在于找到平面中投影三角形边的 外壳 我需要一些有关研究该算法的输入 指针的帮助 为简单起见 我们可以假设
  • 优雅的折线“左移”测试

    Given X Y 坐标 即车辆的位置 X Y 数组 它们是折线中的顶点 请注意 折线仅由直线段组成 没有圆弧 我想要的是 计算车辆是在折线的左侧还是右侧 当然还是在顶部 我的做法 迭代所有线段 并计算到每个线段的距离 然后 对于最近的段
  • 如何从一组重叠的圆计算多边形集?

    这个问题是一些计算细节的扩展这个问题 https stackoverflow com questions 1667310 combined area of overlapping circles 假设有一组 可能重叠的 圆 并且希望计算这组
  • 包围一组点的多边形

    我有一组 S 点 2D 由 x 和 y 定义 我想找到 P 包围该组所有点的最小 含义 具有最少数量的点 多边形 P 是S 有没有已知的算法来计算这个 我在这个领域缺乏文化令人惊讶 感谢您的帮助 对于这个问题有很多算法 它被称为 最小边界框
  • Three20中的TTSpeechBubbleShape仅绘制“语音”三角形顶部和底部

    因此 我将 Three20 库用于 iPhone 应用程序 并希望将 TTSpeechBubbleShape 样式用于视图 但三角形似乎不想画在左边或右边 我在源代码中看到它有很多几何图形 并且想知道是否有人解决了这个问题或知道如何解决它
  • 如何从矩形点计算旋转角度?

    我有4分1 2 3 4闭合一个矩形 这些点按以下方式排列在数组中 x1 y1 x2 y2 x3 y3 x4 y4 我遇到的问题是矩形可以旋转一定角度 如何计算原始点 灰色轮廓 和角度 我试图在 javascript css3 transfo
  • 为什么我的圈子值为零?

    这是我的 Circle 类代码 class Circle private double radius private double area public Circle double radius this radius radius pu
  • 快速计算三角形与单位正方形的交面积

    在我当前的项目中 我需要计算无限网格中三角形和单位正方形的交集面积 对于每个三角形 由三对浮点数给出 我需要知道面积 在区间内 0 1 它与它相交的每个正方形都有共同点 现在我将两者 三角形和正方形 转换为多边形并使用Sutherland

随机推荐