最近、キャンバス グラフィック関連の JavaScript プロジェクトやライブラリを多数目にしており、それらが座標系をどのように処理するのか疑問に思っていました。キャンバスに図形やベクトルを描くとき、ポイントはデカルト平面に基づいて計算され、キャンバス用に変換されますか? それとも、すべてキャンバス用に直接計算されますか?
線の交点が曲線に似てくるまで、すべての接線をグラフ化して円を描いてみましたが、慣れ親しんだデカルト平面と Web ブラウザーで使用される座標系との違いが非常にわかりにくいことがわかりました。たとえば、「y^2 + x^2 = r^2」という円の関数は、「(y-1)^2 + (x-1)^2 = r^2」に変換する必要があります。キャンバスに表示されます。そして、負の勾配はキャンバス上の正の勾配であり、すべてが逆さまになります:/ .
私が考える最も簡単な方法は、デカルト平面の原点がキャンバスの中心にあると仮定し、それに応じて座標を調整することでした。500 x 500 のキャンバスでは、中心は 250,250 になるため、ポイントが 50,50 になると、(250 + 50, 250 - 50) = (300, 200) に描画されます。
これを複雑にしすぎている気がしますが、キャンバスを操作するためのクリーンな方法に頭を悩ませることはできません。