вычислить следующую точку на линии с известным наклоном - PullRequest
0 голосов
/ 31 октября 2011

в соответствии с линейным уравнением y = (m * x) + c. если я знаю наклон (m) и знаю, что линия проходит через точку (cx, cy). Я хочу знать следующие точки на одной и той же строке до и после cx, cy, как мне их вычислить.

Ответы [ 2 ]

1 голос
/ 31 октября 2011

В C ++:

Вычислите другие баллы, выполнив

extrapolate line(m, cx, cy);
double y_before  = line.y(cx - 1);  // for example
double y_after   = line.y(cx + 1);

Посмотрите, как оно работает http://ideone.com/BELNc (два примера)

struct extrapolate
{
     extrapolate(double slope, double x1, double y1) 
         : _slope(slope), _x1(x1), _y1(y1) 
     {
     }

     double y(double x) const // return y for given x
     {
          return _y1 + (x-_x1)*_slope;                  
     }

  private:
     double _slope, _x1, _y1;
};
0 голосов
/ 01 ноября 2011

Вы пытаетесь нарисовать линию на пиксельном дисплее?Если это так, то вам может понадобиться небольшая модификация алгоритма Брезенхема .Обратите внимание, что исходный алгоритм нуждается в двух точках в качестве входных данных и рисует линию между ними и использует это для того, чтобы дать действительно элегантное решение, которое не использует арифметику с плавающей запятой.В вашем случае вам, вероятно, потребуется использовать операции с плавающей запятой, поскольку я предполагаю, что ваш наклон m не обязательно является целым числом.

Короче говоря, суть в том, что в зависимости от того, в каком квадранте вы находитесь, у вас всегда есть выбор между двумя точками, которые вы можете нарисовать (см. Раздел «Алгоритм» на странице вики).Что вы делаете, это выбираете тот, который ближе к реальной линии.Вот и все.

...