-
К примеру линия (X1,Y1) - (X2,Y2) требуется движение от начала до конца линии, оперируясь двумя кординатами. 0,0 - 10,0 - достаточно дать 10 команд (+1 по каналу Х) 0,0 - 10,10 линия под 45градусов -дать команды поочередно (+1 Х, +1 Y) а вот если 0,0 - 20,10 то тут уже без каких-то алгоритмов не обойтись(
Смысл описание движения, вместо больших массивов движения, описываются только векторы, далее просчет будет в алгоритмах. Но каких? Еще бы дугу хотелось
-
x=f(y)
-
функция ведь не известна!
-
да ладно, все известно. например, для > 0,0 - 20,10
х := 2у
-
алгоритмы Брезенхэма для отрезка и для окружности.
-
через 2 точки существует единственная прямая y= ax+c если точки известны, уравнение легко выводится
а вот дуг там бесконечно первая попавшаяся - берем R = более половины расстояния мд точками и проводим окружности радиусом R с центром в каждой точке. Пересечение этих окружностей дадут 2 точки - кандидатов для центра дуги.
-
> 12 © (01.03.10 14:56) [5]
Это если дугу считать как кусок окружности. Но на самом деле все проще. та же функция, как и для прямой, но коэффициент - тоже функция, значение которой изменяется до какого либо предела и возвращается к исходному значению. Установив точку возврата, получим место, где "закругляется" :) Таким образом, можно получить (как минимум) любую нормальную дугу (когда одна из координат изменяется только в одну сторону).
-
> KilkennyCat © (05.03.10 03:13) [6]
это напоминает Как вскипятить чайник. Физик vs математик
> на самом деле все проще. та же функция, как и для прямой, > но коэффициент - тоже функция,
проще, но не для физика-практика:)
-
re [2] в сабже упоминались векторы, поэтому функция скорее всего будет pos := pos + speed где pos и speed - векторы. Так что весь вопрос сводится к правильному определению вектора скорости. Кстати, не понятно о какой дуге идет речь. Если это дуга в вертикальной плоскости, то это движение под действием гравитации. А если в горизонтальной, то под действием наркотиков/центробежной силы.
-
Спасибо, кое-что проясняется... Дуга нарисованная средствами C anvas.Arc(
-
A.F.A.I.R.
Линия - это кривая первого порядка y=a*x+b Дуга - это кривая второго порядка y=a*x*x+b*x+c
|