2

中心の周りに与えられた半径が増加し、与えられた回転の線が交差する円を想像してみてください。画像のポイント位置?

ここに画像の説明を入力

詳細: モバイル アプリに Lua を使用しています。左上の座標は 0, 0 なので、中心は maxX / 2, maxY / 2 です。変数rotationStepとradiusStepを使用してネットを作成しています。

*6 ポイント以上のポリゴンの方が見栄えが良い場合があります。

ありがとう!

4

2 に答える 2

1

最初に形状の四隅を計算します。

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 です。

ここでの考え方は、通常のグリッドと同じです。

  • 1 つの出発点
  • 「右」への 1 ポイント (通常のグリッドでは x+1、ここでは rotationStep+1)
  • 1 点 "down2 (通常のグリッドでは y+1、ここでは radiusStep+1)
  • そして、右下に 1 点。

点と点の間に 4 本の線を引くだけです。

ほとんどのグラフィック パッケージには、DrawArc並べ替えの方法もあります。これを使用すると、2 つの円弧を非常に高性能に描画すると同時に、より美しく見せることができます。

于 2012-04-07T13:07:01.280 に答える
0

円の中心と指定された点の間の角度を計算します。次に、それに近い角度を持つ2本の線を見つけます。これらの2本の線の間にあります。

円の中心からポイントまでの距離を計算します。

線 (D) に沿って同じ距離をプロットし、円間の距離で割ります。これで4点全て取れます。

于 2012-04-06T14:32:49.777 に答える