opengl

凸包走査アルゴリズムをPython+PyOpenGLで

オライリーから出版されている『アルゴリズムクイックリファレンス』で凸包走査アルゴリズムを学習したので、PythonとPyOpenGLで適当に点を打った点集合から凸包を計算して表示するプログラムを作成しました。点(-1,-1)と、点(+1,+1)からなる矩形に一様…

PyOpenGLでえせPLYファイルビューワ

bunny horsePyOpenGLでPLYファイルのてきとうなパーサを書いてスタンフォードバニーを表示させた。超がつくほどのてきとうな仕様のパーサで色々と決め打ち。法線は描画時に面法線を計算して設定する。・・・いまのプログラムだと法線の方向が逆になる場合が…

PyOpenGLでx,y軸の交換テスト

OpenGLで描画対象となる点のx軸とy軸を交換したい。そこで現在の行列に引数の行列を掛けるglMultMatrixでx,y軸を交換する小さなプログラムを書いた。 ネイピア数の指数関数をプロットしたあとにx,y軸を交換してまたプロットする。 # coding: utf-8 import sy…

ローレンツアトラクタをPyOpenGLで描画

GLUTで表示中の画面をキャプチャする

[,h200]前回C言語で書いたコードをPyOpenGLとPILライブラリを使って書いてみた。PILを使うと前回と異なりpng形式だけではなくbmp,jpeg,tiff形式などPILの対応する形式であれば何でも保存できる。 使い方は同じで、コードをコピペして適当な場所でcapture関数…

libpngを使ってGLUTで表示中の画面をpng画像として保存する

[,h250,left]OpenGLのglReadPixels関数を使うとフレームバッファのピクセルデータを取得できます。もちろんそれを画像として保存できますが、取得できるのはピクセルデータだけなのでそれを何らかのフォーマットで保存する事になります。今回はlibpngを使っ…

PyOpenGLでサイン波とその逆位相の波を表示させた

前のエントリで書いたユーティリティとPyOpenGLプログラムに変更を加えてサイン波の逆位相の波を作成して表示させてみた。 複数の波形を表示できるようになったので4つ同時に表示させてみた。

PyOpenGLでクオータニオンによる物体の回転を試してみた

http://staff.aist.go.jp/toru-nakata/quaternion.htmlここに書いてある内容を読んで、pythonで4元数クラスを素直に実装してみた。そしてその実装で物体を回転させるプログラムをPyOpenGLで書いてみた。Quaternionクラスは単項+,単項-,+,-,*,abs,reprをオー…

libpngでpng画像ファイルからOpenGLテクスチャを作成

OpenGLでlibpngを利用してテクスチャを貼り付ける手順を調べたのでメモ。OpenGLでテクスチャを利用する際、画像ファイルフォーマットのパースはOpenGLでサポートされないので自前でパースするか、あるいは既存のライブラリを利用するなどして読み込む必要が…

OpenGLを使ったプログラムのエラー

select_region.c:10: error: ‘y1’ redeclared as different kind of symbol手元のOpenGLプログラムがコンパイルエラーになるので調べると・・・ http://www.hinet.mydns.jp/tdiary/?date=20090608#p01へー。っていうか、え〜〜〜

opengl学習 -三次元空間上で最小全域木を構築する-

前のエントリで使ったプログラムでさらに遊んでみた。というか本当はこれがやりたかった。ランダムに生成した三次元座標の集合から最小全域木を構築して表示させる。ちなみにこれが前回やった二次元版。 そしてこれが今回作った三次元版。 実行は以下のよう…

opengl学習 -遊ぶ-

前のエントリで描いたプログラムで遊んでみる。立方体 ハイパーキューブ さらにランダムに描画させてみる。実行は $ python mkdsldat.py 10 10 20 | ./a.out /dev/stdinとか。[,left] # mkdsldat.py # coding: utf-8 # ランダムなデータの生成 import random…

opengl学習 -どの球同士を接続するか指定する-

[,left] 前のエントリのプログラムをさらに改良して点のリストと、それらの点を結ぶ2つのインデクスをうけとり描画するようにした。

opengl学習 -円柱で2点を結ぶ-

[,left] 前のエントリのプログラムを改良して、球を円柱で結ぶようにした。円柱を描く関数はhttp://www.wakayama-u.ac.jp/~tokoi/opengl/faq.html#Q6から引用させていただいた。 2点を結ぶ方法はhttp://groups.yahoo.co.jp/group/opengl-jp/message/2397とht…

opengl学習

[,left] 改行で区切られた3次元座標のテキストファイルを受け取り、それぞれの点に球を描いて、さらにそれぞれを線で繋ぐプログラム。カメラの位置と視点はキーボードからの入力で移動させられる。いずれは球同士を円柱で繋ぎたい。

opengl学習

structure synthみたい。パーサとか作ってwxWidgetsと組み合わせれば似たようなものが作れそうだ。そうでもないか。

プリム法で求めた全域木をOpenGLで表示してみる

前のエントリで最小全域木問題をプリム法で解いてみたものの、出力が数字の羅列だと達成感が薄いのでOpenGLで表示させる。さっきPythonで解いた全域木 頂点数を増やしてみた 頂点をランダムに打つようにして沢山打ってみた おおお。 // 無向な完全グラフの最…

マンデルブロ集合の描画結果をもっと早く綺麗にみるために

前のエントリで、マンデルブロ集合の計算量の多さを隠蔽するために画像を縦に分割して描画して早く計算結果を見られるようにした。このやりかたはわかりやすいものの、もっといい方法が無いか考えた。3x3のマスを考える。左上から右下に描画していく初めのや…

台形則による数値積分とOpenGLとアフィン変換

OpenGLで台形則を使った積分を描いてみた。ところでOpenGLの視点設定が覚えられない。難しすぎる。いつも視点移動させずに、座標を移動させたり縮小させたりしてデフォルトの範囲内におさまるようにしている。 #include<stdio.h> #include<GL/glut.h> // 自前のアフィン変換に使</gl/glut.h></stdio.h>…

OpenMPによる並列マンデルブロ集合が正しく動いた

前回のエントリを書いた後、id:succeedさんの指摘でスレッド間で共有されるべきでない変数が共有されていることに気がついた。あ。さっそく変数の宣言場所を変えてみるものの、やはり画像が乱れる。駄目かーと思い諦めようとしたその時、OpenMPの動作はpriva…

OpenMPでOpenGLを使ったマンデルブロ集合のプログラムを高速化しようとしてこけた

マンデルブロ集合を描画するプログラムをOpenMPで高速化しようとして驚いた。gccでOpenMPを有効にしてコンパイルして実行するとノイズだらけの乱れた画像が生成された。 ネット上を調べてみるとOpenGLはマルチスレッドを考慮した作りになっていないので、マ…