Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2

Объясните формулы "матрица вращения на плоскости"

10.02.2025, 22:29. Показов 7975. Ответов 109
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".

x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)

Как бы Вы их объяснили первокурсникам? Желательно "под запись", т.е. что должно быть у детей в конспектах?

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2025, 22:29
Ответы с готовыми решениями:

Угловая скорость вращения тела на плоскости
Добрый день! У меня простая задача, просто хочу уточнить, правильно ли я понимаю решение. Есть вращение диска на плоскости вокруг своей...

Поверхность вращения. Построение двумерного графика в 3д плоскости.
Задание:отобразить в левой системе координат поверхность вращения вокруг оси OZ кривой z=4/x^2 при y=0. У меня проблема с построением...

Матрица вращения
Здравствуйте! Я совсем молодой пользователь МатЛаба. Возникла проблема с решением задачи в матлабе. Нужно используя ротационную...

109
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,217
15.02.2025, 09:43
Студворк — интернет-сервис помощи студентам
Вот, вместе с тангенсом суммы аргументов.

Кликните здесь для просмотра всего текста
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
15.02.2025, 10:35  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Вот, вместе с тангенсом суммы аргументов.
Ну и как, много ли Вы поняли в этом доказательстве? Мне в 1977 понять так и не удалось, сейчас тем более (сильно отупел). Правда научился выводить эти формулы "по чертежу и Пифагору", длинно но хоть понятно. Теперь пожуем красивое доказательство.

Возьмем 2 единичных радиус-вектора, они соответствуют углам a и b

v1 = (cos(a), sin(a))
v2 = (cos(b), sin(b))

Их скалярное произведение: dot(v1, v2) = cos(a) * cos(b) + sin(a) * sin(b)

Это косинус угла между этими (единичными) векторами: cos(a - b) = cos(a) * cos(b) + sin(a) * sin(b)
Заменим знак используя sin(-b) = -sin(b), итого

cos(a + b) = cos(a) * cos(b) - sin(a) * sin(b)

Quod erat demonstrandum
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,217
15.02.2025, 11:45
Цитата Сообщение от Igor3D Посмотреть сообщение
Ну и как, много ли Вы поняли в этом доказательстве?
Всё понял. Где-то в 1979 году.
0
wound up as Aussie
324 / 105 / 19
Регистрация: 15.05.2019
Сообщений: 427
15.02.2025, 16:01
Цитата Сообщение от Igor3D Посмотреть сообщение
Мне в 1977 понять так и не удалось,
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Всё понял. Где-то в 1979 году.
В 2011 я вывел формулу приближенного вычисления угла ( arccos(alpha)), по сути, исходя из катета. (формула опубликована на сайте наука и жизнь, hatch assembler и ещё там где-то - не помню....
Т.е. управляя переменным резистором (грубо говоря) можно управлять закрылками ракеты, например, без микроконтроллера, т.е. напрямую. (просто аналоговой техникой со скоростью нано). Точность 10 -4 степени на дельта углах до 30 градусов.
А вот эти формулы (igor3d), хорошее кстати доказательство, это просто переход в другую плоскость...
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
15.02.2025, 19:48  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Всё понял.
Ну хорошо если так Не исключено что в учебнике какое-то "классическое" доказательство используемое уже сотни лет. Как-то оно напоминает кватернионы и Гамильтона. Это просто у меня такое впечатление

Однако ж мы отклонились от темы. Все ли мы объяснили/дали первокурснику ? Увы, на полное объяснение "под запись" не разорился никто. Разобрались с доказательством/обоснованием этих формул - дело хорошее, нужное. Но и тупенько их запомнить - особого греха не вижу. Главное - уметь (эффективно) юзать. Тут, на мой взгляд, упущена важная вещь. Какие будут мнения?
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
16.02.2025, 00:38
Цитата Сообщение от Igor3D Посмотреть сообщение
Их скалярное произведение: dot(v1, v2) = cos(a) * cos(b) + sin(a) * sin(b)
Это косинус угла между этими (единичными) векторами: cos(a - b) = cos(a) * cos(b) + sin(a) * sin(b)
Эквивалентность этих двух определений требует доказательства.

Доказательство можно посмотреть тут:
Скалярное произведение векторов
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
16.02.2025, 01:44  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Эквивалентность этих двух определений требует доказательства.
Любое доказательство по меньшей мере "имеет право" ссылаться на уже доказанное, в том числе и на "официальные" определения. Иначе цепь доказательств станет невыносимой Хотя да, с "эквивалентностью" мне тоже не все ясно
Цитата Сообщение от Shamil1 Посмотреть сообщение
Доказательство можно посмотреть тут:
Скалярное произведение векторов
Не увидел что хотелось бы. Есть два определения, (6) и (7) в статье. Первое - длины на косинус. Второе - сумма произведений. Каким образом из первого следует второе или наоборот? В статье многообещающая фраза
Кажущееся привычным перемножение скобок
...
не так очевидно для векторов. Во всяком случае, нужно ещё доказать, что оно согласуется с определением (6) скалярного произведения.
Но дальше доказывается умножение (a + b)(c + d), нафиг это надо?

Все-таки все хорошо в меру, и логика тоже. Где-то надо остановиться и тупенько запомнить
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
16.02.2025, 02:03
Доказательства всех четырёх формул.

1) По теореме Пифагора квадрат расстояния между двумя точками Pα и Pβ на единичной окружности:
(cosβ - cosα)2 + (sinα - sinβ)2
То же расстояние после поворота на угол β (вычтем β из обоих углов):
(1 - cos(α - β))2 + (sin(α - β) - 0)2
Отсюда, с учётом cos2x + sin2x = 1, получаем:
2 - 2(cosα cosβ + sinα sinβ) = 2 - 2 cos(α - β)
cos(α - β) = cosα cosβ + sinα sinβ

2) Так как cos(-x) = cosx и sin(-x) = -sinx, то:
cos(α + β) = cosα cos(-β) + sinα sin(-β)
cos(α + β) = cosα cosβ - sinα sinβ

3) cos(π/2 - x) = cos(π/2) cosx + sin(π/2) sinx = sinx
Подставляя x = π/2 - y, получим:
sin(π/2 - y) = cos(π/2 - (π/2 - y)) = cosy
С учётом этих тождеств:
sin(α - β) = cos(π/2 - (α - β)) = cos((π/2 - α) + β)) = cos(π/2 - α) cosβ - sin(π/2 - α) sinβ = sinα cosβ - cosα sinβ
sin(α - β) = sinα cosβ - cosα sinβ

4) Так как cos(-x) = cosx и sin(-x) = -sinx, то:
sin(α + β) = sinα cos(-β) - cosα sin(-β)
sin(α + β) = sinα cosβ + cosα sinβ
1
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
16.02.2025, 02:10
Цитата Сообщение от Igor3D Посмотреть сообщение
Любое доказательство по меньшей мере "имеет право" ссылаться на уже доказанное
Не совсем. Например, при доказательстве теоремы Пифагора нельзя ссылаться на (уже доказанную кем-то ранее) теорему Пифагора.

Цитата Сообщение от Igor3D Посмотреть сообщение
Каким образом из первого следует второе или наоборот?
Сразу за (7) идёт доказательство эквивалентности с использованием разложения на единичные векторы.

Цитата Сообщение от Igor3D Посмотреть сообщение
Но дальше доказывается умножение (a + b)(c + d), нафиг это надо?
Доказывается, что это (справедливое для чисел) тождество выполняется также и для скалярного произведения векторов.
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
16.02.2025, 22:37  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Сразу за (7) идёт доказательство эквивалентности с использованием разложения на единичные векторы.
Это доказательство самого (7) (сумма квадратов длин), оно никак не связано с (6) (косинус на длины)
Цитата Сообщение от Shamil1 Посмотреть сообщение
Доказывается, что это (справедливое для чисел) тождество выполняется также и для скалярного произведения векторов.
Да, и при этом используется (6) косинус (в виде "проекция на длину"), но без всяких доказательств эквивалентности

Не по теме:

Заметим что чем дальше вопрос от жизни/практики - тем охотнее он обсуждается. Макс постов набирают совершенно идиотские темы :) Что в принципе понятно - люди заходят на форум отдохнуть

0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
17.02.2025, 14:42
Цитата Сообщение от Igor3D Посмотреть сообщение
Да, и при этом используется (6) косинус (в виде "проекция на длину"), но без всяких доказательств эквивалентности
(6) - это основное определение (при данном подходе).

Дальше даётся альтернативное определение (7).
Приводится доказательство его эквивалентности:

(строчные буквы - вектора, большие - модули, то есть, числа)
a*b = (Axi + Axj) * (Bxi + Bxj) = ... = Ax*Bx + Ay*By

Цитата Сообщение от Igor3D Посмотреть сообщение
Да, и при этом используется (6) косинус (в виде "проекция на длину"), но без всяких доказательств эквивалентности
Первое определение верно, не зависимо от того, верно ли (эквивалентно ли первому) второе определение.

Добавлено через 1 минуту
Цитата Сообщение от Igor3D Посмотреть сообщение
Заметим что чем дальше вопрос от жизни/практики - тем охотнее он обсуждается.
ИМХО Вы путаете следствие и корреляцию.
Чем чётче и проще сформулированы условия задачи, тем охотнее она обсуждается.
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
17.02.2025, 18:50  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Дальше даётся альтернативное определение (7).
Приводится доказательство его эквивалентности:
(строчные буквы - вектора, большие - модули, то есть, числа)
a*b = (Axi + Axj) * (Bxi + Bxj) = ... = Ax*Bx + Ay*By
Правду сказать, никогда не понимал что тут "доказывается". Ну ввели правила i, j, здесь ортогональные/независимые компоненты дают нулевое произведение. И получили что хотели. На здоровье, но это просто "волевое решение". Вот если за исходные принять формулы стартового поста - тогда да, выходит что косинус равен сумме произведений.

Цитата Сообщение от Shamil1 Посмотреть сообщение
ИМХО Вы путаете следствие и корреляцию.
Чем чётче и проще сформулированы условия задачи, тем охотнее она обсуждается.
"Достоинства являются продолжением недостатков" и наоборот. "В пределе" идеальная задача совершенно бесполезна Взглянуть по-новому на скалярное произведение конечно небезынтересно (во всяком случае мне), но практическая польза равна нулю. Впрочем с популярными здесь комбинаторными задачами - то же самое. Дальше "гимнастики ума" дело не идет.

Практическая задача - совершенно иное дело. Вот мое "решение" для стартового поста (копия чтобы было под рукой)
Кликните здесь для просмотра всего текста
1.
x' = x * cos(a) - y * sin(a)
y' = x * sin(a) + y * cos(a)

Эти формулы могут быть использованы для поворота 2D вектора/координаты (x, y) вокруг точки (0, 0) на угол a. Положительный угол соответствует вращению против часовой стрелки. Говорят также CCW (CounterColckWise)

2. Доказательство/обоснование. Данные формулы легко получаются из тригонометрических для суммы углов

cos(a + b) = cos(a) * cos(b) - sin(a) * sin(b)
sin(a + b) = cos(a) * sin(b) + sin(a) * cos(b)

В равенствах умножим обе части на r - длину вектора (x, y) и заменим параметрические координаты на декартовы

x = r * cos(b)
y = r * sin(b)

x' = r * cos(a + b)
y' = r * sin(a + b)

3. Данные формулы часто записываются в виде матрицы
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{pmatrix}cos(a)& -sin(a)\\sin(a) & cos(a)\end{pmatrix}
Важно: данная запись в нотации "column major" широко используемой во многих приложениях, напр OpenGL. Матрица применяется "слева", т.е. строка матрицы множится на вектор-столбец (трансформируемой) координаты
Тут не хватает "доброй половины", и дело совсем не в доказательстве простых формул (оно здесь не так уж важно). Может Вы считаете упущенное столь очевидным что и упоминать не стоит? Поверьте, вчерашний школьник этого не знает. Или в самом деле не видите? (не верю)
0
18.02.2025, 09:03  [ТС]

Не по теме:

что-то спойлер слетел, показывается без него
Обновил - вроде норм

0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
25.02.2025, 20:26  [ТС]
Апну темку
Цитата Сообщение от Catstail Посмотреть сообщение
вращения даже трехмерного пространства (не говоря уже о бОльших размерностях) - более сложная задача. Имеет место замечательная теорема примерно такого содержания "Два поворота вокруг двух векторов, исходящих из начала координат эквивалентны повороту на некоторый угол вокруг некоторого вектора". Найти этот вектор и этот угол - довольно сложная задача. И здесь очень может помочь алгебра кватернионов.
Во-первых, спасибо за ссылку, книженция очень неплохая. "Быстро проглотить" конечно не получится, но любой параграф можно понять/осмыслить. Оказывается, в 1973 люди писали гораздо лучше!

Но вот все остальное от том "как это сложно" мне напомнило старый анекдот
- Ах как красиво вы работаете! А вот если бы вы стакан маханули - вы бы так работать уже не смогли! Верно, товарищ рабочий?

- Та нет, думаю - смог бы

Не по теме:

Та чего же все-таки там не хватает? (уже подсказываю изо всех сил :)

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
26.02.2025, 07:48
Цитата Сообщение от Igor3D Посмотреть сообщение
Та чего же все-таки там не хватает?
- кому??? Лично мне - всего достаточно.
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
26.02.2025, 17:55  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- кому??? Лично мне - всего достаточно.
Так уж и всего. Вас не насторожила эта фраза?
Цитата Сообщение от Igor3D Посмотреть сообщение
Эти формулы могут быть использованы для поворота 2D вектора/координаты (x, y) вокруг точки (0, 0) на угол a.
И вспомним классику
У тебя там не закрытый, а открытый перелом!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
26.02.2025, 19:37
Igor3D, фраза верная. Что тут должно насторожить?
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
26.02.2025, 22:48  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
фраза верная. Что тут должно насторожить?
Ну вот это осторожное "могут быть использованы", ведь не утверждается что "они (именно) для этого предназначены". Могут быть и для другого использованы

Сказать/озвучить мне конечно не жалко, но тогда
- ну это само собой
- это очевидно..
- так я об этом и говорил..
- и это все?
- кого ты этим хотел удивить?
- он что, делится опытом?
И.т.д. И.т.п. Все становятся очень, ну очень умными "задним числом", когда "правильный ответ" известен А вот без него как-то "приходится наслаждаться тишиной" Это нормально, такова природа человека
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
27.02.2025, 07:32
Igor3D, я, кажется, понимаю, к чему сводится дискуссия. К тому, что Вы требуете от сознания собеседников, чтобы оно (их сознание) прошло тем же путем, что и Ваше... А это - достаточно редкая ситуация. Путь понимания у каждого свой. И Вы (подсознательно) это и сами понимаете, когда пишете "вы скажете - ну, это само собой".

Линейная алгебра возникла в 17-м веке, у истоков стоял Эйлер. Именно он ввел понятие аффинного преобразования. С тех прошло в круглых цифрах 300 лет. Все значимое на эту тему давно сказано. Вы считаете, что открыли что-то новое? Ну, огласите! А я найду Вам источник, где это сказано до Вас. Найду с высокой вероятностью.

Без этого считаю дальнейшую дискуссию бессмысленной.
0
1962 / 818 / 114
Регистрация: 01.10.2012
Сообщений: 4,756
Записей в блоге: 2
27.02.2025, 15:00  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Вы считаете, что открыли что-то новое?
Нет конечно Понятно что аналитическая геометрия - довольно консервативная дисциплина где все известно уже сотни лет (и в этом немало плюсов).

Вернемся к теме. Считаю что препод обязан добавить самое главное
Эти же формулы используются для поворота 3D векторов/координат. В этом случае x и y не числа(скаляры), а ортогональные 3D вектора равной длины (но необязательно единичной). Результатом будет поворот этих векторов вокруг оси проходящей через начало координат (0, 0, 0) в направлении z = cross(x, y)

На практике обычно мы имеем не пару векторов, а только один, напр x который нужно повернуть вокруг заданной (вектором) оси. В этом случае ...
Ну и дальше подробно, на примере, разжевать использование. (Коротенько так, минут на 40, больше не нужно)

Цитата Сообщение от Catstail Посмотреть сообщение
А я найду Вам источник, где это сказано до Вас. Найду с высокой вероятностью.
Я "открыл" эти формулы (вернее эту особенность, сами формулы знал) в середине 90-х лазая по каким-то исходникам. С тех пор я применял их в своем коде много сотен раз для векторов, а вот для скаляров - ну может и было но не помню. При желании можно вращать только ими, но впадать в крайность не стоит, матрица и кватернион - тоже вещь. Доказательством особо не интересовался (главное работает), открывал вику, очень похоже выглядит "формула Родриго". Как уже говорил, создал эту тему после чтения одной (весьма художественной) статьи на хабре.

Цитата Сообщение от Catstail Посмотреть сообщение
К тому, что Вы требуете от сознания собеседников, чтобы оно (их сознание) прошло тем же путем, что и Ваше...
Напротив, мне было бы очень интересно увидеть "другой путь", но увы - пока не наблюдаю никаких. Ну и не то чтобы я такой уж "защитник молодежи", но как-то досадно: вместо того чтобы пояснить базовую вещь - тыкнут в морду 2 слайда, и все дела

Не по теме:

Все-таки "правельный" (через "е") звучит куда лучше
И про "высокую вероятность" мне понравилось :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2025, 15:00
Помогаю со студенческими работами здесь

Матрица вращения
Нужно чтобы вместо Х вращалась буква П. Вот сам код uses crt,graph; const minXm=-100;maxXm=2000; minYm=2000; maxYm=-100; ...

Матрица вращения (X->Y->Z)
Добрый день. Подскажите как составить матрицу вращения, если знаю координаты вектора в начальном и конечном положении.

Метод косоугольного вращения. Матрица поворота
Доброго времени суток. В факторном анализе в статистике есть метод косоугольное вращение. Пишу программу для его реализации и не могу...

Матрица вращения облака точек вида x,y,z
Добрый день господа сочувствующие! Никто не подскажет способ и функционал для матрицы вращения облака точек вида x,y,z. Проще выражаясь...

В какой момент времени после начала вращения платформы груз начнет соскальзывать, объясните как решать
Здравия, соратники! Разъясните,пожалуйста, как решать задачу Google не помог На краю вращающейся платформы радиуса R=1,0 м лежит груз. В...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru