asaのブログ

プログラミングの勉強まとめ

OpenGL ウィンドウ表示までのテンプレ

毎回同じコードを書くのが億劫なので、一部をテンプレ化しました。ここは実際描画にはあまり関係ないのでさらっと流してしまっていい気がします。 ちなみにglmは計算用のライブラリです。必要に応じてインクルードします。 gist69c5f12f4e840125832752093c79…

OpenGL 初めてのGLFW&GLEW

これまでGLUTを使っていましたが、新しいバージョンに対応したOpenGLを使いたかったのでGLFWとGLEWを使って見ました。 こちらのテキストを参考にさせていただきました。ただ四角形を表示させるだけなんですがかなり骨が折れます。 http://marina.sys.wakayam…

OpenGL Bezier曲線

ベジエ曲線の自分のチートペーパーを作成しました。ついでにOpenGLでそれを実装してみました。 まずチートペーパーから ベジエ曲線は所与の線を t : ( 1 - t ) に内分し、それをさらに内分して内分して…を繰り返して最終的な点を求めていきます。結果としてt…

MacでOpenGL環境の導入 with Xcode

更新が途切れ途切れになっていましたが、引っ越し後のバタバタも去り大体のイベントを消化し、後のことも大体の目処がついたのでようやく落ち着いてコードが打てるようになりました。 というわけで今回はずっとやりたかったGLSLに取り組むためOpenGL環境を整…

入門Qt4プログラミングを読む1

C++

『入門Qt4プログラミング』を終わらせて次の本なり文献なりに移りたいと思います。かといって流し読みしただけでは大事な点を取りこぼしてしまうこともあるのでざっくり役に立つようにまとめていこう思います。 序文ではQtがどのようなライブラリかを解説し…

C++ 多重継承〜仮想関数〜入出力

C++

ようやく環境が整ったので随時やっていきます。とりあえずいつものように基礎練です。 gist2f38154bf249b478740a5710d6cc357d gistb541793e494c83e504fe3a9767ab853a gist838eff0d88a9ed95abb5ee4bb0769035 gist6a4f3701a167734aa16888efabf69a17

Macでの開発環境の構築(C++、Java)

C++

パソコンをWindowsからMacへと切り替えました。周りにユーザーが多かったので買い替えました。愛用のLet's Noteはクリーンインストールして後輩にあげることにしました。ありがとうLet's Note ! そういうわけで今回Macで開発環境をいくつか整えてみましたの…

OpenGL 3次元に線を引く

そういえばパソコンを変えました。モダンOpenGLをやっと使える…んですが環境構築がまだ終わっていないので、未だにレガシーなOpenGLを使って勉強してます。 やや分かりづらいタイトルですが、端的に言うとOpenGLでは2次元の線を描いているように見えて3次元…

C++ 代入演算子のオーバーロード~継承とアクセス制御

C++

山口から東京に引越しました。しばらくコードが打てなかったので今最高に楽しいですね。とりあえずC++の基礎練からです。 gistdc307d27006a2105a4ad1b152a468fa8 gist95f4706f5674a5b4005d457d16fa2474 gistfc87fbc7695273d4866be6632c9a720d gist98c6e40…

Qtの組み込みウィジェット・ダイアログ

Qtで利用できる組み込みウィジェットとダイアログを一覧でまとめておきます。 Qtによる開発はこれらを利用して、主にQMainWindowに実装する形で行われます。また必要に応じてこれらのクラスを継承してカスタムダイアログ・ウィジェットを作るわけです。 Qt全…

コンピュータ・グラフィックスの動向 SIGGRAPH2017から

コンピュータ・グラフィックスの世界的な祭典・会議SIGGRAPHがそういえば今日閉幕しました。今年SIGGRAPH Awardを受賞した人達を紹介しつつ、最近のコンピュータ・グラフィックスの動向を見たみたいと思います。 www.siggraph.org 1.Jessica Hodgines カー…

WebGL チュートリアル1

C++

GLSLを勉強したかったのですが、生憎パソコンがOpenGL3以降に対応していなかったのでずっとレガシーなOpenGLを使用していました。 モダンなOpenGLではこの固定パイプラインを使用しない点で決定的にレガシーなOpenGLと異なっています。 そこで、OpenGLを直接…

C++ コンストラクタのオーバーロード~

C++

いつもどおりの基礎練です。 gist853181548f4ce7d2e82b42c48d7cbbaa gist8d2a206e082cedadb11c3f2d7f48b474 gistd5333f021c9f1eaad921f6019e4f6ba1 gist3ec1bd42e3ccb7a9a4d35619fff3fb84 gist5c872d02192e35696f003fe5ab7413be

物理 力学2

C++ フレンド関数~

C++

練習でしばらくコードを打っていました。備忘録代わりに載せておきます。 フレンド関数 gistd8794f1b06807e24be8fea85305f0c7f オブジェクトの配列~参照仮引数 gist0800f76139924a0584a4ba26fad1891f 参照とポインタの比較 gist960dbb758227dc0fdc1ee0f5a9b…

Qtチュートリアル14(レイヤー機能の追加)

C++

作成中のお絵描きソフトにレイヤー機能(テスト)を追加しました。 レイヤーを適当に作成して、レイヤー変更メニューを押すと任意のレイヤーを編集可能になります。 スロット レイヤー用のメニューを作成したらスロットを実装します。スロットは描画領域の関…

Qtチュートリアル13(QColorクラス)

C++

ペイントソフトにアルファ値を追加しました。1~255の範囲でペンの濃度を変化させることができます。 実際に変化させてみると下のようになります。 スロットと関数を見ていきます。ただしスロットと関数の実装をする前に画像のフォーマットをARGBに設定して…

Qtチュートリアル12(画像の反転)

C++

QImageのmirroedを使って画像の左右・上下反転を実装しました。便利なことに違いはなく簡単に実装できるのが良点ですが・・・少し使い勝手が悪いです。 座標を取得してそれぞれx成分、y成分を入れ替えるて実装するのもありな気がしてきました。 スロット それぞ…

Qtチュートリアル11(回転)

C++

この前作ったQtのお絵描きソフトに回転機能を追加しました。 アンドゥの実装も現在進行中で、最近QUndoStackがあることを知ったのでそれを今後使用する予定です。 メニューバーに”Effect”を追加しました。Rotateボタンを押すと回転します。 QActionとスロッ…

Qtチュートリアル10(描画機能)

C++

描画関係のコードを下にまとめました。コメントで大体に書きましたが、1つとてもおもしろい機能があったので紹介します。 updateというメソッドをこれまで何度か使用してきました。これはQWidgetクラスのメソッドで、画面を再描画する必要があるときに呼び出…

Qtチュートリアル9(QPenのカラーと太さの変更)

C++

描画時の線の太さと色を変える機能を見ていきます。これまでなんとなく流れがつかめてきましたが、QtでGUIを構築する際の流れはMVCモデルに沿うと、UIの作成⇒スロットの接続⇒スロットの実装⇒モデルの実装です。 画面的には次のように選択画面があり、 カラー…

Qtチュートリアル8(画像保存)

C++

前回の画像表示と同じく、画像保存もMVCモデルが基になってます。 関連するメソッドは save saveFile saveImage です。またクラスについては QObject QAction QImage QString が関わる点を念頭に置くと分かり良いです。 saveスロット gist8296b075eaaedb077c…

物理 力学2

前回の続きです。

C++ 基礎2(オブジェクトポインタ、構造体、共用体)

C++

C++基礎の2回目です。 オブジェクトポインタ gistee1322c0e80ee6aeabb6b6e9621dd5cb 構造体 gist5e9418ec5c6bfeaf700f1b091ee1bec4 共用体 コード中のコメントは帯×⇒体ですね。 gist41bbff400360d07e53fff9fa1c80e1ec 構造体(コンストラクタ+デストラクタ…

Qt チュートリアル7(画像表示)

C++

前回作成したペイントソフトの機能を見ていきます。先に結論から入ると分かり良いと思いますので示しておきます。 実装の概要 Qtを使ってMVCモデルに沿って画像の読み込みを実装しています。Viewであるopenメソッドは単にユーザーからの入力を受け取るだけで…

経済 オークション理論1

プログラミングと全く関係ないように思われますが、じつはGoogleやyahoo!の広告にはオークションの理論が使われていたりします。アルゴリズム、ゲーム理論、メカニズムデザイン等の分野が多数絡みあって、非常におもしろい理論です。他の勉強と併せて解説し…

物理 力学1

せっかく勉強する機会を得たので、数学と物理を復習して基礎を固めておくことにしました。 講義資料はこちらの資料を使っています。 language-and-engineering.hatenablog.jp ノート 久々にやるとやっぱり忘れていますが楽しいです。経済だとあまり使わない…

Qtチュートリアル6(保存、ペンの太さ、色の実装)

C++

Qtでざっくりと絵を描くアプリを作ります。基本的な機能として保存、開く、ペンの太さ、色の選択を実装しています。今回はQtのサンプルを参考にしています。これにしばらくアンドゥなどの機能やOpenGLを載せていきたいと思います。 少し長くなるので、詳細な…

C++ 基礎1

C++

QtもOpenGLもC++で書いています。そこで、C++の基礎を少しづつ振返っておこうと思います。 参考書はこちらです。 独習C++ 第4版 作者: ハーバート・シルト 出版社/メーカー: 翔泳社 発売日: 2015/11/25 メディア: Kindle版 この商品を含むブログを見る 仮引…

OpenGL DDA(ディジタル微分解析機)の実装

DDAを使用してマウスでクリックされた2点を結ぶ直線を作成してみました。 DDAの詳細な解説は以下の2つのリンクが役に立ちます。 ・http://www5f.biglobe.ne.jp/~kenmo/program/dda/dda.html ・https://www.kushiro-ct.ac.jp/yanagawa/cg-2015/1014/index.htm…