我是SVG的初學者。通過預定點的SVG曲線
我需要一個SVG曲線來通過點列表。它是用C++計算的數學函數,輸出結果應該寫入SVG文件。我的問題是SVG中的path
標記沒有通過所有點。相反,它在中間跳過其中的一部分,並傾向於它們。 SVG是否有任何工具可以將曲線通過整個點並以自動方式適當彎曲曲線?
<svg height="400" width="450">
<path d="M 80 90 C 190 40, 300 60, 380 160" stroke="blue" stroke-width="5" fill="none" />
<path d="M 80 90 L 190 40, 300 60, 380 160" stroke="green" stroke-width="1" fill="none"/>
<g stroke="black" stroke-width="3" fill="black">
<circle id="pointC" cx="80" cy="90" r="3" stroke="black"/>
<circle id="pointA" cx="190" cy="40" r="3" stroke="green"/>
<circle id="pointC" cx="300" cy="60" r="3" stroke="red"/>
<circle id="pointB" cx="380" cy="160" r="3" stroke="blue"/>
</g>
Sorry, your browser does not support inline SVG.
</svg>
請讓我知道,如果我正確理解catmull-rom。對於諸如P0和P1的端點,控制點是(2/3)P0 +(1/3)P1,對於其餘點,例如Pa,Pb,Pc的結果,Pb之前的控制點是Pb +(1/6)*(Pa-Pc),Pb後的控制點爲Pb +(1/6)*(Pc-Pa)。我對麼? – barej
@OP:是的。那是對的。但是,列出的公式適用於統一的Catmull Rom樣條,它假定數據點的統一參數化(即t0 = 0.0,t1 = 1.0,t2 = 2.0,...等)。使用Centripetal Catmull Rom樣條(參考Wiki頁面)會更好,當數據點分佈不均勻時,可以產生更好的結果。 – fang