3/1日記 ===== プログラム ===== * レンダラー進捗。 * ようやく回転処理を加えた。 * ただ、参考にした情報が、どうも中心を毎回生成する方式だったらしく、回転時の座標が安定しない。 * ということで内部を書き換えて毎回元画像の中心座標を参照することにした。 * これだと最悪斜め方向にはみ出る可能性はあるけど、仕方なかろうと割り切ってる。 ---- * 描画方法は逆行列を利用した回転。 * まず、回転後の斜めに大きくなる長さを求める。 * それらの長さを描画する領域として、1点ずつ逆行列を計算し、そこにピクセルが存在したら色を参照する形にする。 * 勿論ない場合が半分くらいじゃないかと思うけど、その処理は最適化できるかもしれない。 * 点があった場合、ピクセルを描画する処理を加える。 * この処理が便利なのは、計算はおそらく全量1回程度で終わること。補間アプローチになる場合、一度描画してそのあと補間を開始するので最悪2倍処理が発生するんだよね。 * 正方形の回転で45度の場合最大1.41*1.41倍か2倍かで選ぶなら前者って感じ。ただ比率が変わるとなると処理負荷はケースバイケースになると思われる。 ---- * X/Y反転処理の計算が間違っていたので修正した。 * あまりに関数に自由度がなくなるので、アドバイスもらって可変長引数を実装してみた。意外とすぐできた。 * 参考:\\ https://qiita.com/keitean/items/fd2be6710efe681cc516 * 考えてたより楽に実装できたのでだいぶ助かった。 * ただ、いくつも引数を持つことができるので間違いに気づきづらいというデメリットはある。ここは仕方ない。 * あと内部の分岐が多くなるので気をつけないと処理が遅くなるところだけが気になるかな。実際とってもややこしいことになった。 * https://x.com/__machia__/status/2027964170780725517?s=20 * いくつかの処理に可変長引数を導入予定。それにともなっていくつかの関数は削除予定。