Попытка заставить две массы вращаться вокруг друг друга ... получая странную ошибку - PullRequest
3 голосов
/ 19 февраля 2012

В основном я создал массы, дал им некоторую скорость и импульс, и я пытаюсь заставить их вращаться вокруг друг друга (вокруг их центра масс), используя силу гравитации.1003 * Это ошибка, которую я получаю:

Traceback (most recent call last):
  File "Untitled", line 12
    earth.p = vector(0, earth.mass*earth.velocity, 0)
Boost.Python.ArgumentError: Python argument types in
    vector.__init__(vector, int, vector, int)
did not match C++ signature:
    __init__(struct _object *, class cvisual::vector)
    __init__(struct _object *)
    __init__(struct _object *, double)
    __init__(struct _object *, double, double)
    __init__(struct _object *, double, double, double)

1 Ответ

5 голосов
/ 19 февраля 2012

вектор принимает три числа в качестве аргументов, как показано в документации vpython здесь

В вашем назначении earth.p = vector(0, earth.mass*earth.velocity, 0), earth.mass*earth.velocity - это вектор, который будет указывать typeof(earth.mass*earth.velocity), а не числокак и ожидалось.

Отсюда и сообщение об ошибке. Вы уверены, что не имели в виду

earth.p = vector(0, earth.mass*mag(earth.velocity), 0)

или earth.p = vector(0, earth.mass*earth.velocity.y, 0).

...