【问题标题】:How to get path of Bezier curves with coordinates of decimal value如何获取具有十进制值坐标的贝塞尔曲线的路径
【发布时间】:2014-12-27 20:23:24
【问题描述】:

我需要得到一些向量形状的路径,它被转换成贝塞尔曲线。我有一个 512x512 像素的画布,中间有 350x350 像素的字母“R”。我需要以某种方式导出贝塞尔曲线点的坐标。

所以我有一个坐标从 0,0 到 511,511 的画布,其中有一些形状。但是,当我在路径中将其保存为 *.svg 时,例如 (M 256.124 373.811 l-85.544 -46.3289 c -21.8516,33.0922 -34.017,54.9238)。

我了解 svg 坐标系与 carthesian 坐标系不同。实数接近想要的十进制数,但为什么会有负数

但我需要十进制格式的像素坐标,范围为 0,0 到 511,511。 例如(M 256 377 C 23 532 123 43 123 352)

有没有办法获得这样的路径?

【问题讨论】:

  • 贝塞尔曲线上的第一个和最后一个点将始终在曲线上,但中间控制点可能远离曲线。中间控制点“影响”曲线而不是在曲线上。因此,您可以轻松地看到 512x512 坐标之外的控制点。没问题。

标签: canvas graphics coordinates bezier coreldraw


【解决方案1】:

我已经从 CorelDraw 解码了 .svg 中的路径。

首先,Corel 和大多数图形编辑器都有笛卡尔坐标系(点 [0,0] 在左下角)。另一方面,SVG 有不同的系统,起点在左上角。由此,当我有大小为 512x512 像素的画布并将鼠标放在上面时,我看到一个点坐标是例如 SVG 路径中的 [128,312],它将是点 [128,200]。请看下面的图片。

接下来,路径继续 L-89,8385 -46,3289 C-22,9477,33,0922 -35,7249,54,9238 -38,4096,65,4971。 这意味着线到点,在 x 轴上小 89.84 px,在 y 轴上小 46.33 px。所以你基本上从当前最后一点的坐标中扣除了这些数字。

最后,C 平均曲线到,精确三次贝塞尔曲线。这很奇怪。 -22,9477,33,0922 表示控制点 1 的 x 轴上为 -22.95 px,y 轴上为 +33.09 px。如前所述,它是从最后一条曲线上的最后一个点计算的。接下来 -35,7249,54,9238 是控制点 2,也是从最后一条曲线的最后一个点计算出来的电流曲线。 也许你注意到没有提到曲线的起点。起点当然是最后一条曲线/直线的终点/...

到最后,你可以在 SVG 路径 -1,95237,7,5638 -6,18545,13,​​9241 -12,7772,19,0808 -6,59057,5,07167 - 11,3103,7,65002。这些是下一条曲线。没有字母 L、C、M 或任何其他字母,但它们是曲线,因为此时有 C 且没有其他字母。比你需要得到 3 个数字,如 -1,95237,7,5638 来获得下一个控制点 1、控制点 2 和终点。

希望这会对某人有所帮助。

【讨论】:

  • 谢谢,在您回答 7 年后确实帮助了我!
猜你喜欢
  • 2011-02-26
  • 2021-09-10
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多