问题标签 [bezier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
555 浏览

graphics - 计算曲面的地平线?

我需要找到一个曲面的视觉地平线的 2 个点。

我有:

  • 4 个角点的 XYZ
  • 2 个弯曲边缘贝塞尔点的 XYZ

我需要计算:

  • 水平点的 XY
  • 水平点的 XYZ
0 投票
3 回答
1352 浏览

language-agnostic - 将二次曲线点转换为多项式表示?

我有二次贝塞尔曲线的 2 个端点和 1个贝塞尔点的 X、Y。

使用这些数据,我如何推导出曲线的多项式表示?

替代文字
(来源:euclidraw.com

0 投票
3 回答
896 浏览

graphics - 计算曲面的地平线?- 不是极值

我需要找到一个曲面的视觉地平线的 2 个点。

我有:

  • 4 个角点的 XYZ
  • 2 个弯曲边缘贝塞尔点的 XYZ

我需要计算:

  • 2 个水平点的 XY
  • 2 个水平点的 XYZ

注意:上次问这个问题时得到了一个解决方案,但它只找到曲线的极值,而不是水平点,它会根据两条曲线相对于彼此的位置和旋转而变化。

0 投票
10 回答
137524 浏览

java - 如何将 3D 点转换为 2D 透视投影?

我目前正在使用贝塞尔曲线和曲面来绘制著名的犹他茶壶。使用 16 个控制点的 Bezier 补丁,我已经能够绘制茶壶并使用“世界到相机”功能显示它,该功能可以旋转生成的茶壶,目前正在使用正交投影。

结果是我有一个“扁平”茶壶,这是预期的,因为正交投影的目的是保留平行线。

但是,我想使用透视投影来给茶壶深度。我的问题是,如何获取从“世界到相机”函数返回的 3D xyz 顶点,并将其转换为 2D 坐标。我想在 z=0 处使用投影平面,并允许用户使用键盘上的箭头键确定焦距和图像大小。

我正在用java编程并设置了所有输入事件处理程序,并且还编写了一个处理基本矩阵乘法的矩阵类。我已经阅读了一段时间的维基百科和其他资源,但我不太了解如何执行这种转换。

0 投票
2 回答
1732 浏览

bezier - 近似 N 次贝塞尔曲线

我知道有逼近三次贝塞尔曲线的方法(这个页面也是一个很好的参考),但是有没有更快的方法来逼近 N 度的贝塞尔曲线?还是只能使用下面的概括?

来自维基百科:

n次贝塞尔曲线可以概括如下。给定点 P0、P1、...、Pn,贝塞尔曲线为:

替代文字

0 投票
6 回答
8296 浏览

iphone - 如何获得 CGPath 曲线或四边形曲线中的所有点

我使用该方法制作了一条四边形曲线路径CGPathAddQuadCurveToPoint。我得到了完美的路径。但是,我想知道参与路径的所有坐标点。

有没有办法检索路径中的所有坐标点?

如果没有,您是否有任何其他解决方案可以在数学上检索曲线中的所有点。

在此先感谢, Vamshi

0 投票
5 回答
4635 浏览

language-agnostic - 点相对于贝塞尔曲线的位置

我有一条由 4 个点指定的贝塞尔曲线。我需要知道一个点是在贝塞尔曲线的左侧还是右侧。你能给我推荐一个算法吗?

编辑:我确信我生成贝塞尔曲线的方式不会形成循环。

后来编辑我意识到我最初的问题可以在不使用相对位置的情况下解决。当我发布这个问题时,我在想有一个相对位置的数学公式,类似于检查一个点是否在圆的内部。似乎这是不可能的。所以我会接受答案,这将提出一个省时的解决方案。

0 投票
3 回答
3001 浏览

algorithm - 样条曲线有多少个点

H社区,

我想问是否有一种算法可以选择最佳数量的支持点来创建贝塞尔样条曲线,以使其看起来平滑并减少错误。如果有这样的算法,算法有多快?

提前致谢

塞巴斯蒂安

0 投票
3 回答
1966 浏览

iphone - 使用 CoreGraphics 查找二次贝塞尔曲线的最小值/最大值

我正在使用 CoreGraphics 绘制二次贝塞尔曲线,但想计算曲线的最小值/最大值。我不是数学背景,所以这变得有点麻烦。有没有人有任何关于如何解决这个问题的文章或想法?

0 投票
3 回答
3045 浏览

actionscript-3 - 在 Actionscript 3 中将像素转换为贝塞尔曲线

好的,所以我会尽量做到描述性。

我正在为需要上传图像的 jibjab 样式遮罩功能的客户开发一个项目。

我希望能够生成一个包含贝塞尔形状的锚点/控制位置的数据库可存储对象,因此我可以稍后将其拉出并重新屏蔽该对象。这一切都很容易做到,除了一个问题:我需要从用户绘制的轮廓创建贝塞尔对象。

到目前为止,这是我想象的过程:

在鼠标按下时,创建一个新的精灵、beginFill 和 moveTo 鼠标位置。

在鼠标移动时,lineTo 是一个 XY 坐标。

在鼠标上,endFill。

这一切都很好。我可以在这里存储信息,但我会看到一个巨大的对象,里面装满了大量非常无用的 x/y 坐标,除了在每个像素上放置句柄之外,没有办法真正进行微调更改。(我不妨给最终用户一个铅笔工具......)

就贝塞尔曲线计算而言,这就是我的想法:

1:弄清楚何时需要开始一条新曲线,并在此间隔上跟踪像素的 xy。我想象这只是一个像素数,也许只是在每次鼠标移动时增加一个计数变量,然后每 x 个像素创建一个新变量。这里的问题是一些曲线不准确,而另一些则不必要,但我真的只需要一个一般区域,而不是一个精确的表示,所以它可以工作。不过,我会更高兴一些更聪明的东西。

2:获取每个新的 x/y,将其存储为锚点,并计算出控件将在何处生成此锚点和最后一个锚点之间的直线曲线。这是我真正挂断电话的地方。我敢肯定有人已经在 Flash 中完成了这项工作,但似乎再多的谷歌搜索也无法帮助我找到完成这项工作的方法。我已经画了很多草图,还有什么小数学可以让我的大脑环绕,但似乎无法找到将像素转换为贝塞尔曲线的方法。

这可能吗?我真正需要的是接近相同形状的东西。我正在考虑可能只在下一个像素的角度相对于当前线或其他东西的角度超过 180 度时才放置锚点,并且只是抓住这些变化之间的弧线边缘,但无论我多么努力,我似乎无法弄清楚如何让它工作!

感谢您的帮助,我一定会在这里发布我的进展,我认为这在许多应用程序中都非常有用,只要它实际上是可行的......

杰西