数学関数について ( No.56 )
日時: 2022/11/28 00:05
名前: REDCHEEKS

ビット演算 >>54-55 では、学校で習った2進数が出てきたね。
では、同じく学校の数学で習った、サイン、コサインはどうするかって?
もちろんコンピュータだからできるけどね、ただ、Sin とか Cos とか、プログラムに書いてもだめだよ。

まあ実務ではあまり使わないが、一応説明しておこう。
せっかく学校で習ったんだから、使ってみたいだろ。
まず、数学関数は、Math を付けないとダメなんだね、Math.Sin とか、Math.Cos とかね(ちなみにMath とは Mathematics=数学の略)
というわけで、また新たなプロジェクトを作ろう。

http://mediasp.kir.jp/img20220326/imgloglog-box/img20221025161542.png
プロジェクトの作成は「Superアリババ翻訳」の時と同じだよ。
ただし、プロジェクト名の D は、「Superアリババ翻訳」ではなく「肉振動」と入力する。

******************************
肉振動 またエッチな話が始まるよ。
******************************

http://mediasp.kir.jp/img20220326/imgloglog-box/img20221127223313.png
@「プロパティ」ボタンをクリックする。
A Text に「ぱっしーん、ぷるぷるん」と入力する
B「イベント」ボタンをクリックする。
C「Paint」を "ダブルクリック" する。

http://mediasp.kir.jp/img20220326/imgloglog-box/img20221127232402.png
@ Form1_Paint 内に、プログラムを記述する。
A「開始」ボタンをクリックする。
B「ぱっしーん、ぷるぷるん」ウインドウが開き、波形が表示されればOK

※ ぱっしーん、ぷるぷるん...盛り上がった焼き豚のように分厚い尻肉は最高、思う存分叩いてやりたい


※ プログラムの解説は、後日

数学関数について(プログラム解説・課題) ( No.57 )
日時: 2023/01/23 21:48
名前: REDCHEEKS

(1) Point? startPoint = null; // 始点(初期値は未設定)

Point? startPoint とは、始点(X座標, Y座標)の事だな、繰り返し処理(for文)の外で定義しているのは、繰り返し処理の中で前回の終点を次の始点として保存しておくため(繰り返し処理の中に書いてしまうと保持できない)
但し、そのため、一回目は、値が入っていないので、それを示すため、null を設定する。
null を設定するため、変数の型は、Point ではなく Point? を使う。 (? がついていると、null が許容される、つまり Nullable なわけだ)


(2) var pen = new Pen(Color.Red, 5); // ペンの色と太さを設定する

線の色と太さを設定する、REDCHEEKS は太い "真っ赤な" 赤が大好き。


(3) for (double x = 0; x < Width; x++) // 表示されたウインドウの幅(Width)繰り返す

ウインドウの幅(Width)分繰り返す、数学関数を使うときは、倍精度浮動小数点(double)型を使う。


(4) double y = 0;

y座標にも同様に、倍精度浮動小数点(double)型を使う。


(5) 数学計算を行う
y += Math.Sin(x / 30) * 0.8; // 波動1を追加する
y += Math.Sin(x / 20) * 0.3; // 波動2を追加する
y *= Math.Pow(0.998, x); // 減衰計算

まあこの辺の数式は、イメージして、適当に試すとよい。
お尻のお肉は左右に割れているから、色々な振動があるだろうね


(6) Y座標の符号反転
y = -y; // 符号反転(数学のY座標は、上がプラスなので)

数学の座標系と、コンピュータの座標系は異なるため変換する(X座標は同じだが、Y座標は異なる)。
プリンタ印刷の関係から、コンピュータのY座標は、下の方がプラス、それを数学の座標(上がプラス)に合わせるため。


(7) その他、微調整
y += 1; // ウインドウの高さの中に入るように調整
y *= (Height / 2); // ウインドウの高さ(Height)の中に入るように調整

ウインドウは、左上が原点(0,0) のため、ウインドウの範囲に表示するための各種調整


(8) 終点(X,Y)の設定
var endPoint = new Point((int)x, (int)y); // 終点

ここで、(int) とは、倍精度浮動小数点(double)型 を 整数(int)型に変換している。
数学関数には、倍精度浮動小数点(double)型が必要だが、画面表示には、画面のドット以下(小数点以下)は不要のため、切り捨てる。


(9) if (startPoint.HasValue) // 始点が設定されている場合
始点は前回の終点を使うため、最初の一発目は、値が入っていない。
エラー発生を防ぐため、始点が設定されている場合のみに制限している。


(10) e.Graphics.DrawLine(pen, startPoint.Value, endPoint); // 線を引く
始点から終点に線を引く、ここで startPoint は、endPoint と違って、.Value がついていることに注意、これは null が許容される型を使っているためである。


(11) startPoint = endPoint; // 次の始点として、現在の終点を設定する
次の始点として、現在の終点を設定する(代入時の startPoint の .Valueは、省略可能)


【課題】ぱっしーん、ぷるぷるん...(5) の数式を調整して、お好みの肉振動を合成しよう


p.s. それでバイブレータをしこしこ作動させ "三角関数を調整しながらお好みの肉振動を作り出し" 射精出来たら最高だね
麻生太郎さんは国会で「三角関数なんて使わない」なんて言っていたけど、三角関数でおなに()は最高

数学関数について(課題解答例・解説) ( No.58 )
日時: 2022/11/30 20:49
名前: REDCHEEKS

http://mediasp.kir.jp/img20220326/imgloglog-box/img20221130130435.png
@ 以前の数式をコメント化する。
A ポーの水車小屋をイメージした肉振動の計算式を記述する。
B「開始」ボタンをクリックする。

尻を突き出す動きに合わせてのピストン運動に加え、つんのめる尻肉全体の振動、さらに左右の表皮がタタンと弾ける痛々しい振動が、グラフ化されればOK。
あとこれをバイブレータに連動すれば、ポーの水車小屋を堪能できるわけだ。

なお、Aのプログラムの先頭で、Math.PI というのが出てくるが、これは円周率 3.14 である。
サイン、コサインで使う角度の単位は、度ではなくラジアンなので、その変換用である(πラジアン = 180°)。
ぱっしーん、ぷるぷるん、円周率 3.14 まぁるいお尻はいいね


p.s. 一つ目のレバーを倒すとシコシコが始まり、二つ目のレバーを倒すと、... タタン、... タタン、子供たちが最も恐れていた事が始まります。
亀頭でそれらを感じ取りながらも、罰が甘くならないように出来る限り堪え、うんと懲らしめるのが貴方の使命です。

<以下ポーの水車小屋より引用>
尻を突き出す動きに連動して、ピストン運動がシコシコ繰り返されるとは、ホントもう最高傑作です。
まっ、複数の少女を使うから、それが可能になるんでしょうけど...
それにしても、よくもまあ、こんな機構を作り出したものです。
おまけに肉の振動が、心地よく伝わって来る......もうたまりません!!
ピストン運動に加え、肉の弾けるイメージ、フィニッシュは時間の問題です。

いえいえ、この子たちの将来のためにも、そう簡単には許しません、私としては出来る限り辛抱します。
でもいつかは辛抱できなくなる時が来ます。
もっとも、それがいつなのか、正確な事は私にも予測できないし、自分の意志では制御出来ません。
神のみぞ知る自然の摂理!
私はただただ、一人一人の泣き顔、打たれる瞬間の表情をじっと見つめながら、その摂理に身を委ねるだけなのです。
神様が堪忍して下さる「そのとき」まで、固く閉じられた水車小屋では、厳しいお仕置きが続くのです