Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392

Вращение фигуры вокруг точки

19.12.2013, 00:36. Показов 11275. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть точка и есть набор фигур, расположенных вокруг этой точки. Как вращать эти фигуры против часовой стрелки вокруг этой точки?

Добавлено через 15 минут
что самое интересное, не подключается пространство имён System.Windows.Media...и как тогда вращать?!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2013, 00:36
Ответы с готовыми решениями:

Вращение фигуры вокруг центра оси
Имеется след. класс фигуры: class Model { /// <summary> /// Массив рёбер /// </summary> ...

Вращение фигуры вокруг произвольной оси
Приветствую! Подскажите формулу для вращения. К примеру есть квадрат или любой другой объект, который нужно повернуть вокруг своей оси...

Осуществить вращение фигуры(квадрата) вокруг своей оси
Здравствуйте, пытаюсь написать алгоритм, который при зажимании мыши вращает квадрат вокруг своей оси. Почему то после полного вращения...

1
80 / 58 / 11
Регистрация: 16.12.2013
Сообщений: 175
19.12.2013, 10:36
Лучший ответ Сообщение было отмечено Кротяка как решение

Решение

C#
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
36
37
38
public class Pt{ public double x; public double y; }
 
public class Rotation {
        protected double _Alpha;
        protected double a1, b1, a2, b2; // Direct translation coefficients
        protected double ia1, ib1, ia2, ib2; // Inverse translation coefficients
        /// <summary>
        /// Угол поворота в радианах
        /// </summary>
        public double Rad { get { return _Alpha; } set { _Alpha = value; Create(_Alpha); } }
        /// <summary>
        /// Угол поворота в градусах
        /// </summary>
        public double Deg { get { return _Alpha * 180.0 / Math.PI; } set { _Alpha = value * Math.PI / 180.0; Create(_Alpha); } }        
 
        public Pt Direct(Pt p) {
            Pt r = new Pt();
            r.x = a1 * p.x + b1 * p.y;
            r.y = a2 * p.x + b2 * p.y;
            return r;
        }
 
        public Pt Inverse(Pt p) {
            Pt r = new Pt();
            r.x = ia1 * p.x + ib1 * p.y;
            r.y = ia2 * p.x + ib2 * p.y;
            return r;
        }
             
        protected void Create(double fi) {
            a1 = Math.Cos(fi); b1 = -Math.Sin(fi);
            a2 = Math.Sin(fi); b2 = Math.Cos(fi);
            double dd = a1*b2 - b1*a2;
            ia1 = b2 / dd; ib1 = -b1 / dd;
            ia2 = -a2 / dd; ib1 = a1 / dd;
        }        
    }
}
Вращает относительно точки с координатами 0,0. Туда и обратно. Чтобы вращать вокруг любого центра, надо сначала вычесть координаты центра вращения из координат точки, повернуть, а затем снова прибавить координаты центра вращения к результату. Добавьте по вкусу конструкторы и перегрузите операторы +, -, *, / классу Pt - будет очень красиво вращать.
C#
1
2
3
4
5
6
7
8
9
10
        public static Pt operator +(Pt p, double inc) { return new Pt(p.x + inc, p.y + inc); }
        public static Pt operator +(Pt p, Pt inc) { return new Pt(p.x + inc.x, p.y + inc.y); }
        public static Pt operator -(Pt p, double dec) { return new Pt(p.x - dec, p.y - dec); }
        public static Pt operator -(Pt p, Pt dec) { return new Pt(p.x - dec.x, p.y - dec.y); }
        public static Pt operator -(Pt p) { return new Pt(-p.x, -p.y); }
        public static Pt operator *(Pt p, double val) { return new Pt(p.x * val, p.y * val); }
        public static Pt operator *(double val, Pt p) { return new Pt(p.x * val, p.y * val); }
        public static Pt operator /(Pt p, double val) { return new Pt(p.x / val, p.y / val); }
        public static Pt operator *(Pt p, Pt val) { return new Pt(p.x * val.x, p.y * val.y); }
        public static Pt operator /(Pt p, Pt val) { return new Pt(p.x / val.x, p.y / val.y); }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2013, 10:36
Помогаю со студенческими работами здесь

Вращение сложных фигур вокруг определенной точки
Как орагнизовать в коде, вращение сложных фигур вокруг определенной точки ? Такие как: многоугольник,ромб,трапеция и т.д.Прямоугольник...

Вращение букв вокруг оси
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Вращение колеса вокруг своей оси
Помогите. Я уже запарилась. В общем, мне нужно что бы колесо со спицами двигалось по осе X и вращалось ВОКРУГ СВОЕЙ ОСИ и никуда не...

Вращение одной сферы вокруг другой
Здравствуйте, тему для курсовой выбрал &quot;моделирование атома&quot;. Пользоваться библиотеками нельзя, только попиксельно вырисовывать. ...

Поворот точки вокруг другой точки
Собственно задачу я перед собой поставил вращать вокруг центра основания треуольник... нашел формулу вот тут (**********), и впихнул ее в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru