Пришёл к Вам за помощью, так как, прошлая Ваша помощь, боюсь даже говорить, но скорее всего, большая часть вылетела из головы. Не получилось у меня продолжить практиковаться, отвлекли на продолжительное время и я потерял фокус. Судить о сложности моего вопроса я не возьмусь, казалось, что я его за пять минут решу, но вот я здесь. Обьяснять мне сложно, по этому я нарисовал вопрос. Дано две точки с известными координатами: Отталкиваясь от этих координат, я нахожу точку, которую мне как показалось, нужно найти: Далее нахожу вектора: Следующим шагом, я в уме рисую мнимую окружность. На деле её нет, но нарисовал для большей усвояемости: Дальше становится сложнее. Если представить на секунду, что $% \vec{ca} $% и $% \vec{ba}$% это отрезки, то получается, что точки $%A$% и $%B$% остаются на своих координатах, отрезок $%AB$% сохраняет свою длину, а отрезок $%CA$% начинает увеличивать свою длину и тем самым, смещает координаты точки $%A$%. Конечной целью значится, описать окружность при помощи только векторов не используя косинусы и синусы. Это могло быть не выполнимым, но к счастью, плоскость разделена на положительную и отрицательную ось. И так же значения на осях от 0 до 180 и от -180 до 0. Так подробно я обьяснил для того, чтобы Вам было более понятна задача. Но по сути, мне нужно найти координаты вектора $%\vec{ba}$%, зная, что его длина осталась неизменной и точки $%A,B$% остались на своих координатах. А вот длина и $%\vec{ca}$% увеличилась на определённое значение. И так же важно, что сделать это нужно, без косинусов и синусов. Так же, в примере, я изменял координаты точки $%C$%, так как мне показалось это необходимым, но это не обязательно. Просто мне показалось, если прибавляя значение к длине вектора $%\vec{ca}$% нужно прибавлять это же значение ( или его коэффициент ) к самим координатам точки $%C$%. abs я не люблю) задан 21 Ноя '13 14:37 shatal |
Косинусов и синусов тут на самом деле не надо: достаточно всего лишь уравнения окружности. Оно имеет вид $%(x-x_0)^2+(y-y_0)^2=r^2$%, где $%(x_0;y_0)$% -- координаты центра, $%r$% -- радиус. В Вашем случае это всё известно: центр находится в точке $%B$%, а радиус равен расстоянию между $%A$% и $%B$%. Оно находится по известной формуле, где даже корень извлекать не надо, так как нам нужно здесь $%r^2$%, не само $%r$%. Дальше всё просто: зная $%x$%, выражаем через него $%y$%. При этом придётся извлекать квадратный корень, беря его со знаком "плюс" или "минус" в зависимости от того, какая дуга окружности нам нужна -- верхняя или нижняя. отвечен 21 Ноя '13 15:02 falcao @falcao: Спасибо! Скажите, а $%x$% и $%y$% , это координаты точки $%C$%? Точнее $%y$% мы ищем, а $%x$%, это координата точки $%C$%?
(21 Ноя '13 17:09)
shatal
Да, $%(x;y)$% -- координаты произвольной точки окружности. Они связаны уравнением. Если $%x$% -- расположенная на оси $%OX$% точка с пятого по счёту рисунка, из которой исходит вверх жёлтый отрезок, то её ординату $%y$% можно вычислить из уравнения.
(21 Ноя '13 17:21)
falcao
А Вы не подскажете, возможно ли как то, сделать тоже самое, но с извлечением корня, так же один раз, но в начале? Просто получается, что значения радиуса, до извлечения квадратного корня, равняется 32500. Если использовать его в расчетах, то получается, жуткое расхождение, так как, после извлечения корня, получается 180.2775637731994647. Вот если извлечь сначала корень, потом округлить, то всё хорошо.
(22 Ноя '13 16:37)
shatal
Я не вполне понимаю Ваш вопрос. Дело в том, что в формуле вообще нигде не фигурирует $%r$% -- есть только $%r^2$%. Я так понял, это $%32500$%. Тогда $%y=y_0\pm\sqrt{32500-(x-x_0)^2}$%. При разных значениях $%x$% будут получаться разные выражения, и из них в каждом отдельном случае требуется извлекать корень. Я тут как бы не вижу альтернативы.
(22 Ноя '13 19:16)
falcao
@falcao: Вы меня не понимаете потому, что Вы правы. Целый день сегодня и вчера у меня не получалось формулу реализовать в коде. Сейчас, уже от отчаяния ( от отчаяния говорю по тому, что на листочке у меня всё сходится, а в коде нет ) я принялся иллюстрировать то, что у меня не получается.. И даже в редакторе GG у меня опять всё получилось. Мне кажется, что ошибка в моей невнимательности и всё что мне остаётся, это искать её. Спасибо Вам ещё раз.
(22 Ноя '13 20:55)
shatal
У меня ещё один маленький, но давно мучающей меня вопрос - возможно ли что то сделать с числом, чтобы получить его отрицательность или положительность? Вот чтобы задать направление, нужно умножить на один или минус один. Но для этого приходится делать проверки на if что я не люблю. Но возможно есть какая то операция, которая производя одни и те же операции, позволяет получить эти 1,-1?
(22 Ноя '13 22:48)
shatal
Думаю, что можно в этих случаях использовать функцию abs, то есть модуль. Если мы знаем, что $%x$% не равно нулю, то после деления на модуль получится знак числа (1 или -1). Возможно также, что знак нужен не сам по себе, а для последующего умножения на него, и тогда всё ещё проще: берём модуль самого числа.
(22 Ноя '13 23:10)
falcao
показано 5 из 7
показать еще 2
|