こんにちは。Yukiです。

今回はWordPressに移行したことを報告しようと思います。

 

 

 

  WordPressに移行しました

 

 

 

 

 

 

新しいサイトに変更しました。

ここから、記事を移行していこうと考えています。

今後は主に、新しい方で更新していきます。

 

アメブロの方でも、1ヶ月に1記事くらいは更新しようかなと思います。

今後はよろしくお願いします。

 

 

追記:リンクを変更しました (2024/04/15)

こんにちは。

Yukiです。今回はそろそろWordPressに移行しようかなと考えている話をしようかと思います。

 

 

 

  移行する理由

 

アメブロにはいろんなデメリットがあります。

  • 画像が大きくならない
  • ソースコードがわかりにくい
  • 色々なファイルをgoogleドライブ等で配布しないといけない
他にもありますが、これらの理由からWordPressを本格的に検討しています。

 

 

 

  どうするのか

 

とりあえず、レンタルサーバーを借りて運用したいなと思っています。

正直、今の記事を一括で移すのは無理だと思うので、ゆっくりゆっくりと移行していこうなと思っています。

 

また、このブログも思い入れがありますし、様々な人のブログを見て勇気ややる気をもらったりもしているので、3ヶ月に1回くらい更新できれば良いかなと思っています。(基本的にはWordPressの方が主になります)

 

後、面倒なので、アメブロからWordPressに移した記事は削除しない予定です。

移行した記事は、アメンバー限定記事に設定するように変更しました。

 

 

  予定

 

  1. レンタルサーバー契約
  2. WordPressセットアップ
  3. ブログの構成決め
  4. アメブロからWordPressに記事を移動

こんにちは。Yukiです。

今回は、時計機能が付いた温湿度計を作ってみようと思います。

 

 

 

  使う部品

 

なんで買ったのかは覚えてないのですが、アリエクで買ったAHT20+BMP280が搭載された基板を使います。

 

 

(こんなやつです)

 

ちなみにAHT20が温度と湿度。BMP280が気圧を測定できるらしいです。

(気圧って何に使うんですかね?台風とか?)

 

また、あとから色々拡張できるように、XH端子を大量に生やすような設計にします。

これは、後日予定している、特定の湿度になったら操作したり出来るようにするためです。

 

あとは時計ですが、これはLCDの表示部分がもったいないなぁと思ったからです。

例えばLCDで温度と湿度、気圧を表示しようとすると、

12.3℃ 50%

1023Pa

 

みたいな感じで表示すると思いますが、8x2のLCDでは足りませんし、逆に16x2だと余ってしまいます。ということで、余ったところに時間を表示します。

 

時間の取得方法ですが、RTCを持っていないので、余っているGPSモジュールを使おうと思います。

実はGPSモジュールでも時間取得出来るんですよね。(しかもUARTで通信可能)

 

 

 

  回路図

 

見えにくいですが、コネクタ用端子を大量に配置しています。

 

 

 

 

  アートワーク

 

今回は、別の基板の残った部分で作るので、Lのような形をしています。

まあこれも節約ということで…。

あと、雑ですが、LCDとセンサーの3Dデータも作りました。

もうちょっとちゃんとつくればよかったかな。

 

(こうやってみると色おかしいですね。もっとちゃんと設定すればよかった)

 

  今後

 

はんだ付けして、プログラムを書いていくと思います。

あと、多分全部手元にあると思いますが、もし部品が足りなかったら、秋葉原とかに買いに行くと思います。

 

5月末までには完成させたいかなと思います。(といっていますが、忘れそう)

 

 

  余談

 

最近色々忙しくて更新できていませんでした。

あと、持っていた株が大暴落したので、少しショボンです。

 

こんにちは。Yukiです。

今回は、GLUTで円を書きたいと思います。

 

 

 

  GLUTの画面領域

 

いろいろな指定方法があるようですが、今回は、端っこが-1と+1である方法を使用したいと思います。これにより、実行するディスプレイの大きさに依存しない開発が可能です。

(この方式であれば、float形式での小数点で指定することも可能です)

 

 

 

  円を線で書く方法(考え方)

 

GLUTには、円を書くための関数がありません。なので、線で書く必要があります。

具体的には、正◯角形を増やすことで、円に見えるようになります。

今回は、どこらへんで円に見えるのかも検証してみたいと思います。

 

具体的にどのように線で円を書くのかというと、次のようなイメージです。

 

 

正多角形ということは、中心と各辺までの角度が等しいということになります。

つまり、角度θは360°÷ 頂点の数 で求めることができます。

下の例だと、正六角形ですから、 360°÷ 6 = 60°ですね。

 

次に、mを定義します。これは、円と仮定すると、半径に相当します。

今回は、適当に0.8と指定しました。

 

この2つの条件さえあれば、それぞれの頂点をsinとcosで求めることができます。

 

 

 

  追加説明

 

なぜsinとcosでかけるのかを説明します。

円だけ書きたいということであれば、読まなくてもOKです。

 

まず、下のような点と点があるとします。

今回、左下の座標は(0,0)とします。

求める座標は右上です。

 

 

右上の座標を求めていきます。

このとき、sinとcosを使用します。

まずsinとcosは下のような定義です。

 

 

このような定義からrを消せば、xとyが求められます。

rは分母にあるので、sinθ× r とすることで、y座標が求められます。

同様に、cosθ × r でx座標が求められます。

 

 

今回書く円(この方式だと、疑似円)では多角形なので、

y = sin(θ×n) × r

x = cos(θ×n) × r

(nはfor等でインクリメント(n++)して繰り返した場合の変数)

とすることで、円を書くことができます。

 

 

 

 

  参考例

 

半径0.8の円を書くためのプログラムです。参考程度に乗せます。

なお注意点としては、C言語のsinやcosは度数法ではなく弧度法(ラジアン)です。

一度変換してから計算しても良いですが、今回は弧度法のみを用いて計算しています。(つまり度数法に変換しない)

ちなみに、360°は弧度法で2πです。

 

 

#include <stdio.h>

#include <GL/glut.h>

#include <math.h>

 

#define RADIUS 0.8 //半径

#define POLYGON_N 6 //◯角形かを指定

 

#define PI 3.14159265358979323846 //PIの定義

 

//ウィンドウ操作をする際は、ここで書き換えるための関数

void display(void);

 

int main(int argc, char* argv[]) {

              //OpenGL(GLUT)セットアップ

              glutInit(&argc, argv);

              glutInitDisplayMode(GLUT_RGB);

              glutInitWindowSize(320, 320);

 

              //ウィンドウを生成 タイトル名を設定

              glutCreateWindow("GLUT Test");

 

              //display関数でdisplay操作

              glutDisplayFunc(display);

 

              glutMainLoop(); //無限ループ

}

 

//ウィンドウを操作する際は、ここで書き換える

void display(void) {

              //背景色を黒に設定

              glClearColor(0, 0, 0, 0);

 

              //長方形を描画

              //塗りつぶし

              glBegin(GL_POLYGON);

              //白

              glColor3d(1, 1, 1);

 

              //円を書く

              for (int i = 0; i < POLYGON_N; i++) {

                            double angle = 2 * PI / POLYGON_N * i; //次に求める頂点の角度を指定

                            double x = cos(angle) * RADIUS;

                            double y = sin(angle) * RADIUS;

                            glVertex2d(x, y);

              }

 

              //描画終了

              glEnd();

 

              //ディスプレイに出力

              glFlush();

}

 

 

 

 

  多角形が奇数の時、気持ち悪い

 

 

これは、右から処理しているため、起こる現象です。

これを対処するには、図形自体を90°(π/2)分回転させることで対処できます。

 

具体的には、angleに90°(π/2)足してあげればOKです。

 

 

//円を書く

for (int i = 0; i < POLYGON_N; i++) {

              double angle = 2 * PI / POLYGON_N * i + (PI / 2); //次に求める頂点の角度を指定

              double x = cos(angle) * RADIUS;

              double y = sin(angle) * RADIUS;

              glVertex2d(x, y);

}

 

 

直りました。

 

 

 

  一体何角形で丸に見えるのか

 

試してみました。

 

10角形

 

15角形

 

20角形

 

25角形

 

30角形

 

35角形

 

40角形

 

25角形くらいで、ほぼ丸に見えますね。

実際には、+10くらいして、35角形くらいを目安に使えばよいのではないかと思います。

 

 

 

  余談(記事には全く関係ありません)

 

最近株を始めました。

なんか色々話題になってから始めたので、手遅れ感ありますが、プラスになるように頑張っていこうと思います。

 

実は最初、短期トレードで失敗(5万円位)したので、今後は中期&長期トレードにしていこうと思いました。もしかしたら、たまにそのへんに関してもブログで書いていくかもしれません。

(ゆっくりゆっくりプラスにしていかないと…)

こんにちは。Yukiです。

今回は、OpenGL(GLUT)を使ってみたいと思います。

 

 

  OpenGL(GLUT)とは

 

OpenGL(Open Graphic Library)とは、グラフィック関係のライブラリです。

映像や画像を出力することは、かなり大変なのですが、それらを簡単に出来るようにしたライブラリです。

ただ、OpenGL自体はOSに依存しにくい仕様だったのですが、それでもWindowsやLinuxなど、マウスポインタの取得方法やキーボードの取得方法などが違うため、そこら辺を、若干設定しないといけません。そこら辺を簡単に出来るようにして、OS依存しなくしたのがGLUTです。(若干違うような気もしますが)

 

まあややこしいですが、GLUTを使うと、OpenGLを簡単に使えるようになります。

 

(ただし、GLUTを使うことで、OpenGLの複雑な機能が使えなくなってしまうという問題もあります。が、今回はそんなに難しいことをしないので、GLUTを使用します。というかそんな難しいことをするなら、Unityを使ったほうが楽な気がします)

 

 

ちなみに、似た名前でOpenCVというやつもありますが、あっちは、画像処理や解析・機械学習に特化したライブラリです。(用途が違います)

 

 

 

  早速やってみる

 

今は非推奨な方法になってしまいましたが、Visual Studioで開発することができます。

(具体的には、ライブラリがNuGetで取得可能)

今回はVisual Studio Community 2022で開発します。(今後はVSと略します)

 

まずは、VS2022を開き、C++プロジェクトを作ります。

 

もしない場合は、下の”さらにツールと機能をインストールする”から、C++によるデスクトップ開発を選択して、インストールします。

 

 

名前などは自由に変更してください。

次にNuGetからGLUTをインストールします。

 

参照を右クリックし、Nugetパッケージの管理…を選択します。

 

 

その後、出てきた検索欄に”GLUT”と入力し、nupenglを選択。インストールします。

 

 

次に、ソースファイルを新規作成します。

ソリューションエクスプローラーのソースファイルを右クリックして、追加、新しい項目を選択します。

 

 

今回はmain.cppとします。

 

これでGLUTの設定はOKです。次に、C++のコンパイル・実行が出来るか確かめます。

(ここはスキップしてもOK)

 

 

#include <stdio.h>

 

int main(void){

    printf(“Hello World!”);

    return 0;

}

 

 

 

 

上にあるローカル Windows デバッガー(再生ボタンみたいなやつ)を押します。

 

OKですね。(誤字っている…)

 

次に、GLUTのテストプログラムを書いてみます。

今回はテストなので、黒い背景に白いブロックを描画してみます。

 

 

#include <stdio.h>

#include <GL/glut.h>

 

//ウィンドウ操作をする際は、ここで書き換えるための関数

void display(void);

 

int main(int argc, char* argv[]) {

              //OpenGL(GLUT)セットアップ

              glutInit(&argc, argv);

              glutInitDisplayMode(GLUT_RGB);

              glutInitWindowSize(640, 640);

 

              //ウィンドウを生成 タイトル名を設定

              glutCreateWindow("GLUT Test");

 

              //display関数でdisplay操作

              glutDisplayFunc(display);

 

              glutMainLoop(); //無限ループ

}

 

//ウィンドウを操作する際は、ここで書き換える

void display(void) {

              //背景色を黒に設定

              glClearColor(0, 0, 0, 0);

 

              //長方形を描画

              //塗りつぶし

              glBegin(GL_POLYGON);

              //白

              glColor3d(1, 1, 1);

              //長方形の座標を設定

              glVertex2d(-0.4, 0.4);

              glVertex2d(0.4, 0.4);

              glVertex2d(0.4, -0.4);

              glVertex2d(-0.4, -0.4);

              //描画終了

              glEnd();

 

              //ディスプレイに出力

              glFlush();

}

 

 

 

結果はこんな感じになりました。

 

 

ちなみに、

glBegin(GL_POLYGON)で描画開始

 

glColor3dで色指定(0~1まで double)

glVertex2dで、座標指定です。-1から1まで(double)になります。

描画が終わったら、glEnd();とすることで、描画終了になります。

 

glFlush();で画面に出力されます。

 

 

  今後

 

今後は、スイカゲームもどきを作っていくために、色々やってみたいと思います。

 

 

  余談

 

最近A列車で行こうが面白くて、遊んでます。

いつか、ブログに書きたいです。(下手すぎて破産しちゃう…)