Форум программистов, компьютерный форум, киберфорум
Hrethgir
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Линейное решение нелинейной задачи, с целью применения, с помощью арктангенса, для метода обработки данных из double buffering.

Запись от Hrethgir размещена 10.04.2025 в 17:47. Обновил(-а) Hrethgir 13.04.2025 в 15:20
Показов 4198 Комментарии 14

Публикация в доработке, метод арктангенса в комментариях внизу.
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что прямое соотношение углов через соотношения координат отрезков - невозможно. Но тем не менее будет применён метод апроксимации.
Эта LM дала ответ похожий на нормальный.
В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю.
Assistant
qwen2.5-14b-instruct
.
Сначала изображение .
Уточнение - точка на которую указывает вектор лежит в области треугольника по оси Y от точки А до точки C - то есть точка веектора не выше точки C.

Запрос
Привет. Помоги вывести формулу по приготовленному описанию. На сетке координат дан прямой равнобедренный треугольник A-B-C, с углами у основания равными 45 градусам и с вершиной A угла основания A-B лежащей в начале отсчёта системы координат, и самим основанием (гипотенузой) соосным с осью Y. Координаты вершин этого треугольника, условно все известны по условию. Внутри этого треугольника построен отрезок A-V с известными координатами точки V.
Задача:
Вывести формулу по описанию решения ниже, для расчёта соответствия величины углов BAV и CAV (больший-меньший).
Решение:
Чтобы найти приблизительное отношение этих двух углов, нужно достроить вектор AV до AD , тогда после пересечения достроенного вектора в точке F, перпендикулярной линией СE , где E будет принадлежать AB, можно будет узнать отношение отрезков EF к FC , что будет соответствовать приблизительному соотношению нужных углов.

Чтобы узнать координаты точки D отрезка AD - нужно узнать координаты точки G, для построения вспомогательного перпендикуляра от V к AC. Для этого нужно определить точку H, являющуюся отражением точки V от линии AC (угол линии на сетке равен 45 градусам), для чего нужно просто поменять местами координаты икс и игриком точки V. После этого поделив разницу полученных координат по оси Y, и прибавив к результату деления значение координаты Y точки H - становится известной координата Y точки пересечения G перпендикуляра с линией AC. Чтобы узнать координату X этой точки соответственно нужно разницу координат X точек H и V разделить на два и прибавить значение координаты X точки V . Так как треугольники AVG и предполагаемый ADC подобны, то увеличение координаты Y точки G до той-же координаты точки C пропорционально увеличению координаты Y точки V до искомой координаты Y точки D. Аналогично вычисляется значение координаты X точки D. Для нахождения координат точки F, являющуюся в свою очередь точкой пересечения достроенного вектора и перпендикуляра к нему с точки С, нужно взять во внимание то, треугольники DAC и DFC подобны, то и отрезок FD относится к DC ровно как и DC к известной теперь ADd, следовательно через пропорции координат данных треугльников находимы и координаты F, а следовательно выводима формула для нахождения приблизительного соотношения углов.

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

### Шаг 1: Определение координат точки H (отражения V относительно AC)

Точка V имеет координаты https://www.cyberforum.ru/cgi-bin/latex.cgi?(x_V, y_V).

Для отражения точки V относительно прямой AC, которая образует угол 45 градусов с осью абсцисс (т.е., уравнение прямой \(y = x\)), нужно поменять местами координаты https://www.cyberforum.ru/cgi-bin/latex.cgi?x_V и https://www.cyberforum.ru/cgi-bin/latex.cgi?y_V. Таким образом, координаты точки H будут:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ H = (y_V, x_V) \

### Шаг 2: Определение координат точек G и D

Точка пересечения \(G\) лежит на прямой \(AC\) и имеет уравнение \(x = y\). Координаты точки \(G\) могут быть найдены через середину отрезка, соединяющего V и H:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ G_x = \frac{x_V + y_V}{2} \
https://www.cyberforum.ru/cgi-bin/latex.cgi?\ G_y = \frac{y_V + x_V}{2} \

Для нахождения координат точки \(D\), сначала нужно учесть что треугольники AVG и ADC подобны. Координата Y точки D будет найдена через пропорциональное увеличение от Y точки V до высоты треугольника, а X аналогично:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ D_x = x_V + \frac{(C_y - y_V) * (x_V - 0)}{y_C - 0} \
https://www.cyberforum.ru/cgi-bin/latex.cgi?\ D_y = y_V + (C_y - y_V) \

### Шаг 3: Определение координат точки F

Точка \(F\) лежит на перпендикуляре, проведенном через точку \(V\) и соединяющемуся с прямой \(AC\). Координаты точки \(F\) могут быть найдены через подобие треугольников DAC и DFC:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ F_x = \frac{D_y * x_V}{y_D} \
https://www.cyberforum.ru/cgi-bin/latex.cgi?\ F_y = y_C - (C_y - D_y) \

### Шаг 4: Нахождение отношения EF к FC

Для нахождения приблизительного соотношения углов BAV и CAV, нужно вычислить длины отрезков \(EF\) и \(FC\):

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ EF = D_y - G_y \
https://www.cyberforum.ru/cgi-bin/latex.cgi?\ FC = y_C - F_y \

### Соотношение углов
Соотношение между углами BAV и CAV можно найти через отношение EF к FC:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\ \frac{\angle BAV}{\angle CAV} \approx \frac{EF}{FC} \

Теперь, используя координаты https://www.cyberforum.ru/cgi-bin/latex.cgi?V = (x_V, y_V) и точки треугольника https://www.cyberforum.ru/cgi-bin/latex.cgi?A(0, 0), B(x_B, x_B), C(y_C, y_C):

1. Найдите отражение H.
2. Вычислите координаты G через середину отрезка VH.
3. Определите координаты точки D через пропорциональное увеличение от V до C.
4. Учитывая подобие треугольников, найдите координаты точки F.

Таким образом, вы можете найти приблизительное соотношение углов BAV и CAV с помощью вышеуказанных формул.
Почему мной рассматривается именно эта система - можно узнать здесь Зум изображения от колеса мыши . В программе два массива, где в расчётах они будут перекрываться друг с другом и их ячейки будут смещены друг от друга.

Каждый квадрат на изображении - ячейка одного массива, а каждый вектор бурущий начала из точки, расположенной между двумя квадратами - ячейка другого массива. Таким образом , методом double buffering я избегу в программе вычислений квадрата числа и извлечений квадратного корня, а это будет приличным придатком к её быстродействию, так как это будет симулятор физической системы с жидкостью или газом, и твёрдыми телами.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2025-04-11 14-12-30.png
Просмотров: 373
Размер:	23.2 Кб
ID:	10578  
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 14
Комментарии
  1. Старый комментарий
    Аватар для Hrethgir
    Чтобы найти точное соотношение, нужны более сложные построения и вычисления.
    Запись от Hrethgir размещена 11.04.2025 в 15:08 Hrethgir вне форума
    Обновил(-а) Hrethgir 11.04.2025 в 15:09
  2. Старый комментарий
    Аватар для Hrethgir
    Впрочем синус угла 90 градусов равен единице.
    Правило синусов для треугольника утверждает следующее: в любом треугольнике длина стороны пропорциональна синусу противолежащего угла. Это можно выразить формулой:

    https://www.cyberforum.ru/cgi-bin/latex.cgi?\<br />
\frac{a}{\sin A} = \frac{b}{\sin B} = \frac{c}{\sin C}<br />
\

    где:
    - https://www.cyberforum.ru/cgi-bin/latex.cgi?a, b, c — длины сторон треугольника,
    - https://www.cyberforum.ru/cgi-bin/latex.cgi?A, B, C — углы треугольника, противолежащие соответствующим сторонам.

    Это правило особенно полезно для решения треугольников, когда известна одна сторона и два угла или две стороны и один угол (не заключенный между ними).
    Соотношение сторон EF и FB я могу выразить как соотношение координат, так как эти стороны принадлежат прямой линии.
    Тогда получается,
    Запись от Hrethgir размещена 11.04.2025 в 23:18 Hrethgir вне форума
    Обновил(-а) Hrethgir 11.04.2025 в 23:21
  3. Старый комментарий
    Аватар для Hrethgir
    Вот может
    Однако существует и правило тангенсов для треугольника (также известное как теорема Непера), которое выглядит немного по-другому. Оно используется в основном для решения прямоугольных треугольников, но также может применяться и к общим треугольникам с некоторыми модификациями. Для прямоугольного треугольника правило тангенсов можно записать следующим образом:

    https://www.cyberforum.ru/cgi-bin/latex.cgi?\<br />
\frac{a - b}{a + b} = \tan \left( \frac{\alpha - \beta}{2} \right)<br />
\

    где a и b — длины катетов, а https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha и https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta — противолежащие им углы.
    Запись от Hrethgir размещена 11.04.2025 в 23:37 Hrethgir вне форума
  4. Старый комментарий
    Аватар для Hrethgir
    Да, вы можете определить величину угла, используя тангенс этого угла. Для этого применяется функция арктангенса (или обратный тангенс), которая дает угол в радианах для заданного значения его тангенса.
    а арктангенс от тангенса угла до 45 градусов сложно вычисляется? напиши как самостоятельно расчать арктангенс угла допустимой величиной до 45 градусов. Какие операции над тангенсом при этом надо сделать.
    Вы можете рассчитывать значение арктангенса (обратного тангенса) без использования специальных калькуляторов или программ, используя ряды Тейлора или другие аппроксимационные методы. Для угла до 45 градусов (или \(\frac{\pi}{4}\) радиан), методы более точны и проще в применении.

    ### Ряд Тейлора для арктангенса

    Ряд Тейлора для функции \(\arctan(x)\) выглядит так:

    https://www.cyberforum.ru/cgi-bin/latex.cgi?\<br />
\arctan(x) = x - \frac{x^3}{3} + \frac{x^5}{5} - \frac{x^7}{7} + \cdots<br />
\

    Этот ряд сходится для https://www.cyberforum.ru/cgi-bin/latex.cgi?|x| \leq 1. Для угла до 45 градусов (что соответствует https://www.cyberforum.ru/cgi-bin/latex.cgi?\(x = \tan(45^\circ) = 1), этот ряд будет достаточно точным.

    ### Пример вычисления https://www.cyberforum.ru/cgi-bin/latex.cgi?\arctan(x) для https://www.cyberforum.ru/cgi-bin/latex.cgi?x = 0.75 (что соответствует углу примерно 36.87 градусов)

    Допустим, вам нужно найти https://www.cyberforum.ru/cgi-bin/latex.cgi?\arctan(0.75).

    1. **Начальный член ряда:**
    https://www.cyberforum.ru/cgi-bin/latex.cgi?   \<br />
   x = 0.75<br />
   \

    2. **Второй член ряда:**
    https://www.cyberforum.ru/cgi-bin/latex.cgi?   \<br />
   -\frac{x^3}{3} = -\frac{(0.75)^3}{3} = -\frac{0.421875}{3} = -0.140625<br />
   \

    3. **Третий член ряда:**
    https://www.cyberforum.ru/cgi-bin/latex.cgi?   \<br />
   \frac{x^5}{5} = \frac{(0.75)^5}{5} = \frac{0.2373046875}{5} = 0.0474609375<br />
   \

    4. **Четвертый член ряда:**
    https://www.cyberforum.ru/cgi-bin/latex.cgi?   \<br />
   -\frac{x^7}{7} = -\frac{(0.75)^7}{7} = -\frac{0.13322568054199219}{7} \approx -0.01903224<br />
   \

    Сложим все члены ряда:

    https://www.cyberforum.ru/cgi-bin/latex.cgi?\<br />
\arctan(0.75) \approx 0.75 - 0.140625 + 0.0474609375 - 0.01903224 = 0.6382037<br />
\

    Это значение примерно равно \(0.638\) радиан, что соответствует около https://www.cyberforum.ru/cgi-bin/latex.cgi?36.5^\circ. Для большей точности можно добавить еще несколько членов ряда.
    Запись от Hrethgir размещена 12.04.2025 в 00:08 Hrethgir вне форума
    Обновил(-а) Hrethgir 12.04.2025 в 00:09
  5. Старый комментарий
    Аватар для Hrethgir
    При сравнении операций возведения числа в степень и извлечения квадратного корня для целых чисел, общее время выполнения зависит от многих факторов, таких как конкретные числа, алгоритмы реализации и архитектура процессора. Однако, можно дать некоторые общие рекомендации:

    1. **Извлечение квадратного корня:**
    - Извлечение квадратного корня обычно требует более сложных вычислений по сравнению с возведением в степень.
    - Для целых чисел часто используется алгоритм бинарного поиска или метод Ньютона, которые могут быть менее эффективными, особенно для больших чисел.

    2. **Возведение в степень:**
    - Возведение в степень с использованием алгоритма быстрого возведения в степень (также известного как двоичное возведение в степень) обычно более эффективно.
    - Этот алгоритм работает за время https://www.cyberforum.ru/cgi-bin/latex.cgi?O(\log n), где n — показатель степени, что значительно меньше, чем линейное время для простого умножения.

    ### Примеры

    **Извлечение квадратного корня:**
    Для числа 16:
    - Извлечение квадратного корня даст 4.
    - Алгоритмы, такие как бинарный поиск или метод Ньютона, будут выполняться относительно быстро, но все же медленнее возведения в степень.

    **Возведение в степень:**
    Для числа 2 в степени 10:
    - Возведение https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{10}даст 1024.
    - Алгоритм быстрого возведения в степень будет выполняться очень быстро, так как он использует сокращенные вычисления.

    ### Заключение

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

    Тем не менее, для очень маленьких чисел разница может быть незначительной, и производительность будет зависеть от конкретных реализаций функций в используемых библиотеках.
    Запись от Hrethgir размещена 12.04.2025 в 00:16 Hrethgir вне форума
  6. Старый комментарий
    Аватар для Hrethgir
    наверное самый интригующий тут момент это то - что такое пропорциональное увеличение. Всё очень порсто - правило прямых треугольников как известное 3-4-5. Допустим у нас увеличился треугольник в десять раз. Во столько -же раз увеличится каждая его сторона, а иначе нарушится правило 3-4-5, было до увеличения 3-4-5, стало после 30-40-50. Никакой магии и волшебства. Не смотря на сложность вычисления самих длин сторон. То-есть сами длины сторон меня не интересуют, мне достаточно координат. А раз сторона (объекта) увеличилась в определённое количество раз, то и любая существующая его прямолинейная и параллельная из всех проекция (любой из частей) на что-либо - увеличится во столько-же раз, не взирая на размер проецируемой части. Это моё уточнённое понимание пропорциональности в геометрии. Разумеется этому наверное нейросети не обучены...меня конечно тоже такому вроде не обучали - но это легко следуемо из логики. И сложного тут ничего нет. А любая ось системы координат - отражает проекции.

    Можно усложнять выражение до бесконечности, но сути это не отменяет.
    Запись от Hrethgir размещена 12.04.2025 в 15:25 Hrethgir вне форума
    Обновил(-а) Hrethgir 12.04.2025 в 23:01
  7. Старый комментарий
    Аватар для Hrethgir
    Прежде чем приступить к самостоятельному выведению формул - решил проверить себя на "не дурак-ли я...", а вдруг. Решил уточнить, чтобы не получилось что я слишком всё усложнил.
    Привет. Скажи, если мне известны отношения тангенсов двух углов, можно ли при этом утверждать, что мне известно соотношение величин самих этих двух углов?
    Привет! Ответ на ваш вопрос — нет, знать отношение тангенсов двух углов недостаточно для определения отношения величин самих этих углов.

    Давайте рассмотрим пример. Предположим у нас есть два угла https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha и https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta, и мы знаем, что \frac{\tan(\alpha)}{\tan(\beta)} = k. Это означает только то, что отношение тангенсов этих углов равно
    .

    Но сам угол может быть представлен бесконечным числом значений с периодом https://www.cyberforum.ru/cgi-bin/latex.cgi?\pi (или 180 градусов), и к тому же, разные углы могут иметь одинаковое значение тангенса (например, https://www.cyberforum.ru/cgi-bin/latex.cgi?\tan(45^\circ) = \tan(225^\circ) = 1). Таким образом, даже если мы знаем отношение их тангенсов, мы не можем однозначно определить саму величину угла.

    Например:
    - Если https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha = 45^\circ и https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta = 22.5^\circ, то https://www.cyberforum.ru/cgi-bin/latex.cgi?\tan(45^\circ) / \tan(22.5^\circ) = 1 / (2 - \sqrt{2}) = 2 + \sqrt{2}.
    - Если мы возьмем https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha' = 225^\circ и https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta' = 337.5^\circ, то у нас опять же \https://www.cyberforum.ru/cgi-bin/latex.cgi?tan(225^\circ) / \tan(337.5^\circ) = 1 / (2 - \sqrt{2}) = 2 + \sqrt{2}\.

    Таким образом, отношения тангенсов одинаково, но сами углы разные.
    А если оба эти угла не больше 45 градусов?
    Даже при условии, что оба угла https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha и https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta меньше или равны https://www.cyberforum.ru/cgi-bin/latex.cgi?45^\circ, знание отношения их тангенсов все еще недостаточно для определения отношения самих углов.

    Функция тангенс в первой четверти от https://www.cyberforum.ru/cgi-bin/latex.cgi?0^\circдо https://www.cyberforum.ru/cgi-bin/latex.cgi?45^\circ монотонно возрастает, что означает, что если https://www.cyberforum.ru/cgi-bin/latex.cgi?\tan(\alpha) > \tan(\beta)\, то https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha > \beta. Однако отношение тангенсов не дает нам точные значения углов, а только информацию о их относительном порядке.

    Рассмотрим пример: пусть https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\tan(\alpha)}{\tan(\beta)} = 2.

    - Если https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta = 20^\circ, тоhttps://www.cyberforum.ru/cgi-bin/latex.cgi? \tan(20^\circ) \approx 0.364 и, следовательно, https://www.cyberforum.ru/cgi-bin/latex.cgi?\tan(\alpha) \approx 2 \times 0.364 = 0.728. Угол https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha \approx \arctan(0.728) \approx 35.9^\circ.
    - Если https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta = 10^\circ , то https://www.cyberforum.ru/cgi-bin/latex.cgi?\(\tan(10^\circ) \approx 0.176 и, следовательно, https://www.cyberforum.ru/cgi-bin/latex.cgi?\tan(\alpha) \approx 2 \times 0.176 = 0.352. Угол https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha \approx \arctan(0.352) \approx 19.4^\circ.

    В обоих случаях отношение тангенсов равно 2, но сами углы разные: https://www.cyberforum.ru/cgi-bin/latex.cgi?35.9^\circ / 20^\circ = 1.795 и https://www.cyberforum.ru/cgi-bin/latex.cgi?19.4^\circ / 10^\circ = 1.94. Как видно, отношения углов не совпадают с отношением их тангенсов.

    Таким образом, даже при условии, что оба угла меньше или равны https://www.cyberforum.ru/cgi-bin/latex.cgi?45^\circ, знание отношения их тангенсов недостаточно для определения отношения самих углов.
    То-есть получается, что никаких лишних построений я не произвёл, и применение арктангенса вполне будет уместно, для замены метода апроксимации.
    Запись от Hrethgir размещена 12.04.2025 в 23:24 Hrethgir вне форума
    Обновил(-а) Hrethgir 12.04.2025 в 23:40
  8. Старый комментарий
    Аватар для Hrethgir
    Далее диалог был продолжен, на предмет выяснения не может ли оказаться решения проще. Как выяснилось - не может. А сам ряд Телора по сути, как я понял, это уже метод апроксимации.
    Запись от Hrethgir размещена 13.04.2025 в 07:47 Hrethgir вне форума
  9. Старый комментарий
    Аватар для Hrethgir
    Арктангенс я вычислять не буду, так как развёртка угла не превышает 45 градусов, то проще создать массив значений заранее вычисленных, допустим это будет массив с количеством ячеек 45*8=360, что будет эквивалентно округлению градуса до целого, единственное неудобство будет в том, что точность хранимых данных, с учётом округления будет варьироваться от начала массива до ячейки с старшим индексом. Индекс адреса обращения будет рассчитываться.
    Запись от Hrethgir размещена 13.04.2025 в 11:14 Hrethgir вне форума
    Обновил(-а) Hrethgir 13.04.2025 в 13:48
  10. Старый комментарий
    Аватар для Hrethgir
    и просмотрел ещё много чего интересного по теме. Сбор информации закончен (опрос LM), осталось только делать. Тут в общем всё понятно. Так и остаётся, только в программе будет ещё вычисление одной точки, небольшое, чтобы потом скалярами сравнивать два соседние вектора на перпендикулярность. Формулы не выводил пока, собирал и анализировал информацию по симуляторам. Ох там и воды...
    Запись от Hrethgir размещена 13.04.2025 в 19:31 Hrethgir вне форума
  11. Старый комментарий
    Аватар для Hrethgir
    Ещё данное построение применимо для вычисления разницы скаляров векторов, для определения на перпендикулярность. Только в этом случае нужно найти координаты ещё одной точки по известным, но построений уже делать не надо никаких.
    Запись от Hrethgir размещена Вчера в 06:19 Hrethgir вне форума
    Обновил(-а) Hrethgir Вчера в 06:21
  12. Старый комментарий
    Аватар для Hrethgir
    Только температуру сбил. Приболел, три недели с осколком стружки проходил в глазу - думал пройдёт, но вместо этого ещё и простыл. Пошёл к окулисту - вытащил стружку, уже не надеялся, три недели спустя - думал зарастать уже начала, вытащил легко. А так-да, мне было трудно писать код и вести диалоги с LM. Теперь наверстаю. Сейчас всё пойдёт в гору. В общем чего я думаю добиться методом арктангенса - того что мне синусы и косинусы вычислять не надо. Так-то да - результаты вычислений синусов тоже можно сохранить в массиве, но там больше извлечений квадратных корней, и значит будет больше погрешность...хотя опять-же можно вычисляить с большой точностью и сохранить в массив...Не ...синусы не нужны ...по крайней мере я попытаюсь сделать через арктангенсы, может это будет не совсем правильно...Спрошу у LM.
    Запись от Hrethgir размещена Вчера в 20:47 Hrethgir вне форума
    Обновил(-а) Hrethgir Вчера в 21:25
  13. Старый комментарий
    Аватар для Hrethgir
    Вот
    скажи, по координатам вектора его арктангенс ведь проще вычислить чем синус?
    Да, вы правы, вычисление арктангенса (или反正ктангенса) угла поворота вектора по его координатам обычно проще и более эффективно, чем вычисление синуса или косинуса. Это связано с тем, что функция `arctan2` (или `atan2` в некоторых языках программирования) предоставляет удобный способ определить угол поворота вектора относительно оси \(x\) с учётом всех четвертей плоскости.

    ### Вычисление арктангенса угла поворота вектора

    Для двумерного вектораhttps://www.cyberforum.ru/cgi-bin/latex.cgi? \mathbf{v} = (x, y) , угол поворота относительно оси https://www.cyberforum.ru/cgi-bin/latex.cgi?x) можно вычислить с помощью функции `https://www.cyberforum.ru/cgi-bin/latex.cgi?atan2(y, x)`. Эта функция возвращает угол в радианах и учитывает знаки обоих координат, что позволяет правильно определить угол в любой из четырёх четвертей плоскости.

    ### Пример на Pascal/FPC
    Запись от Hrethgir размещена Вчера в 20:59 Hrethgir вне форума
  14. Старый комментарий
    Аватар для Hrethgir
    Шикарно вроде, ну как я и предполагал
    а скажи ведь потом в симуляторе я могу применять арктангенс для вычисления например силы действия на две соседние точки, в зависимости от пропорций угла, на какую точку больше направлен вектор?
    Конечно, вы можете использовать арктангенс (или `atan2`) для определения направления и угла поворота вектора, что может быть полезно при моделировании сил действующих на соседние точки в симуляторе несжимаемой жидкости. Однако стоит отметить, что для простого моделирования взаимодействий между точками и расчета сил обычно используются другие методы, такие как вычисление компонентов скоростей или разницы давлений. Тем не менее, использование угла поворота может быть полезным в некоторых сценариях.

    ### Пример использования `atan2` для определения направления и силы

    Предположим, у вас есть две точки на сетке: https://www.cyberforum.ru/cgi-bin/latex.cgi?A и https://www.cyberforum.ru/cgi-bin/latex.cgi?B. Вы хотите вычислить силу, действующую от точки https://www.cyberforum.ru/cgi-bin/latex.cgi?A к точке https://www.cyberforum.ru/cgi-bin/latex.cgi?B, основываясь на направлении вектора https://www.cyberforum.ru/cgi-bin/latex.cgi?\mathbf{v} = B - A.

    1. **Вычисление разности координат**: Определите разность координат между точками https://www.cyberforum.ru/cgi-bin/latex.cgi?A и https://www.cyberforum.ru/cgi-bin/latex.cgi?B.
    2. **Вычисление угла поворота с помощью `atan2`**:
    3. **Определение компонентов силы**: Используйте угол для вычисления направлений сил.

    ### Пример кода на Pascal/FPC
    Понятно, что всё тут все равно не просто. Но если чего-то нельзя - она обычно сразу говрит что так не получится сделать, хоть и формулы выводит с ошибками, а уж в этом ей доверять можно - она скажет что можно вычислить так, а чего - нет. Например она в данном вопросе так и не поняла, что между двумя точками - от третьей, но это сути не меняет, при одинаковом расстоянии двух от третьей. Если ей это уточнить - она извинится и переформулирует ответ. Но тут и так понятно - угол можно использовать. С другой стороны согласен - сомнительно, но интуиция подсказывает что можно. Тут конечно мной будет применена хитрость небольшая, для уточнения результатов, но тем не менее. То-есть я так и предполагал изначально - зачем мне делать сложные вычисления, которые в любом случае влекут за собой те-же погрешности, когда с помощью логики можно создать систему более простых расчётов, погрешности которых будут или такими-же или даже меньше. В общем я просто решил включить мозги - разработать систему через геометрические построения, и сократить ёмкость и сложность расчётов, выходя практически на ту же точность, если не большую (корней квадратных при моей системе извлекть вообще не надо, но при хитрости предварительной подготовки результатов расчётов это конечно мою систему делает уже не такой актуальной, но тем не менее хитрость предварительной подготовки возможных результатов - тоже моя, не могу гарантировать что мне единственному такое пришлов в голову, и даже наверняка кому-то уже приходила в голову если не такая, то подобная, но тем не менее).
    И да - если вектора будут с запятой например, а не упрощённые значения до 10, то метод арктангенса будет очень кстати. В общем мной было решено сделать так, насколько это эффективно может быть - я могу догадываться только интуитивно, поскольку на проверку доскональную у меня банально не будет времени чтобы сравнивать с чужими решениями. Но мной решено сделать именно так. Просто чисто из интуитивных предположений (математическая база есть у моего построения логики, но не проверял на практике, чисто гипотетически и интуитивно).
    Запись от Hrethgir размещена Вчера в 21:09 Hrethgir вне форума
    Обновил(-а) Hrethgir Вчера в 21:44
 
Новые блоги и статьи
Абстрактные классы в TypeScript
run.dev 15.04.2025
Разработка современных веб-приложений требует надежных инструментов для структурирования кода. В этом контексте абстрактные классы стали незаменимым элементом объектно-ориентированного. . .
Хеш-функции std::hash в C++ программировании
NullReferenced 15.04.2025
Хеширование — фундаментальная концепция в компьютерных науках, играющая важную роль в эффективной обработке и хранении данных. В C++ функциональность std::hash является неотъемлемой частью. . .
Форматирование строк в Python
py-thonny 15.04.2025
Форматирование строк — одна из тех базовых возможностей Python, которые сопровождают разработчика каждый день. Эта задача кажется тривиальной на первый взгляд, но на самом деле представляет собой. . .
Слайсы в Go
golander 15.04.2025
Слайсы — важнейшая структура данных в Go, значение которой сложно переоценить. С момента создания языка разработчики Go позиционировали слайсы как основной механизм для работы с последовательностями. . .
Как использовать Behavior Graph в Unity при создании игрового AI
GameUnited 14.04.2025
Искусственный интеллект в играх прошел долгий путь эволюции. От простейших алгоритмов, движущих призраками в Pac-Man, до сложных систем, управляющих поведением персонажей в современных AAA-проектах. . . .
Создание и стилизация списков в SwiftUI
mobDevWorks 14.04.2025
Списки — фундаментальный элемент мобильных интерфейсов. От списка контактов до ленты новостей, от настроек до каталога товаров — трудно представить приложение, которое не использовало бы этот. . .
Паттерн SAGA и распределённые транзакции в микросервисной архитектуре
stackOverflow 14.04.2025
Переход от монолитной архитектуры к микросервисам принес множество преимуществ: гибкость разработки, независимость развертывания и масштабирования отдельных компонентов. Однако этот переход создал и. . .
Кастомные аллокаторы в C++ и оптимизация управления памятью
bytestream 14.04.2025
Работа с памятью в С++ всегда была и остаётся одной из самых увлекательных и сложных задач для программиста. Любой опытный C++ разработчик подтвердит: стандартные механизмы аллокации памяти – штука. . .
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер