В последнее время я видел много javascript-проектов и библиотек, связанных с холст-графикой, и мне было интересно, как они обрабатывают систему координат. При рисовании фигур и векторов на холсте точки рассчитываются на основе декартовой плоскости и преобразуются для холста или все рассчитывается непосредственно для холста?
Я попытался поиграть с рисованием круга, изобразив все его касательные линии до тех пор, пока пересечения линий не начнут напоминать кривую, и обнаружил, что разница между декартовыми плоскостями, с которыми я знаком, и системой координат, используемой веб-браузерами, очень сбивает с толку. Функция для круга, например, «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).
У меня такое чувство, что я слишком усложняю это, но я не могу понять чистый способ работы с холстом.