На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Как найти координаты точки на прямой удаленной от заданной точки на х
    Добрый вечер!

    Помогите мне пожалуйста со следующей задачей.
    Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3)
    Нужно найти координаты точки D(x4,y4), которая лежит на прямой AB и удалена от точки С на 10.

    Длинну отрезка мы можем выразить через координаты:
    (x3-x4)^2 + (y3-y4)^2 = 100

    Уравнение прямой - Ax4 + By4 + C = 0

    Пытался подставить одно выражение в другое:

    (x3-x4)^2 = 100 - (y3-y4)^2
    x3-x4 = sqrt(100 - (y3-y4)^2)
    x4 = x3 - sqrt(100 - (y3-y4)^2)

    A(x3 - sqrt(100 - (y3-y4)^2)) + By4 + C = 0

    А дальше не получается извлечь y4 из этого выражения.
    Помогите пожалуйста.
    Прикреплённая картинка
    Прикреплённая картинка
      AD x AB = 0 //косое (векторное) произведение нулевое, если данные векторы параллельны, т.е. D лежит на AB
      в координатах:
      (x4-x1)*(y2-y1) - (y4-y1)*(x2-x1)=0
      (x3-x4)^2 + (y3-y4)^2 = 100 //это твое уравнение для расстояния

      получается система из двух уравнений первого и второго порядка с двумя неизвестными, имеет от нуля до двух решений.
      Нужно раскрыть скобки (корней не извлекая!) и решить (выразить x4 из первого, подставить во второе, решить полученное квадратное уравнение относительно y4). Развесистые выражения получатся, конечно.
      Вот что онлайн-Matematica выдаёт:
      http://www.wolframalpha.com/input/?i=solve...3D100+for+x%2Cy
      Сообщение отредактировано: MBo -
        Цитата MBo @
        Развесистые выражения получатся, конечно

        Можно решить геометрически без "развесистых" выражений:
        //1) вычисляем вспом.параметры отрезка AB
        L = sqrt((x2-x1)^2+(y2-y1)^2); //длина AB
        SinAB = (y2-y1)/L; //sin угла наклона AB
        CosAB = (x2-x1)/L; //cos угла наклона AB

        //2) находим координаты т.C в системе координат луча AB (центр в т.А, ось абцисс - по лучу AB)
        u = SinAB*(y3-y1)+CosAB*(x3-x1); //вдоль AB (от А до проекции С на AB)
        v = SinAB*(x3-x1)-CosAB*(y3-y1); //поперек AB (по перпендикуляру от C к AB)

        //3) находим координаты искомой точки D на расстоянии 10 от С
        if abs(v) <= 10 then //если расстояние от С до AB не более заданного
        {
        uCD = sqrt(10^2-v^2); //длина проекции отрезка CD на AB
        x4 = x1 + (u ± uCD)*CosAB; //при uCD=0 одно решение, иначе - два
        y4 = y1 + (u ± uCD)*SinAB;
        }
        else
        ... //решений нет
        Сообщение отредактировано: leo -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,1681 ]   [ 16 queries used ]   [ Generated: 27.09.24, 01:33 GMT ]