2014-10-31 33 views
0

我需要獲得一些向量形狀的路徑,該向量形狀被轉換爲貝塞爾曲線。我有一個512x512 px畫布,中間是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)

有沒有辦法得到這樣的路徑?

+0

貝塞爾曲線上的第一個和最後一個點總是在曲線上,但中間控制點可能離曲線很近。中間控制點「影響」曲線而不是在曲線上。因此,您可以輕鬆看到512x512座標之外的控制點。沒有問題。 – markE 2014-10-31 15:48:40

回答

0

我已經從CorelDraw解碼.svg中的路徑。首先,Corel和大多數圖形編輯器都有笛卡爾座標系(點[0,0]位於左下角)。另一方面,SVG與左上角的起始點有不同的系統。從這裏,當我有大小爲512x512像素的畫布並將鼠標放在它上面時,我會在SVG路徑中看到一個點座標,例如[128,312],它將是點[128,200]。見下面的圖片。

Carthesian coordinate systemSVG

接着,路徑繼續L-89,8385 -46,3289 C-22,9477,33,0922 -35,7249,54,9238 -38,4096,65,4971。 這意味着Line to point,它在x軸上是89.84 px,在y軸上是46.33 px。所以你基本上從當前最後一點的座標中扣除那些數字。最後,C平均曲線,精確的立方Beziér曲線。這很奇怪。 -22,9477,33,0922表示x軸上的-22.95 px和控制點1上的y軸上的+33.09 px。如上所述,它是從最後一個曲線上的最後一個點計算出來的。接下來-35,7249,54,9238是針對也是從最後一個曲線的最後一個點計算的控制點2,而不是來自控制點1!最後-38,4096,65,4971屬於電流曲線的終點。 也許你注意到沒有提到曲線的起點。起點當然是最後一條曲線/線的終點...

到了最後,你可以在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和終點。

希望這會幫助別人。