Tôi đang chơi với quỹ đạo trong một trò chơi 2 chiều đơn giản, nơi một con tàu bay vòng quanh vũ trụ và bị thu hút bởi những thứ đồ sộ. Vận tốc của con tàu được lưu trữ trong một vectơ và gia tốc được áp dụng cho mọi khung hình theo định luật hấp dẫn phổ quát của Newton. Các khối điểm không di chuyển (chỉ có 1 ngay bây giờ) vì vậy tôi sẽ mong đợi một quỹ đạo hình elip.
Thay vào đó, tôi thấy điều này:
Tôi đã thử với quỹ đạo gần tròn và tôi đã thử làm cho khối lượng khác nhau rất lớn (hệ số một triệu) nhưng tôi luôn có được quỹ đạo quay này.
Đây là một số mã (D), cho ngữ cảnh:
void accelerate(Vector delta)
{
velocity = velocity + delta; // Velocity is a member of the ship class.
}
// This function is called every frame with the fixed mass. It's a
// method of the ship's.
void fall(Well well)
{
// f=(m1 * m2)/(r**2)
// a=f/m
// Ship mass is 1, so a = f.
float mass = 1;
Vector delta = well.position - loc;
float rSquared = delta.magSquared;
float force = well.mass/rSquared;
accelerate(delta * force * mass);
}