Re: Вычеслить точку удаленную от прямой
От: McSeem2 США http://www.antigrain.com
Дата: 19.11.09 20:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть прямая заданная двумя точками (X1 , Y1) (X2 , Y2), нужно вычислить точку расположенную перпендикулярно к данной прямой и на расстоянии W от точки (X1 , Y1).

А>не могу понять как это можно сделать, используя целочисленную математику.

О! школота пришла (это я про слово "Вычеслить").
Делается тривиально, если диапазон позволяет. Например, при использовании 32-битовой арифметики, будет покрыта 16-битовая координатная плоскость. Иначе, извините, никак.

Делай раз:

double W = 10; // требуемое расстояние от x1,y1 до искомой точки

Делай два:

double len = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
double dx = W * (y1 — y2) / len;
double dy = W * (x2 — x1) / len;

Делай три: (искомая точка)

double x = x1 + dx;
double y = y1 + dy;

Соответственно, для целочисленной арифметики все, что нам надо — это уметь вычислить квадратный корень. Есть много способов для этого, гуглить по словам integer square root.
Например, у меня: http://antigrain.com/__code/include/agg_math.h.html#fast_sqrt
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.