mieki256's diary



2024/04/19(金) [n年前の日記]

#1 [prog][python] スプライン曲線について調べている

_昨日、 QIGISを使って道路データを取り出せること、及び、取り出した道路データを Python + pygame で描画したらそれらしくなっていることを確認できた。

ただ、道路データは、連続している直線データとして取り出しているので、そのまま道路として描画したらカクカクした見た目になってしまうはず。何かしらの補間をかけて滑らかな見た目にしたい。ここはスプライン曲線とかそのあたりを使う場面かなあ、と…。

一応、昔、Ruby + DXRuby でその手の曲線を実装できるのか試したことがあるので、Python に移植してみてもいいのかもしれないけれど。

_mieki256's diary - 曲線について調べていたり
_mieki256's diary - スプライン曲線について調べてたり

プログラミング言語の中では大人気の Python なら、既にその手のライブラリがあるんじゃないか? そっちを使ったほうが早いんじゃないか? と思えてきて、関連情報をググっていた。

どうやら scipy というライブラリが使えそうだなと…。

_pythonでxy座標上の離散点をスプライン補間 #Python - Qiita
_スプライン曲線と補間 - Emotion Explorer
_scipy.interpolate.splprep - SciPy v1.13.0 Manual
_補間 - 読書ノート 1.6dev documentation

ただ、今まで触ったことがないので、何が何だか。とりあえずサンプルを動かすところから始めてみよう…。

scipy関連モジュールをインストール :

Windows10 x64 22H2 + Python 3.10.10 64bit上で、scipy、numpy、matplotlib をインストール。
pip install scipy
pip install numpy
pip install matplotlib
> pip list | egrep "scipy|numpy|matplotlib"
matplotlib                3.8.4
matplotlib-inline         0.1.6
numpy                     1.26.4
scipy                     1.13.0
  • scipy はスプライン補間に使う。
  • numpyは配列処理に使う。
  • matplotlib は得られたデータをグラフで描画するのに使う。

Debian Linux 11 bullseye i686でもインストールしてみた。Debian系の場合、パッケージが用意されているので、apt でインストールする。
sudo apt install python3-scipy python3-numpy python3-matplotlib
$ sudo apt list --installed | grep -E "scipy|numpy|matplotlib"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

python-matplotlib-data/oldstable,now 3.3.4-1 all [インストール済み、自動]
python-scipy-doc/oldstable,now 1.6.0-2 all [インストール済み]
python3-matplotlib/oldstable,now 3.3.4-1 i386 [インストール済み]
python3-numpy/oldstable,now 1:1.19.5-1 i386 [インストール済み、自動]
python3-scipy/oldstable,now 1.6.0-2 i386 [インストール済み]

#2 [python][pygame] Debian Linux上でpygameをインストール

Linux上での動作確認をするために、pygame を、ネットブック機 Lenovo IdeaPad S10-2 + Debian Linux 11 bullseye i686上でインストールしてみた。

pygame というのは、Python で2Dゲームを作成できるライブラリ。

一般的に pygame は pip を使ってインストールすることが多いだろうけど、Debian Linux や Ubuntu Linux の場合、パッケージが用意されている。動作に必要な他のパッケージも一緒にインストールしてくれるので、そちらを使ってインストールしたほうがハマらない。

sudo apt install python3-pygame python3-pygame-sdl2 python-pygame-doc

pygame zeroについて :

pygameの記述を簡単にした、Pygame Zero というライブラリもあると知った。

_Pygame Zero へようこそ - Pygame Zero 1.2 ドキュメント

これもパッケージをインストールすることができる。
sudo apt install python3-pgzero

Pygame Zero を使う時は、python hoge.py ではなく、pgzrun hoge.py で実行する。もしくは、import pgzrun をファイルの最初のほうに書いておいて、最後のほうに pgzrun.go() と書いておいてもいいらしい。

_IDLE や 他の IDE での Pygame Zero 実行 - Pygame Zero 1.2 ドキュメント

Windows上では、pip でインストールできる。
pip install pgzero

pgzrun.exe は、以下に入っていた。
Pythonインストールフォルダ\Scripts\pgzrun.exe

以上、1 日分です。

過去ログ表示

Prev - 2024/04 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project