Траектория движения, похожая на винтовую линию
|
|
Gargolev2 | Дата: Вторник, 12 Июня 2012, 13:46 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| хочу получить примерно такую же траекторию в плоскости, как нарисовано на этом рисунке. В пространстве это была бы винтовая линия, а так получается что-то похожее на петли Есть идеи, как это может быть реализовано?
|
|
| |
GECK | Дата: Вторник, 12 Июня 2012, 14:58 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Берешь параметрическую кривую x(t) = cos(4*t)+t, y(t) = sin(4*t), и вычисляешь точку траектории в каждый момент времени.
Всё гениальное просто. И хреново работает.
|
|
| |
-Mikle- | Дата: Вторник, 12 Июня 2012, 15:06 | Сообщение # 3 |
Изобретатель велосипедов
Сейчас нет на сайте
| На VB6: Code Option Explicit
Const a = 0.2 Const b = 0.01 Const bb = 50 Const c = 0.01 Const cc = 100
Private Sub Form_Click() Dim x As Single, y As Single, t As Single For t = 0 To 3500 x = t * a + Sin(t * b) * bb y = Cos(t * c) * cc PSet (x, y) Next t End Sub
Private Sub Form_Load() ScaleLeft = 0 ScaleWidth = 500 ScaleTop = -150 ScaleHeight = 300 End Sub
|
|
| |
Matou | Дата: Вторник, 12 Июня 2012, 15:33 | Сообщение # 4 |
Исходный коТ
Сейчас нет на сайте
| Параметрические кривые тут лишние. Лучше взять вращательное и прямолинейное движение и сложить их.
|
|
| |
GECK | Дата: Вторник, 12 Июня 2012, 17:21 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Quote (Matou) Лучше взять вращательное и прямолинейное движение и сложить их. Дык мы с -Mikle- это и предлагаем.
Всё гениальное просто. И хреново работает.
|
|
| |
Gargolev43 | Дата: Среда, 13 Июня 2012, 12:31 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| спасибо, почти получилось: Code CGPoint pos = self.position; currentTime += dt; pos.x = startX - 50 * currentTime - 20 * cosf(4 * currentTime); pos.y = activationDistance + 50 * (sinf(PI + 4 * currentTime) - 1); self.position = pos; Но появились еще вопросы: 1)можно ли теперь в этой штуке увеличить расстояние между петлями? Если меняю параметр перед currentTime, то петли исчезают и становится похоже на это (слева сверху): если меняю параметр перед cosf, то амплитуда изменяется 2)как теперь узнать угол касательной, чтобы все время разворачивать изображение по направлению движения?
|
|
| |
GECK | Дата: Среда, 20 Июня 2012, 15:36 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Слоупок спешит на помощь Quote (Gargolev43) 1)можно ли теперь в этой штуке увеличить расстояние между петлями? По идее нужно уменьшить коэффициент перед косинусом. Амплитуду по Y это никак не затронет.
Quote (Gargolev43) 2)как теперь узнать угол касательной, чтобы все время разворачивать изображение по направлению движения? arctg(Y'(t) / X'(t))
Всё гениальное просто. И хреново работает.
|
|
| |