Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±

    Тригонометрия:угол между двумя точками

    Здравствуйте. У меня возникла проблема с нахождением угла между двумя точками по оси Z.Т.к я учусь в 9 классе, то еще не проходил 3D пространство. И придумать ничего не смог.Попробовал с арктангенсом поиграться : ничего не получилось.Может быть у вас есть эта функция?Спасибо.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Не знаю, что вы имеете в виду под "углом по оси", но надеюсь, вам поможет этот пример:
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. #3
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не знаю, что вы имеете в виду под "углом по оси", но надеюсь, вам поможет этот пример:
    Да, не так выразился.
    Поясню:Допустим есть точка А(x,y,z) и есть B(x+5,y,z+5).Мне нужно найти угол между этими точками в пространстве.
    Думаю рисунок поможет:
     Рисунок

    Только проблема еще в том, что у нас 3 оси, а не только х и z



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  4. #4
    Аватар для Avertus
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.12.2013
    Сообщений
    86
    Репутация:
    17 ±
    Угла между двумя точками не существует. Я так понимаю тебе нужен угол между прямой проходящей через две точки и плоскостью. Вот это и гугли. Думаю разберёшься. Большинство стереометрических(3D пространство...) сводятся к геометрическим (которые проходят в 9 классе)...
    Последний раз редактировалось Avertus; 11.05.2015 в 16:58.

  5. #5
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Avertus Посмотреть сообщение
    Угла между двумя точками не существует. Я так понимаю тебе нужен угол между прямой проходящей через две точки и плоскостью. Вот это и гугли. Думаю разберёшься. Большинство стереометрических(3D пространство...) сводятся к геометрическим (которые проходят в 9 классе)...
    Да, спасибо за определение, сейчас попробую поискать.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  6. #6
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Даны точки A с координатами (x, y, z) и B с координатами (x', y', z').
    Для того чтобы узнать указанный в рисунке угол (α) нужно сперва транспонировать одну точку на ту же координату Z, узнать расстояние между ними (получится картезианский план X-Y).

    При помощи теоремы Пифагора узнаем расстояние между точками B' и B.
    Оно равно: d = sqrt(sqr(x'-x) + sqr(y'-y)). На нашем рисунке длина сегмента [AB'], то есть |AB'| = d.
    Также, можно легко узнать расстояние между точками B и B', |BB'| = z' - z;
    Узнаем тангенсу, tan = |BB'|/d = (z' - z)/sqrt(sqr(x'-x) + sqr(y'-y)).
    Угол α будет равен α = arctan(tan) = arctan((z' - z)/sqrt(sqr(x'-x) + sqr(y'-y))).
    Согласно идентификаторам функций СА-МПа (чья документация как обычно отсутвует - а точнее документация функции atan), функция будет такова:
    PHP код:
    Float:alfa atan((z1 z)/sqrt(sqr(x1-x) + sqr(y1-y))); //где x, y, z - координаты первой точки, а x1, y1, z1 - координаты второй. 
    Последний раз редактировалось ^_^; 11.05.2015 в 21:43.

  7. 3 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (11.05.2015) L0ndl3m (12.05.2015) Profyan (12.05.2015)
  8. #7
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от ^_^ Посмотреть сообщение
    Даны точки A с координатами (x, y, z) и B с координатами (x', y', z').
    Для того чтобы узнать указанный в рисунке угол (α) нужно сперва транспонировать одну точку на ту же координату Z, узнать расстояние между ними (получится картезианский план X-Y).

    При помощи теоремы Пифагора узнаем расстояние между точками B' и B.
    Оно равно: d = sqrt(sqr(x'-x) + sqr(y'-y)). На нашем рисунке длина сегмента [AB'], то есть |AB'| = d.
    Также, можно легко узнать расстояние между точками B и B', |BB'| = z' - z;
    Узнаем тангенсу, tan = |BB'|/d = (z' - z)/sqrt(sqr(x'-x) + sqr(y'-y)).
    Угол α будет равен α = arctan(tan) = arctan((z' - z)/sqrt(sqr(x'-x) + sqr(y'-y))).
    Согласно идентификаторам функций СА-МПа (чья документация как обычно отсутвует - а точнее документация функции atan), функция будет такова:
    PHP код:
    Float:alfa atan((z1 z)/sqrt(sqr(x1-x) + sqr(y1-y))); //где x, y, z - координаты первой точки, а x1, y1, z1 - координаты второй. 
    Спасибо большое!!!



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •