Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
18 / 18 / 8
Регистрация: 19.09.2015
Сообщений: 47
1

2d canvas поворот проекции от определенной точки на экране, с сохранением положения

07.03.2020, 15:41. Показов 865. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем здравствуйте. В заранее извините, если пишу не в том разделе.

Есть некий объект/объекты на плоскости, проекцию которой я, вращаю относительно точки нажатой на экране. Используя функцию rotate()

Точку, относительно которой происходит вращение, получаю за счет смещения проекции translate()

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    // сделаем первое вращение на 45 градусов относительно координат (100, 100)
 
    // базовая позиция проекции
    var x = 0; 
    var y = 0;
 
    // координаты первой точки
    var x1 = 100;
    var y1 = 100;
 
    var rad1 = (Math.PI/4);
    var rad2 = (Math.PI/2);
 
 
    ctx.translate(x1, y1);
 
    ctx.rotate(rad1); // 45
    
    ctx.translate(-x1, -y1);
 
    // Совершим последующее вращение на 90 градусов, уже относительно координат (200, 200) и с учетом предыдущего сохранения вращения
 
    // получаем расстояние от первых координат до новой точки
    var dist = Math.sqrt(sqr(x1 - 200) + sqr(y1 - 200));
 
    // координаты второй точки с учетом измененного вращения
    var x2 = Math.cos(rad1)*dist+x1;
    var y2 = Math.sin(rad1)*dist+y2;
 
 
    ctx.translate(x2, y2);
 
    ctx.rotate(rad2); // 90
    
    ctx.translate(-x2, -y2);
Моя задача, найти вторую точку и последующие использую rotate() всего один раз. Если проще, то я хочу вращать свою проекцию с сохранением неограниченное количество раз. Но после каждого вращения добавлять + один rotate в код со смещением будет не правильно. Визуальный пример работы можно взять с карты мира, в которой есть возможность вращения.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2020, 15:41
Ответы с готовыми решениями:

Перезагрузка приложения с сохранением положения главной формы
Как можно перезагрузить приложение с помощью Application.Restart(), чтобы главная форма, после...

Поворот картинки с сохранением
Приветствую. Как развернуть картинку так, чтобы при сохранении на диск она оставалась...

Поворот курсора мыши в зависимости от его положения
Подскажите, пожалуйста, что сделать чтобы замененный курсор плавно менял свой наклон, не более +-30...

Изобразить на экране в аксонометрической проекции проволочный каркас куба
Изобразить на экране в аксонометрической проекции проволочный каркас куба, вращающийся вокруг...

0
07.03.2020, 15:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2020, 15:41
Помогаю со студенческими работами здесь

Как узнать координаты проекции вертексов на экране (Opengl es)?
opengl es как узнать координаты проекции вертексов на экране (очень нужны для тачлистенера)? есть...

Изобразить на экране в аксонометрической проекции каркас спиральной пружины
Изобразить на экране в аксонометрической проекции каркас спиральной пружины. pabc.

Изобразить на экране в аксонометрической проекции проволочный каркас правильной n угольной пирамиды
Первый раз создаю тему, не судите строго) Выручите с задачей, совсем все плохо с программированием,...

Изобразить на экране в аксонометрической проекции проволочный каркас правильной n угольной призмы
Изобразить на экране в аксонометрической проекции проволочный каркас правильной n угольной призмы с...

Поворот точки вокруг другой точки в трехмерном пространстве
Есть точка A с координатами . Есть точка B -центр поворота . Я поворачиваю A на 90 градусов по...

Изменение положения элементов на экране
Здравствуйте! Объясните, кто знает. К примеру, у меня на экране расположены TextView и ImageView, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru