[解決済み] 球面上のn点の均等配置
質問
N点(おそらく20点以下)に対して、球の周りの位置を漠然と与えてくれるアルゴリズムが必要です。完璧である必要はありませんが、束にならないようにする必要があります。
- この質問 は良いコードを提供してくれましたが、これは100%ランダムに見えるので、これを均一にする方法は見つかりませんでした。
- このブログの記事 では、球面上の点数を入力する方法が2つありましたが、そのうちの1つである SaffとKuijlaars アルゴリズムは、まさに私が書き写すことのできるpsuedocodeであり、そして コード例 私が見つけたのは、"node[k]"を含むもので、説明が見られず、その可能性を台無しにしました。2つ目のブログの例は、黄金律螺旋で、一定の半径を定義する明確な方法がなく、奇妙な、束縛された結果が得られました。
- このアルゴリズム から この質問 しかし、そのページにあるものをpsuedocodeか何かに組み立てることはできません。
私が遭遇した他のいくつかの質問スレッドでは、ランダムな一様分布について話していましたが、これは私が懸念していないレベルの複雑さを追加するものです。このような愚かな質問で申し訳ありませんが、私は本当によく調べて、まだ不足していることを示したかったのです。
そこで、私が探しているのは、単位球の周りにN個の点を均等に分配する簡単な疑似コードで、球座標またはデカルト座標で返すものです。さらに、少しランダム化して分布させることができれば最高です(星の周りの惑星を考えてみてください、適度に分散していますが、余裕があります)。
解決方法は?
で
このサンプルコード
node[k]
はちょうどk番目のノードです。あなたは配列N点を生成しており
node[k]
はk番目(0からN-1まで)です。これだけで混乱するようなら、これで使えるようになるといいですね。
(言い換えれば
k
は,コードの断片が始まる前に定義され,点のリストを含むサイズNの配列である).
あるいは ここで他の答えを構築する(そしてPythonを使用する)。
> cat ll.py
from math import asin
nx = 4; ny = 5
for x in range(nx):
lon = 360 * ((x+0.5) / nx)
for y in range(ny):
midpt = (y+0.5) / ny
lat = 180 * asin(2*((y+0.5)/ny-0.5))
print lon,lat
> python2.7 ll.py
45.0 -166.91313924
45.0 -74.0730322921
45.0 0.0
45.0 74.0730322921
45.0 166.91313924
135.0 -166.91313924
135.0 -74.0730322921
135.0 0.0
135.0 74.0730322921
135.0 166.91313924
225.0 -166.91313924
225.0 -74.0730322921
225.0 0.0
225.0 74.0730322921
225.0 166.91313924
315.0 -166.91313924
315.0 -74.0730322921
315.0 0.0
315.0 74.0730322921
315.0 166.91313924
これをプロットすると、極付近では垂直方向の間隔が大きくなり、各ポイントがほぼ同じ合計位置にあることがわかります。 面積 のスペース(極付近では水平方向のスペースが少ないので、垂直方向のスペースが多くなる)。
これは、すべての点が隣接する点との距離をほぼ同じにすることとは違いますが(リンク先が言っているのはこれだと思います)、あなたが望むものには十分かもしれませんし、単に緯度/経度を均一にするよりも改善されます。
関連
-
ピロウズ画像色処理の具体的な活用方法
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 2つの緯度経度点間の距離を計算する?(ハバーシンの公式)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac