私が見てきたことから、ほとんどすべてのものは(0、0)が左上にあり、正のY軸が画面の下方向に向かう座標を使用します。
なぜこんな感じ?単純な数学クラスのグラフに示されているように、従来の正のY軸が上向きにならないのはなぜですか?
私が見てきたことから、ほとんどすべてのものは(0、0)が左上にあり、正のY軸が画面の下方向に向かう座標を使用します。
なぜこんな感じ?単純な数学クラスのグラフに示されているように、従来の正のY軸が上向きにならないのはなぜですか?
回答:
これは、履歴で発生します。初期のコンピューターには、左上隅から右下に向かって陰極線で画像を「描画」する陰極線管(CRT)がありました。
グラフィックスカードメモリとCRTの間のインターフェイスを簡単にするために、メモリは最初から読み取られ、画像は左上(最小メモリアドレス)から右下(最大メモリアドレス)に描画されました。
拡張機能(コメントに基づく)
CRTは、当時利用可能であったアナログテレビセットに基づいています。
テレビセットは最初に左から右へ、そして上から下へ一行ずつ画像を作成します。この理由は、西欧諸国の書体にのみ基づいていると考えられます。
これは私が何度も考えてきた素晴らしい質問です。「理由」に対する簡単な答えは、TVフォーマットも左から右、上から下に線を引いたためです。元のコンピューターモニターはCRT画面(小型テレビ)だったため、フォーマットは当然同じままでした。モニターがフラットスクリーンになったとき(およびテレビもフラットスクリーンになったとき)、互換性を簡単にするために同じフォーマットを維持することも同様に自然でした。
もちろん、あなたは尋ねることができます:なぜテレビはこのように描くのですか?それらは20世紀初頭に発明されたので、質問されたとしても、その考えやその欠如がデザインにどの程度含まれているか想像できます。注:小さな「電球」の単純なマトリックスとは対照的に、画面上の適切な線に光線を磁気的に偏向する方程式を取得することは非常に難しいため、失礼になることを意図していません。(この種の単純なドットマトリックスの前に、20世紀初頭に地球上でCRTがどのように発明されたのかという疑問が生じます。)
それにもかかわらず、西洋の言語は左から右、上から下に単語を書くので、おそらくそれは疑問視されなかった(悪いこと)と思います。おそらく、それを違うやり方で行う可能性を誰も思いつかなかったでしょう。
個人的に、私はこの形式が嫌いです。ゲームや楕円軌道を含むその他のシミュレーションをプログラムするときに、この姿勢を身につけました。sin、cos、またはtanを含む描画式を調べるときは常に、y軸パラメーターを扱う記号を慎重に反転させる必要があります。そうしないと、間違ったものが描画されます。例は、任意の2D角度で描かれた楕円のパラメトリック方程式です。それは、罪の罪、罪の罪、および同様のものを切り裂く本当の悪夢でありえます。
簡潔に数学的に言えば、画面は象限1ではなく象限4にあります。これは不必要に複雑です。
ところで、3次元に到達すると、z軸は正の方向に「上方に」移動すると見なされます。ちょっと皮肉。[編集]:たぶん、以下の私のコメントを参照してください。
私が気づいた/見つけた2つのこと:
北半球の日時計(北向きのポインターとディスクが地面に平行)は常に時計回りに回転します。したがって、「時計の文字盤」の上部にゼロアワーを配置すると、シャドウポインターが右に移動し始めます。これは、デカルト座標とテレビ/コンピューター画面まで伝播する、西洋言語の左から右への方向の起源である可能性があります。
古いコンピューターは、グラフィカルオブジェクトをそれほど描画しませんでした。彼らはコマンドプロンプトにテキストを描いた。そのため、行0をy = 0に置くのが自然です。左下に原点がある場合、テキスト行を描く数学はもう少し複雑になり、古い低速のコンピューターには大きな影響を与える可能性があります(1ずつインクリメントするためのショートカットを作成しました。 「++」と呼ばれます)。さらに、画面の解像度を知る必要がありますが、y = 0で行0を実行するだけであれば、解像度を知る必要はありません。
補遺:初期のグラフィックスはベクトルモニターで行われ、ラボで見られるオシロスコープからわずか1ステップ上で、(0,0)が画面の正確な中央にあり、ノブを回してX / Yスケール、Xを設定します/ Yオフセット、および場合によってはX / Y反転。
たとえば、Atari "Asteroids"(1979)の専用ハードウェアはベクトルスクリーンを使用しました。プログラムの座標系が何であるかを知ることは興味深いでしょう。
Ivan Sutherlandの「Sketchpad」システム(1963)はTX-2ベクトルディスプレイに基づいており、「Sketchpad:A-Machine Graphical Communication System」(博士論文、1963年1月)で70ffページに次のように書いています。
TX-2ディスプレイシステムの座標系は、スコープの中心に原点を持ち、各軸の18ビットコンピューターサブワードの左側にある10ビットの偏向情報を必要とします。
...
多くのコンポーネント変数を表現しやすく、18ビット以上の精度を実現するため、Sketchpadは表示システムに必要な表現とは異なる表現を描画するために内部座標系を使用します。この内部システムは「ページ」座標系と呼ばれます。Sketchpadの図面を考えると、ページ座標は固定されていると見なされます。スコープからページへの変換は、拡大鏡を介しているかのように、ページの任意の部分を任意の倍率でスコープ上に表示する機能を提供します(...)ディスプレイのスケール係数は、スコープに表示されます。実際に保存される数値は、図5.2に示すように、SCope SiZeのSCSZと呼ばれる正方形の辺の半分の長さです。スコープ正方形の中心のページ座標も保存されます。これらの数値を変更すると、スコープに表示されるページの部分のサイズが変更され、移動されますが、回転はできません。
73ページの図5.2は、「ページ座標系」がX / Yデカルト座標系の数学規則を使用していることを示しています。(その慣習がそうである理由を尋ねるかもしれません...)
すべてが左上にあるわけではありません。
たとえば、OpenGLは、原点が左下にあることを指定します。これは、API全体に広がります:テクスチャ座標、ビューポート、テクセル長方形、標準のオルソ投影:左下全体です。
ここでの考え方には違いがあります。
本のように、コンピューター画面上で、人々が読むとき(そして、ここでは英語のような言語を想定している)、左から右、上から下に読みます。この質問を書いたときに自分でやったのですが、答えを読んでいるときにやっています。
数学と設計では、グラフをプロットするときに、X軸とY軸があり、正のXが左に、正のYが上になります。
ゲームで2D GUIのようなものを構築する場合、多くの人にとって「左上が原点」の方法でレイアウトする方が簡単で直感的です。
グラフ用紙にデザインやレイアウトを模倣するものを作成する場合、多くの人々にとって「左下が原点」の方法でレイアウトする方が簡単で直感的です。
実際、これらはどちらも非常に非公式の慣習であり、正射投影を設定する場合は、正のXが左右に移動し、正のXが画面の任意のポイント(またはオフ)に原点を持つように選択できます。 Yは上下します。それに応じて投影行列を調整するだけです。
したがって、唯一の重要なことは、使用する規則を選択し、一貫して使用することです。
引数FOR:(例による)
var R uint32 = 0xFF0000FF; //:Red pixel
var W uint32 = 0xFFFFFFFF; //:White Pixel.
var Pixels []uint32 = {
W,W,W,R,R,W,W,W,
W,W,R,R,R,R,W,W,
W,R,R,R,R,R,R,R,
W,W,W,R,R,W,W,W, //:8x8 pixel image of " ↑ "
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W, }
画面上のコードと一致する結果:
左上の原点を使用しなかった場合、赤い矢印は上下逆になります。
これが「なぜ」かどうかはわかりません。まさに、それが左上の起源の正当な理由です。