3

グラフ (線、棒、円) を描画するために SVG の小さなシステムで作業していますが、円グラフで奇妙な問題が発生しています... グラフのセクションが円の半分より小さい場合、関数は完全に機能し、すべてが正しく描画されます (下の画像を参照):

ここに画像の説明を入力

ただし、パイの一部が円の半分よりも大きい場合、円弧の中心が移動したかのように、その部分が間違って描画されます (下の画像を参照してください。赤い部分が「空の」円であることに注意してください。部分を描画する必要があります:部分が正しく描画されているかどうかを確認するために赤色で塗りつぶしています):

ここに画像の説明を入力

絶対パラメータを指定して SVG の「パス」関数を使用して、各パイ部分を描画しています。関数にいくつかのパラメーターを渡しています。

$circleCenter_ は、円の中心の X および Y 位置に対応します。$valPos[i][0-1] は、中心と円の 2 つの点 (部分が終了する場所) によって形成される三角形の各点の X と Y の位置を含みます。

私が使用している「パス」は次のとおりです。

<path d="M<?php echo $circleCenterX." ".$circleCenterY; ?> 
L<?php echo $valPos[$i][0][0].",".$valPos[$i][0][1] ?> 
A<?php echo $circleRadius.",".$circleRadius; ?> 0 0,1 <?php echo $valPos[$i][1][0].",".$valPos[$i][1][1]; ?> Z" 
(...) />

部分が円の半分よりも小さい場合に正常に機能する理由と、部分が円の半分よりも大きい場合に中心が「移動」しているように見える理由がわかりません。もちろん、 $circleCenter 変数は、円グラフ描画関数内で変更されることはありません...

これについての手がかりはありますか?

あなたの時間と労力を前もって感謝します! :)

4

1 に答える 1

0

部分のパーセンテージが 50% を超える場合は、大円弧フラグを 1 に設定する必要があります。

于 2013-09-03T11:26:22.107 に答える