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

    Пытался сделать "в лоб" и вывести формулу, но чтото больно уж астрономическое получается. Думаю должно быть простое и рациональное решение
    Сообщение отредактировано: GarF1eld -
      Геометрически задачу можно решить по крайней мере двумя способами:
      1. Проводим окружности с радиусом, равным данной стороне (обозначим его 'a') и ищем точки их пересечения.
      2. Находим середину заданной стороны, проводим через нее срединный перпендикуляр и откладываем на нем в обе стороны отрезки длины a*cos(60°) = a*sqrt(3)/2

      Оба способа должны дать одинаковые формулы, но второй проще, так как не нужно решать уравнения. Итак имеем
      cредняя точка - { (x1+x2)/2, (y1+y2)/2 ),
      перпендикуляр - { y1-y2, x2-x1 },
      и искомые вершины { (x1 + x2 +- (y1 - y2)*sqrt(3))/2, (y1 + y2 +- (x2 - x1)*sqrt(3))/2 }
      Сообщение отредактировано: amk -
        Imho, более простой способ - переместить начало координат в одну из вершин, повернуть на 60 градусов и переместить назад. Тогда получится следующая формула:
        ExpandedWrap disabled
          x3=(x2-x1)*cos(60)-(y2-y1)*sin(60)+x1
          y3=(x2-x1)*sin(60)+(y2-y1)*cos(60)+y1
          спасибо, рябята. выручили! :)
            OpenGL, можно и так, получается в точности та же самая формула.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0468 ]   [ 15 queries used ]   [ Generated: 9.05.24, 01:08 GMT ]