asaのブログ

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

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

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

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

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…

Java GlassFishでBASIC認証

タイトルの通りです。Tomcatを使用した例がたくさん出ていますが、Netbeansを使用している方はGlasfishの方が何かと便利かもしれないと思いやってみました。 公式チュートリアルが充実していますのでこちらも併せてご覧下さい。 NetBeans IDEでのWebアプリケ…

OpenGL 3次元モデリング

OpenGLを使用して3次元の物体を描画してみます。今回はバネです。特に気になった点について下でまとめています。 glRotatef glRotatefについてですが、これは glRotatef(角度、x軸、y軸、z軸) となっていて、x軸~z軸には傾ける割合を指定します。例え…

OpenGL アニメーション

OpenGLでアニメーションを実装するデモを作成します。今回作成するのは四角形が画面上を移動するという簡単なものです。 glutTimerFuncを使って指定した時間待機状態を作ります。待機状態が解けると自前のTimerFunctionが動いて四角形の描画位置をずらして、…

Java MySQLに画像データを保存する

MySQLデータベースに画像などの比較的大きなファイルを保存する際の方法をまとめました。今回は比較的使い慣れているJSPとサーブレットを使って実装しました。 BLOB型 Binary Large Objectの略。その名前の通り大きなバイナリデータを扱うSQLの型になります…

Java JSFでCRUD処理

JSFでCRUD処理を試してみました。簡単なテストだけですが非常に勉強になります。 JSF StrutsやSpringといったJavaフレームワークの1つです。Java Server Facesの頭文字をとっています。定義としては<h:head>などのJSF独自のタグを使用したxhtmlページのことをJSFペー</h:head>…

WIN32APIチュートリアル1

C++

Windowsプログラミングを学習します。 インクルードファイル Windowsプログラムを作成する際は必ずwindows.hをインクルードします。またmain関数がなく、代わりにWinMain関数が存在しています。Windows関数はWINAPIにほとんどがまとめられています。WinMain…

Qtチュートリアル5(PaintEvent)

C++

今回は "Basic Drawing Example | Qt Widgets 5.9"を参考にQtによる描画を学習します。PaintEventの復習も兼ねて上のサンプルから要点だけ取り出しました。 コード gist958b6a9410d9842224d0d0e68d2d57dc 内容 サンプルでは描画機能を網羅的に解説するため、…

Qtチュートリアル4(QComboBox)

C++

QComboBoxを使用して性別と血液型を問い合わせるWidgetを作成します。 Widget.h gista70ffbb023958120ef1845a2fc0dc147 Widgetの内容は コンストラクタ スロット×1 コンボボックス×2 ラベル×2 プッシュボタン×1 です。 Widget.cpp gist494e7cefe2b4d1a35…

Java ネットワークプログラミング

下階がなにやら騒がしく寝れなくなったのでコードを打っていました。そういえば毎日使ってるラインってどうやって作られてるんだろーと考えて、ネットワークプログラミングを少しやってみました。 JavaのSocketクラスを利用してTCP通信をやってみました。ク…

Qtチュートリアル3(PaintEvent)

C++

QtのPaintEventを学習するために次のようなアナログ時計をQtで作ってみます。 Analog Clock Example | Qt Widgets 5.9 時計は時間の経過とともに針が動きます。時間の経過に従って画面を描画し直す必要があります。こうした画面描画を行う際に使われるのがPa…

Qtチュートリアル2(MainWindow、QMenu)

C++

簡単なテキストボックスを作って、メインウィンドウの使い方とメニューバーの作り方を学習します。 textBox.h QMainWindowの派生クラスとしてtextBoxクラスを定義します。テキストボックスの作りは簡単でセントラルウィジェットにテキストを入力するウィジェ…

Qt5.9の環境構築(MinGW)

C++

前にQtをVisualStudioで環境構築しましたが、MinGWでもできたので忘れないうちにメモしておきます。 必要なもの Qt5.9のオフラインインストーラー インストール Visual Studioの時と違ってすでにVisual Studioがインストールされている必要があるとか、Windo…

Qtチュートリアル1

C++

Qtの簡単な使い方です。 シグナルとスロットについて イベントが発生したらシグナルを送ってそれを処理するというのが基本の流れのようです。ボタンが押されたというシグナルをQtアプリに送ります。するとスロットに登録されたメソッドが実行されます。 QPus…

Qt5.9の環境構築(Visual Studio2017)

C++

C++でGUIを開発するためにQtを導入しました。やや面倒な点があったので覚えているうちにメモしておきます。 筆者の環境 ・Windows7 pro sp1 ・Visual Studio2017 必要なもの ・Windows SDK ・Qt5.9のインストラー Windows SDKのインストール こちらからWindo…

OpenGLのバージョンチェック方法

OpenGLのバージョンチャック方法をまとめました。 OpenGLは3以降では固定パイプラインを使用せず描画をGLSLで記述するようになっています。いわゆるmodern OpenGLです。それまでのものはLegacy OpenGLとして古い位置づけになっています。 OpenGLを扱った書籍…

C++チュートリアル1

C++

C++のチュートリアルです。まずはクラスの学習からです。参考書はこちらのKindle版を使用しています。Kindle便利ですね 独習C++ 第4版 作者: ハーバート・シルト 出版社/メーカー: 翔泳社 発売日: 2015/11/25 メディア: Kindle版 この商品を含むブログを見る…

目次

ブログの目次ページです。投稿数が少し増えたのでこちらで整理しています。 1.Java ・Java カテゴリーの記事一覧 - asaのブログ 2.C++ ・C++ カテゴリーの記事一覧 - asaのブログ 3.OpenGL ・OpenGL カテゴリーの記事一覧 - asaのブログ 4.アルゴリズム …

OpenGL 情報収集まとめ

OpenGL関連の情報収集先などをまとめました。2D寄り、フォトレタッチやペイント関連多めになります。随時拡張していきます。 環境構築 ・windowsでopenGL環境を構築するための手順 - Qiita ・床井研究室 - NuGet による freeglut / GLFW / GLEW の組み込み …

OpenGL マウスでお絵描き

はい。マウスでお絵描きシリーズは実はこれで三つ目です。Swing版、JOGL版は下のリンクを参考にしてください。 Swingでお絵描き ⇒ デザインパターンまとめ2(お絵かきソフト) - asaのブログ JOGLでお絵描き ⇒ JOGL‐マウスでお絵描き - asaのブログ こんな感…

OpenGLアーキテクチャまとめ1

OpenGLについて勉強したことをまとめました。こちらの参考文献をしようしています(https://www.opengl.org/archives/resources/code/samples/s2001/notes/opengl.pdf)。 ・OpenGLって何? Graphics rendering APIで、WindowシステムやOSに非依存なのが特徴…

Krita(オープンソースペイントソフト)開発に参加してみる

ある記事でペイントソフトを作ろうとした人が、一番手っ取り早い方法として既存のオープンソースプロジェクトに参加するのが良策だと答えていました。Kritaはオープンソースによって開発されているペイントソフトで一応誰でも参加できます。ハードル高めです…

OpenGLチュートリアル3

・テクスチャマッピング 下のような市松模様のイメージを作ります。 ・テクスチャ用のヘッダ gistaa83ee8f32cf309552dabf0d0802bb91 ・OpenGL等を使用するためのヘッダ gist2c4251f9805c698015d3bceeac69d8bf ・ユーティリティ定義用のヘッダ gist983b28be77…

OpenGLチュートリアル2

・ビューポートを使う インクルードや定義をまとめたヘッダファイル。 gist9cad5596759b674012ebcec83fe31174 ユーティリティ関係をまとめたヘッダファイル。 gist7ba039594cabd33022f04de8349386ca ユーティリティ関係をまとめたC++ファイル。 gist4335b8ac…

OpenGLチュートリアル1

・ウィンドウの表示 FreeGLUTの初期化 OpenGLコンテキストの作成 ウィンドウの作成 ライブラリの初期化 レンダリング関数の設定 ループの設定 ループのスタート コード gist96f515e8d8d2f791f9d5e4555bd7f95d gist3611554b5dd0321d37a740c79d7d47b6 gist6a21…

Visual StudioによるOpenGL環境の構築

Visual StudioでOpenGLを利用できるようするための環境構築方法をまとめました。 Preface OpenGLをVisual Studioで利用するための方法はいくつかありますが、結局のところ何をしているかというと、ライブラリを参照するためにあれこれするということになりま…

JOGL‐マウスでお絵描き

JOGLで簡単なマウスによるお絵描きを実装します。 今回の流れは大体次のとおりです。 JOGLの環境構築 キャンバスに点を打つ マウスイベントを受け取る 問題点 参考資料の紹介 1. JOGLの環境構築 筆者はNetbeansでJOGLを利用しています。外部ライブラリとして…

UIを学ぶためのSwingHacks 2

Java標準のラベルやボタンにイメージを適用します。ラベルやボタン1つにとってもユーザーが見やすいよう、あるいは新鮮味を感じるように作っていきます。 イメージを基盤とするコンポーネントを作成する大まかな手順は次の通りです。 標準のコンポーネントを…

JOGLでマウスイベントの処理

JOGLでマウスイベントを受け取り、イベント発生時の座標から直線をひくSwingアプリケーションを作りました。 参考文献:JOGLによるOpenGL入門 ペイントツールはマウス等で受け取った座標をもとに線を引くなり、円を連続して描くなりして描画をしています。し…

UIを学ぶためのSwingHacks1

オライリー社から出版されている”Java Swing Hacks”は素晴らしい本です。Swingに限らずUIについて意識すべき視点私たちに提供してくれます。 Java Swing Hacks ―今日から使える驚きのGUIプログラミング集 作者: Joshua Marinacci,Chris Adamson,神戸博之(監…

NetbeansでJOGL環境の構築

NetbeansでJOGLが使えるようにするための環境構築方法をまとめました。 筆者の環境は下の通りです。 Windows7 SP1 Netbeans8.2 1. JOGLのダウンロード まず始めにJOGLをダウンロードします。下のサイトから入ります。 https://jogamp.org/ JogAmpはJOGLやJOC…

DPL_1_B ナップザック問題

ゼミの教科書に出ていてどんな問題か気になっていたナップザック問題の近似解が解けました。NP困難な問題として知られるナップザック問題ですが、貪欲法ではなく動的計画法で解くことで近似解をだすことができます。 N個の品物についてナップザックに入れる…

ALDS_10_C 最長共通部分列

今日はアルゴリズムの日。問題を複数まとめて書くとごちゃごちゃして見ずらいので問題ごとに分けて書いています。参考書はこれ。 プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 作者: 渡部有隆 出版社/メーカー: マイナビ出版 発売日: 2015…

ALDS1_10_A フィボナッチ数列と動的計画法

研究でナップザック問題が出てきたので、久しぶりにアルゴリズム問題を解いています。使用している参考書は下の本です。 プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 作者: 渡部有隆 出版社/メーカー: マイナビ出版 発売日: 2015/01/30 …

JavaFX-スライダー、リスト・ビューの作成とCanvasの中央揃え

今回はUIにブラシを調整するためのスライダーと、ブラシを選択するためのリスト・ビューを作成しました。あと、キャンバスが左上に表示されるのを、中央に表示されるようにしました。 インターフェースの左はレイヤー管理と、微調整用のメンテナンスをTiledP…

JavaFX-ColorPickerの作成

ペイントツールのUIを改良しています。今回はColorPickerを作成しました。またツールバーを見やすくするためにTitledPaneにノードを貼り付けて表示するようにしました。ついでに前回のメニューをインターフェースに実装しました。 ColorPicker 色を選択する…

JavaFX-メニューバーの作成

JavaFXで提供されているUIパーツを基にメニューバーを作成します。ちなみにOracleで紹介されているUIパーツは全部で26個です。 ラベル ボタン トグル・ボタン チェック・ボックス 選択ボックス テキスト・フィールド パスワード・フィールド スクロール・バ…