読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

public継承にも似たような問題あったよね。

現在製作中のゲームライブラリでは、次のようにオブジェクトを書いていくことを考えています。

const box b(0.f, 0.f, 32.f, 32.f); // 左上(0,0)、右下(32,32)の長方形を生成
draw(graphic_device, b); // 長方形を描画
draw(graphic_device, b | moved(32.f, 0.f)); // 長方形を右に32ずらしたものを描画
// 左上(0,0)、右下(32,32)の長方形を(0,0)を中心に2ラジアン回転したもの生成
const box rotate_b = b | rotated(2.f) | copied;
draw(graphic_device, rotate_b);

これの流れで次のようなコードを書くと不思議な現象が起きます。

中心(0,0)、半径32の円をx軸方向に2倍したものを生成・・・円じゃないぞ?
const circle c = circle(0.f, 0.f, 32.f) | extended(2.f, 1.f) | copied;

現状このようなコードが書けてしまうですが、どう見てもcは円ではなく楕円ですね。ovalクラスも作ってあるのですが、ひょっとしてcircleクラスはこれに統合して廃止した方がいいのでしょうか。