Получить преобразованные координаты с холстом - PullRequest
4 голосов
/ 23 мая 2011

Если я использую функцию преобразования, например translate / rotate, на холсте, то все точки преобразуются при передаче в любую функцию холста. Это работает как очарование, но есть ли способ просто получить преобразованную точку без фактического рисования?

Это будет очень полезно при отладке. Все, что я могу сейчас сделать, это посмотреть, где находится точка, но я не могу получить вычисленные преобразованные координаты.

Итак, скажем, я поворачиваюсь на 90 градусов, есть ли какая-либо функция, которая принимает точку (т.е. (10, 0)) и возвращает преобразованную точку (т.е. (0, 10))?

Я в основном имею в виду что-то вроде этого:

ctx.rotate(90 * Math.PI / 180);
ctx.transformed(10, 0); // would return (0, 10) as an array or something

1 Ответ

3 голосов
/ 23 мая 2011

Краткий ответ «по умолчанию».

Вам нужно будет отслеживать текущее преобразование самостоятельно, потому что нет способа его получить (люди отправили ошибок , потому что это кажется таким ненужным).

Такие библиотеки, как Cake.js , и многие из нас, по сути, дублируют код преобразования, чтобы отслеживать его, чтобы мы могли делать такие вещи. Как только вы отследите это, все, что вам нужно, это:

function multiplyPoint(point) {
  return {
    x: point.x * this._m0 + point.y * this._m2 + this._m4,
    y: point.x * this._m1 + point.y * this._m3 + this._m5
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...