■
N氏「文系の壁でわかりません」
A氏「馬鹿の壁で死にそうです」
日本のごく一部が泣いた昨日の内容、
何だろうと思ってもめんどくさくて実行しない人が大半だと思うので解説編。
実行するとこうなります。
○何が起きているか
Forで回してる処理の一つ一つは
です。
x1 = ( x0 + 680 * Cos( 3.141592 * ang / 180 ) )
y1 = ( y0 - 680 * Sin( 3.141592 * ang / 180 ) )
x2 = ( x0 - 680 * Cos( 3.141592 * ang / 180 ) )
y2 = ( y0 + 680 * Sin( 3.141592 * ang / 180 ) )
Line x1 y1 x2 y2
中身は「指定した点(x0, y0)を通る、角度angの直線を描く」というものです。
(直線上の丸印が毎回の描画での指定した点)
どうやって両端の位置を決めているかの説明は以下となります。
この三角形の左下を指定した点とすると、
右上の頂点のx座標は左下の頂点から緑の線の長さだけ右へ移動した値、
右上の頂点のy座標は左下の頂点から緑の青の長さだけ上へ移動した値、
になります。
これを2回、順方向と逆方向に向かって計算すると
(中略)
実際描画される黒い線をどんな長さにしたらいいのかという話があります。
本当は無駄のない長さを指定したいところでしたが、なんかうまく動かなかったので
SRCのメインウインドウ480*480(ワイドのオプションを有効にしなかった場合)に描ける
最長の直線の長さ=画面中央を通る斜め45度の直線の長さ=480 * √2≒680 としました。
この長さにしておけば、画面内のどこを中心に指定されても画面端まで線が描かれます。
(中略)
ね、簡単でしょう?