Я огляделся вокруг и не могу найти ничего особенного в том, что я пытаюсь сделать.
Как следует из названия, я просто хочу смоделировать трехмерное ортогональное вращение, используя CanvasRenderingContext2D.setTransform()
без перспективы, только ортогональное вращение.
Что я пробовал до сих пор:
Вращение вокруг вектора 45 * в 2D-плоскости достаточно просто, я использую
setTransform(scaleFactor, skewAngle, skewAngle, scaleFactor, 0.5*width, 0.5*height)
Как кажется, центр холста, тот же перекос x
и y
дает правильное вращение, но у меня возникают проблемы с определением коэффициента масштабирования, поскольку перекос достигает бесконечности, когда угол поворота (skewAngle) приближается к 90 *.
Что мне нужно: вращение и соответствующее масштабирование вокруг ЛЮБОГО вектора в 2D-плоскости, например. на основе перпендикулярного вектора к (mousePosition - centerCanvas) - перелистывание к (или от) курсора мыши.
Если кто-нибудь может сломать это для меня, я был бы очень признателен. Если есть статья, которая объясняет это конкретно, это тоже было бы здорово.
Заранее спасибо!