4方向のグラデーション塗りつぶしに最適なモデルを見つけようとしています。私の最新モデルはこのフィドルです:
<svg height="360" width="400" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<clipPath id="C">
<path d="M 100 200 L 300 58 L 400 250 L 300 341 Z" />
</clipPath>
<radialGradient id="G1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(255,0,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G2" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,255,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G3" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,0,255); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
<radialGradient id="G4" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(255,255,0); stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(128,128,64); stop-opacity:0" />
</radialGradient>
</defs>
<ellipse cx="100" cy="200" rx="200" ry="200" clip-path="url(#C)" fill="url(#G1)" />
<ellipse cx="300" cy="58" rx="200" ry="200" clip-path="url(#C)" fill="url(#G2)" />
<ellipse cx="400" cy="250" rx="200" ry="200" clip-path="url(#C)" fill="url(#G3)" />
<ellipse cx="300" cy="341" rx="200" ry="200" clip-path="url(#C)" fill="url(#G4)" />
</svg>
結果が付属しています:
しかし、<ellipse>
要素の順序を変更すると(このフィドルを参照):
<ellipse cx="100" cy="200" rx="200" ry="200" clip-path="url(#C)" fill="url(#G1)" />
<ellipse cx="300" cy="58" rx="200" ry="200" clip-path="url(#C)" fill="url(#G2)" />
<ellipse cx="300" cy="341" rx="200" ry="200" clip-path="url(#C)" fill="url(#G4)" />
<ellipse cx="400" cy="250" rx="200" ry="200" clip-path="url(#C)" fill="url(#G3)" />
結果は次のように変更されます。
つまり、透明度は同じ方法で計算されません。要素の順序に関係なく、常に同じ結果で透明度を計算してもらいたいです。この問題の解決策は何ですか?