Линия x и y n-точка пересечения / C ++ - PullRequest
3 голосов
/ 29 октября 2010

Может кто-нибудь, пожалуйста, помогите мне.Я понимаю уравнение линии и как решить для нулевого перехвата на бумаге, но у меня есть проблемы с преобразованием его в код.Более конкретно, мне нужно вычислить точку, в которой линия пересекает любую данную координату X или Y с двумя различными функциями ...

double CalcLineYIntercept(LINE *line, double yintercept) { }
double CalcLineXIntercept(LINE *line, double xintercept) { }

Итак, CalcLineYIntercept вернет координату X точки, гделиния перехватывает yintercept (не обязательно ноль).У меня проблемы с преобразованием алгебраических уравнений в код (и да, я понимаю, что C ++ - это алгебраический язык, но сам код не просто изолирует переменные).Есть ли простой способ сделать это?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 29 октября 2010
double CalcLineYIntercept(LINE *line, double yintercept) 
{ 
    dx = line->x2 - line->x1;
    dy = line->y2 - line->y1;

    deltay = yintercept - line->y2;
    if (dy != 0) { 
        //dy very close to 0 will be numerically unstable, account for that
        intercept = line->x2 + (dx/dy) * deltay;
    }
    else {
        //line is parrallel to x-axis, will never reach yintercept
        intercept = NaN;
    }
}

Обратно x и y, чтобы получить другую функцию.

0 голосов
/ 29 октября 2010

Вычтите yintercept из y -координат линии, затем используйте математику, которую вы уже знаете для решения x , когда y = 0. Mutatis Mutandis для xintercept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...