中心の周りに与えられた半径が増加し、与えられた回転の線が交差する円を想像してみてください。画像のポイント位置?
詳細: モバイル アプリに Lua を使用しています。左上の座標は 0, 0 なので、中心は maxX / 2, maxY / 2 です。変数rotationStepとradiusStepを使用してネットを作成しています。
*6 ポイント以上のポリゴンの方が見栄えが良い場合があります。
ありがとう!
中心の周りに与えられた半径が増加し、与えられた回転の線が交差する円を想像してみてください。画像のポイント位置?
詳細: モバイル アプリに Lua を使用しています。左上の座標は 0, 0 なので、中心は maxX / 2, maxY / 2 です。変数rotationStepとradiusStepを使用してネットを作成しています。
*6 ポイント以上のポリゴンの方が見栄えが良い場合があります。
ありがとう!
最初に形状の四隅を計算します。
x1 = cx + radialScale*radiusStep*cos(rotationScale * rotationStep)
y1 = cy + radialScale*radiusStep*sin(rotationScale * rotationStep)
x2 = cx + radialScale*(radiusStep+1)*cos(rotationScale * rotationStep)
y2 = cy + radialScale*(radiusStep+1)*sin(rotationScale * rotationStep)
x3 = cx + radialScale*radiusStep*cos(rotationScale*(rotationStep+1))
y3 = cy + radialScale*radiusStep*sin(rotationScale*(rotationStep+1))
x4 = cx + radialScale*(radiusStep+1)*cos(rotationScale*(rotationStep+1))
y4 = cy + radialScale*(radiusStep+1)*sin(rotationScale*(rotationStep+1))
(cx, cy) は中心点です - あなたの場合 (maxX/2, maxY/2)。
定数のrotationScaleとradialScaleは、ステップを全範囲に拡大するためのものです。たとえば、n 個のセクターがある場合、rotationScale は 2PI/n です。また、m 個の「バンド」があり、ネットの最も外側の円の半径が R の場合、radialScale は R/m です。
ここでの考え方は、通常のグリッドと同じです。
点と点の間に 4 本の線を引くだけです。
ほとんどのグラフィック パッケージには、DrawArc
並べ替えの方法もあります。これを使用すると、2 つの円弧を非常に高性能に描画すると同時に、より美しく見せることができます。
円の中心と指定された点の間の角度を計算します。次に、それに近い角度を持つ2本の線を見つけます。これらの2本の線の間にあります。
円の中心からポイントまでの距離を計算します。
線 (D) に沿って同じ距離をプロットし、円間の距離で割ります。これで4点全て取れます。