が、これはかなり標準的な数学の質問です。
例:
たとえば、3つのオブジェクトを配置しようとしているとします。円には360度があります。したがって、各オブジェクトは、次のオブジェクトから120度離れています。あなたのオブジェクトのサイズが20×20ピクセルである場合は、次の場所に敷いてください:
ここ
x1 = sin( 0 * pi()/180) * r + xc - 10; y1 = cos( 0 * pi()/180) * r + yc - 10
x2 = sin(120 * pi()/180) * r + xc - 10; y2 = cos(120 * pi()/180) * r + yc - 10
x3 = sin(240 * pi()/180) * r + xc - 10; y3 = cos(240 * pi()/180) * r + yc - 10
、r
は円の半径であると(xc, yc)
は、円の中心点の座標です。 -10's
オブジェクトの円上の中心(左上角ではなく)があることを確認してください。 * pi()/180
は度をラジアンに変換します。これは、ほとんどの実装であるsin()
とcos()
が必要です。
注:これは、円の周りに均等に分布した形を配置します。重複しないようにするには、十分に大きいr
を選択する必要があります。オブジェクトにシンプルで同一の境界線がある場合は、それらのうち10個をレイアウトして必要な半径を計算し、20を配置する必要がある場合は半径を2倍、30を30倍大きくします。オブジェクトが不規則な形になっていて、可能な限り小さな円を見つけるために円の周りに最適な順序で配置したい場合、この問題は非常に面倒です。たぶんこれのためのライブラリがありますが、私は頭の上に1つもなく、D3.jsを使用していないので、この機能を提供するかどうかもわかりません。ここ
これは欠けている部分です。ありがとうございます。 – user1870877