2-я случайная прогулка по питону - рисование гипотенузы из дистрибутива - PullRequest
1 голос
/ 15 февраля 2012

Я пишу простой 2-й броуновский симулятор движения на Python.Очевидно, что легко получить значения смещения x и y смещения из распределения, но я должен настроить его так, чтобы 2-е смещение (т.е. гипотенуза) было получено из распределения, а затем преобразовать его в новые координаты x и y.Это, вероятно, тривиально, и я слишком далек от тригонометрии, чтобы помнить, как это сделать правильно.Мне нужно будет сгенерировать значение для гипотенузы, а затем перевести его в смещения x и y с помощью sin и cos?(Как вы делаете это правильно?)

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Лучше всего это сделать, используя полярные координаты (r, theta) для ваших распределений (где r - ваша "гипотенуза")), а затем преобразовать результат в (x, y), используя x = r cos(theta)и y = r sin(theta).Таким образом, выберите r из любого распределения, которое вам нравится, а затем выберите theta, обычно из плоского распределения, от 0 до 360 градусов, и затем преобразуйте эти значения в x и y.

Движение в обратном направлении (т. Е. Построение коррелированных (x, y) распределений, дающих гипотенузу, независимую от направления), было бы очень затруднительным.

0 голосов
/ 15 февраля 2012

Если у вас гипотенуза в виде отрезка, у вас есть две точки. Из двух точек в форме P0 = (x0, y0) P1 = (x1, y1) вы можете получить смещения x и y, вычитая x0 из x1 и y0 из y1.

Если ваша гипотенуза на самом деле является вектором в полярной координатной плоскости, тогда да, вам нужно взять sin угла и умножить его на величину вектора, чтобы получить смещение по y, а также с помощью cos для смещения х.

...