Động lượng và thứ tự các vấn đề cập nhật trong động cơ vật lý của tôi


22

nhập mô tả hình ảnh ở đây

Câu hỏi này là một câu hỏi "tiếp theo" từ câu hỏi trước của tôi, liên quan đến phát hiện và giải quyết va chạm, mà bạn có thể tìm thấy ở đây .


Nếu bạn không muốn đọc câu hỏi trước, đây là một mô tả ngắn gọn về cách thức hoạt động của động cơ vật lý của tôi:

Mỗi thực thể vật lý được lưu trữ trong một lớp gọi là SSSPBody.

Chỉ AABB được hỗ trợ.

Mỗi SSSPBody được lưu trữ trong một lớp gọi là SSSPWorld, cập nhật mọi cơ thể và xử lý trọng lực.

Mỗi khung hình, SSSPWorld cập nhật mọi cơ thể.

Mọi cơ quan cập nhật tìm kiếm các cơ thể gần đó trong hàm băm không gian, kiểm tra xem họ có cần phát hiện va chạm với chúng không. Nếu có, họ gọi một sự kiện "va chạm" và kiểm tra xem họ có cần giải quyết va chạm với họ không. Nếu có, họ tính toán vectơ thâm nhập và chồng chéo hướng, sau đó thay đổi vị trí của chúng để giải quyết sự thâm nhập.

Khi một cơ thể va chạm với người khác, nó sẽ chuyển vận tốc của mình sang người khác bằng cách đơn giản đặt vận tốc của cơ thể về phía mình.

Một cơ thể là vận tốc được đặt thành 0 khi nó không thay đổi vị trí từ khung cuối cùng. Nếu nó cũng va chạm với một cơ thể chuyển động (chẳng hạn như thang máy hoặc nền tảng di chuyển), nó sẽ tính toán độ chênh lệch chuyển động của thang máy để xem liệu cơ thể đó có di chuyển khỏi vị trí cuối cùng không.

Ngoài ra, một cơ thể gọi một sự kiện "bị nghiền nát" khi tất cả các góc AABB của nó chồng lên một cái gì đó trong một khung.

Đây là mã nguồn ĐẦY ĐỦ của trò chơi của tôi. Nó được chia thành ba dự án. SFMLStart là một thư viện xử lý đầu vào đơn giản, vẽ và cập nhật các thực thể. SFMLStartPhysics là lớp quan trọng nhất, trong đó các lớp SSSPBody và SSSPWorld. PlatformerPhysicsTest là dự án trò chơi, chứa tất cả logic trò chơi.

đây là phương thức "cập nhật" trong lớp SSSPBody, được nhận xét và đơn giản hóa. Bạn chỉ có thể xem xét điều này nếu bạn không muốn nhìn vào toàn bộ dự án SFMLStartSimplePhysics. (Và ngay cả khi bạn làm thế, bạn vẫn nên xem cái này vì nó đã được nhận xét.)


.Gif cho thấy hai vấn đề.

  1. Nếu các cơ thể được đặt theo một thứ tự khác nhau, kết quả khác nhau xảy ra. Các thùng bên trái giống hệt các thùng bên phải, chỉ được đặt theo thứ tự nghịch đảo (trong trình chỉnh sửa).
  2. Cả hai thùng phải được đẩy về phía trên cùng của màn hình. Trong tình huống bên trái, không có thùng nào được đẩy. Ở bên phải, chỉ có một trong số họ là. Cả hai tình huống đều ngoài ý muốn.

Vấn đề đầu tiên: thứ tự cập nhật

Điều này khá đơn giản để hiểu. Trong tình huống bên trái, thùng trên cùng được cập nhật trước cái khác. Ngay cả khi thùng ở phía dưới "chuyển" vận tốc sang cái khác, nó vẫn cần đợi khung tiếp theo di chuyển. Vì nó không di chuyển, vận tốc của thùng phía dưới được đặt thành 0.

Tôi không có ý tưởng làm thế nào để khắc phục điều này. Tôi muốn giải pháp không phụ thuộc vào việc "sắp xếp" danh sách cập nhật, bởi vì tôi cảm thấy mình đang làm gì đó sai trong toàn bộ thiết kế động cơ vật lý.

Làm thế nào để các động cơ vật lý chính (Box2D, Bullet, Chipmunk) xử lý thứ tự cập nhật?


Vấn đề thứ hai: chỉ có một thùng được đẩy lên trần nhà

Tôi chưa hiểu tại sao điều này xảy ra. Những gì thực thể "mùa xuân" làm là đặt vận tốc của cơ thể thành -4000 và đặt lại vị trí của nó trên đỉnh của lò xo. Ngay cả khi tôi vô hiệu hóa mã định vị lại, vấn đề vẫn xảy ra.

Ý tưởng của tôi là khi thùng phía dưới va chạm với thùng trên cùng, vận tốc của nó được đặt thành 0. Tôi không chắc tại sao điều này lại xảy ra.


Mặc dù có cơ hội trông giống như một người bỏ cuộc ở vấn đề đầu tiên, tôi đã đăng toàn bộ mã nguồn dự án ở trên. Tôi không có bất cứ điều gì để chứng minh điều đó, nhưng tin tôi đi, tôi đã cố gắng khắc phục điều này nhưng tôi không thể tìm ra giải pháp và tôi không có bất kỳ kinh nghiệm nào trước đây về vật lý và va chạm. Tôi đã cố gắng giải quyết hai vấn đề này trong hơn một tuần và bây giờ tôi đang tuyệt vọng.

Tôi không nghĩ rằng tôi có thể tự mình tìm ra giải pháp mà không cần loại bỏ nhiều tính năng ra khỏi trò chơi (ví dụ như chuyển tốc độ và lò xo).

Cảm ơn rất nhiều vì đã dành thời gian đọc câu hỏi này, và cảm ơn nhiều hơn nữa nếu bạn thậm chí cố gắng đưa ra một giải pháp hoặc một gợi ý.


Bất cứ khi nào bạn xếp các hộp bạn có thể kết hợp vật lý của chúng để chúng được coi là một đối tượng?
CiscoIPPhone

Câu trả lời:


12

Trên thực tế, thứ tự các vấn đề cập nhật khá phổ biến đối với các động cơ vật lý xung thông thường, bạn không thể trì hoãn việc áp dụng lực như Vigil gợi ý, cuối cùng bạn sẽ phá vỡ sự bảo toàn năng lượng khi một vật thể va chạm với 2 vật thể khác. Thông thường họ làm dù có thể tạo ra thứ gì đó có vẻ khá thật, mặc dù một thứ tự cập nhật khác sẽ tạo ra kết quả khác biệt đáng kể.

Trong mọi trường hợp, cho mục đích của bạn, có đủ trục trặc trong một hệ thống xung mà tôi đề nghị bạn thay vào đó xây dựng một mô hình lò xo đại chúng.

Ý tưởng cơ bản là thay vì cố gắng giải quyết va chạm trong một bước bạn tác dụng một lực lên các vật thể va chạm, lực này phải tương đương với lượng chồng chéo giữa các vật thể, điều này có thể so sánh với cách các vật thể thực trong quá trình va chạm biến đổi chúng năng lượng chuyển động thành biến dạng và sau đó chuyển động trở lại, điều tuyệt vời của hệ thống này là nó cho phép lực đi qua một vật thể mà không cần vật thể đó phải nảy qua lại, và nó có thể được thực hiện hoàn toàn theo thứ tự cập nhật độc lập.

Để các vật thể dừng lại thay vì bị dội lại vô thời hạn, bạn sẽ phải áp dụng một số hình thức làm ẩm, bạn có thể ảnh hưởng lớn đến phong cách và cảm giác của trò chơi tùy thuộc vào cách bạn thực hiện, nhưng cách tiếp cận rất cơ bản là tác dụng một lực lên hai vật chạm tương đương với chuyển động bên trong của chúng, bạn có thể chọn chỉ áp dụng nó khi chúng đang di chuyển về phía nhau hoặc khi chúng di chuyển ra xa nhau, vật sau có thể được sử dụng để ngăn chặn hoàn toàn vật thể nảy lại khi chúng chạm đất, nhưng cũng sẽ khiến chúng hơi dính.

Bạn cũng có thể tạo hiệu ứng ma sát bằng cách hãm một vật theo hướng vuông góc của một vụ va chạm, lượng phanh phải tương đương với lượng chồng chéo.

Bạn có thể xoay quanh khái niệm khối lượng khá dễ dàng bằng cách làm cho tất cả các vật thể có cùng khối lượng và các vật thể bất động sẽ hoạt động giống như có khối lượng vô hạn nếu bạn đơn giản bỏ qua việc tăng tốc chúng.

Một số mã giả, chỉ trong trường hợp ở trên không đủ rõ ràng:

//Presuming that you have done collision checks between two objects and now have  
//numbers for how much they overlap in each direction.
overlapX
overlapY
if(overlapX<overlapY){ //Do collision in direction X
    if(obj1.X>obj2.X){
        swap(obj1,obj2)
    }
    //Spring effect:
    obj1.addXvelocity-=overlapX*0.1 //Constant, the lower this is set the softer the  
                                    //collision will be.
    obj2.addXvelocity+=overlapX*0.1
    //Dampener effect:
    velocityDifference=obj2.Xvelocity-obj1.Xvelocity
    //velocityDifference=min(velocityDifference,0) //Uncomment to only dampen when  
                                                   //objects move towards each other.
    obj1.addXvelocity+=velocityDifference*0.1 //Constant, higher for more dampening.
    obj2.addXvelocity-=velocityDifference*0.1
    //Friction effect:
    if(obj1.Yvelocity>obj2.Yvelocity){
        swap(obj1,obj2)
    }
    friction=overlapX*0.01
    if(2*friction>obj2.Yvelocity-obj1.Yvelocity){
        obj1.addYvelocity+=(obj2.Yvelocity-obj1.Yvelocity)/2
        obj2.addYvelocity-=(obj2.Yvelocity-obj1.Yvelocity)/2
    }
    else{
        obj1.addYvelocity+=friction
        obj2.addYvelocity-=friction
    }
}
else{ //Do collision in direction Y

}

Điểm của các thuộc tính addXvelocity và addYvelocity là chúng được thêm vào vận tốc của đối tượng sau khi tất cả xử lý va chạm được thực hiện.

Chỉnh sửa:
Bạn có thể thực hiện công cụ theo thứ tự sau, trong đó mỗi viên đạn phải được thực hiện trên tất cả các yếu tố trước khi lần tiếp theo được thực hiện:

  • Phát hiện va chạm, chúng có thể được giải quyết ngay khi phát hiện.
  • Thêm các giá trị addVelocity vào các giá trị vận tốc, thêm trọng lực Yvelocity, đặt lại các giá trị addVelocity về 0, di chuyển các đối tượng theo vận tốc của chúng.
  • Kết xuất cảnh.

Ngoài ra, tôi nhận ra rằng những điều sau đây có thể không hoàn toàn rõ ràng trong bài viết ban đầu của tôi, dưới tác động của các vật thể trọng lực sẽ chồng chéo lên nhau khi đặt lên nhau, điều này cho thấy hộp va chạm của chúng phải cao hơn một chút so với biểu diễn đồ họa của chúng để tránh chồng chéo trực quan Vấn đề này sẽ ít hơn nếu vật lý được chạy ở tốc độ cập nhật cao hơn. Tôi khuyên bạn nên thử chạy ở tần số 120Hz để có sự thỏa hiệp hợp lý giữa thời gian CPU và độ chính xác vật lý.

Edit2:
Lưu lượng động cơ vật lý rất cơ bản:

  • Va chạm và trọng lực tạo ra lực / gia tốc. acceleration = [Complicated formulas]
  • Lực / gia tốc được thêm vào vận tốc. velocity += acceleration
  • Vận tốc được thêm vào vị trí. position += velocity

Có vẻ tốt, không bao giờ nghĩ về mùa xuân đại chúng cho các nền tảng. Thumbs up cho một cái gì đó khai sáng :)
EnoughTea

Tôi sẽ thử thực hiện điều này trong vài giờ nữa, khi tôi trở về nhà. Tôi có nên di chuyển các cơ thể (Position + = Vận tốc) đồng thời sau đó kiểm tra va chạm hay di chuyển và kiểm tra va chạm từng cái một không? [Ngoài ra, tôi có phải tự sửa đổi vị trí để giải quyết va chạm không? Hay việc thay đổi vận tốc sẽ giải quyết vấn đề đó?]
Vittorio Romeo

Tôi không hoàn toàn chắc chắn làm thế nào để giải thích câu hỏi đầu tiên của bạn. Độ phân giải va chạm sẽ thay đổi vận tốc, và do đó chỉ ảnh hưởng gián tiếp đến vị trí.
aaaaaaaaaaaa

Thực tế là tôi di chuyển các thực thể bằng cách đặt thủ công vận tốc của chúng đến một giá trị nhất định. Để giải quyết chồng chéo, tôi xóa khoảng cách chồng lấp khỏi vị trí của chúng. Nếu tôi sử dụng phương pháp của bạn, tôi sẽ phải di chuyển các thực thể bằng cách sử dụng các lực lượng hay thứ gì khác? Tôi chưa bao giờ làm điều đó trước đây.
Vittorio Romeo

Về mặt kỹ thuật, vâng, bạn sẽ phải sử dụng các lực, trong đoạn mã của tôi, tuy nhiên, nó được đơn giản hóa một chút với tất cả các đối tượng có trọng số 1, và do đó lực bằng với gia tốc.
aaaaaaaaaaaa

14

Chà, rõ ràng bạn không phải là người dễ dàng từ bỏ, bạn là một người sắt thực sự, tôi sẽ giơ tay lên không trung sớm hơn, vì dự án này có sự tương đồng mạnh mẽ với một khu rừng tảo bẹ :)

Trước hết, các vị trí và vận tốc được đặt ở khắp mọi nơi, từ quan điểm của hệ thống con vật lý, đó là một công thức cho một thảm họa. Ngoài ra, khi thay đổi những thứ tách rời bằng các hệ thống con khác nhau, hãy tạo một phương thức riêng như "ChangeVelocityByPhysicsEngine", "ChangeVelocityBySpring", "LimitVelocity", "TransferVelocity" hoặc đại loại như thế. Nó sẽ thêm khả năng kiểm tra các thay đổi được thực hiện bởi một phần cụ thể của logic và cung cấp một ý nghĩa bổ sung cho những thay đổi vận tốc này. Bằng cách đó, việc gỡ lỗi sẽ dễ dàng hơn.

Vấn đề đầu tiên.

Lên bản thân câu hỏi. Bây giờ bạn chỉ cần áp dụng vị trí và vận tốc sửa lỗi "khi họ đi" theo thứ tự xuất hiện và logic trò chơi. Điều đó sẽ không hoạt động đối với các tương tác phức tạp mà không cần mã hóa cẩn thận vật lý của từng thứ phức tạp. Một động cơ vật lý riêng biệt là không cần thiết sau đó.

Để thực hiện các tương tác phức tạp mà không cần hack, bạn cần thêm một bước nữa giữa việc phát hiện va chạm dựa trên các vị trí được thay đổi bởi vận tốc ban đầu và thay đổi cuối cùng của các vị trí dựa trên "vận tốc sau". Tôi tưởng tượng nó sẽ đi như thế này:

  • tích hợp vận tốc bằng cách sử dụng tất cả các lực tác dụng lên cơ thể (hiện tại bạn đang áp dụng sửa chữa vận tốc, để lại các tính toán vận tốc cho động cơ vật lý của bạn và sử dụng lực để di chuyển mọi thứ thay thế) , sau đó sử dụng vận tốc mới để tích hợp các vị trí.
  • phát hiện va chạm, sau đó khôi phục vận tốc và vị trí,
  • sau đó xử lý các va chạm (sử dụng các xung mà không cập nhật vị trí ngay lập tức, ofc, chỉ vận tốc được thay đổi cho đến bước cuối cùng)
  • tích hợp vận tốc mới một lần nữa và xử lý tất cả các va chạm bằng cách sử dụng các xung một lần nữa, ngoại trừ bây giờ các va chạm không co giãn.
  • thực hiện tích hợp cuối cùng của các vị trí sử dụng vận tốc kết quả.

Những thứ bổ sung có thể bật lên, như đối phó với giật, từ chối xếp chồng lên nhau khi FPS nhỏ, hoặc những thứ khác như thế, hãy chuẩn bị :)

Vấn đề thứ hai

Vận tốc dọc của cả hai thùng "không trọng lượng" không bao giờ thay đổi từ số không. Thật kỳ lạ, trong vòng Cập nhật của PhysSpring, bạn chỉ định vận tốc, nhưng trong vòng Cập nhật của PhysCrate thì nó bằng không. Có thể tìm thấy một dòng mà vận tốc bị sai, nhưng tôi đã dừng gỡ lỗi ở đây vì đó là tình huống "Thay đổi những gì bạn may". Đã đến lúc ngừng mã hóa và bắt đầu suy nghĩ lại mọi thứ khi việc gỡ lỗi trở nên khó khăn. Nhưng nếu nói đến một điểm mà tác giả mã không thể hiểu được những gì đang diễn ra trong mã, thì cơ sở mã của bạn đã chết mà bạn không nhận ra điều đó :)

Vấn đề thứ ba

Tôi nghĩ rằng một cái gì đó đã tắt khi bạn cần tạo lại một phần của Farseer để làm một platformer dựa trên gạch đơn giản. Cá nhân, tôi sẽ nghĩ về động cơ hiện tại của bạn là một kinh nghiệm tuyệt vời, và sau đó bỏ nó hoàn toàn cho vật lý dựa trên gạch đơn giản và đơn giản hơn. Trong khi làm như vậy, sẽ là khôn ngoan khi chọn những thứ như Debug.Assert và thậm chí, có thể, thật kinh dị, các bài kiểm tra đơn vị, vì có thể bắt được những điều bất ngờ trước đó.


Tôi thích sự so sánh "rừng tảo bẹ" đó.
Den

Trên thực tế, tôi hơi xấu hổ khi sử dụng những từ như vậy, nhưng tôi cảm thấy nếu nó dẫn đến một hoặc hai lần tái cấu trúc, thì nó sẽ hợp lý.
EnoughTea

Chỉ với một thử nghiệm duy nhất tại t , không phải lúc nào cũng có khả năng điều này xảy ra? Tôi sẽ tưởng tượng rằng bạn cần tích hợp vận tốc ở t và sau đó kiểm tra va chạm trong t + 1 trước khi đặt bất kỳ vận tốc nào về 0?
Jonathan Connell

Đúng, chúng tôi đang phát hiện va chạm phía trước sau khi tích hợp trạng thái ban đầu trước từ t đến t + dt bằng Runge-Kutta hoặc một cái gì đó.
EnoughTea

"tích hợp vận tốc bằng cách sử dụng tất cả các lực tác dụng lên cơ thể" "để lại các tính toán vận tốc cho động cơ vật lý của bạn" - Tôi hiểu những gì bạn đang cố gắng nói, nhưng tôi không biết làm thế nào để làm điều này. Có ví dụ / bài viết nào bạn có thể chỉ cho tôi không?
Vittorio Romeo

7

Khi một cơ thể va chạm với người khác, nó sẽ chuyển vận tốc của mình sang người khác bằng cách đơn giản đặt vận tốc của cơ thể về phía mình.

Vấn đề của bạn là đây là những giả định sai về cơ bản về chuyển động, vì vậy những gì bạn nhận được không giống với chuyển động như bạn đã quen thuộc với nó.

Khi một cơ thể va chạm với người khác, động lượng được bảo toàn. Nghĩ về điều này như "A hit B" so với "B hit A" là áp dụng một động từ chuyển tiếp cho một tình huống nội động từ. A và B va chạm; động lượng kết quả phải bằng động lượng ban đầu. Đó là, nếu A và B có khối lượng bằng nhau, thì hiện tại cả hai đều đang di chuyển với giá trị trung bình của vận tốc ban đầu.

Bạn cũng có thể sẽ cần một số trượt va chạm và một bộ giải lặp, hoặc bạn sẽ gặp phải các vấn đề ổn định. Có lẽ bạn nên đọc qua một số bài thuyết trình GDC của Erin Catto.


2
Họ sẽ chỉ nhận được giá trị trung bình của vận tốc ban đầu nếu va chạm hoàn toàn không co giãn, ví dụ A và B là những miếng bột.
Mikael Öhman

"bằng cách đơn giản là thiết lập vận tốc của cơ thể thành của chính nó". Những phát biểu như thế này làm sáng tỏ lý do tại sao nó không hoạt động. Nói chung, tôi luôn thấy rằng những người thiếu kinh nghiệm viết các hệ thống vật lý mà không hiểu các nguyên tắc cơ bản liên quan. Bạn không bao giờ 'chỉ đặt vận tốc', hoặc 'đơn giản là ...'. Mỗi sửa đổi các thuộc tính của cơ thể nên là một ứng dụng trực tiếp của các định luật động lực học; bao gồm bảo tồn động lượng, năng lượng, v.v ... Vâng, sẽ luôn có những yếu tố mờ nhạt để bù đắp cho sự bất ổn, nhưng không có lúc nào bạn có thể thay đổi một cách kỳ diệu vận tốc của cơ thể.
MrCranky

Dễ dàng nhất để giả định các cơ thể không co giãn khi cố gắng để một động cơ chạy ở nơi đầu tiên, càng ít phức tạp thì càng tốt cho việc giải quyết vấn đề.
Patrick Hughes

4

Tôi nghĩ rằng bạn đã thực hiện một nỗ lực thực sự cao quý, nhưng dường như có những vấn đề cơ bản với cách cấu trúc mã. Như những người khác đã đề xuất, có thể giúp tách các hoạt động thành các phần kín đáo, ví dụ:

  1. Giai đoạn rộng : Lặp lại tất cả các đối tượng - thực hiện kiểm tra nhanh (ví dụ: AABB) để xác định đối tượng nào có thể va chạm - loại bỏ những đối tượng không có.
  2. Giai đoạn hẹp : Vòng qua tất cả các đối tượng va chạm - tính toán một vectơ thâm nhập cho va chạm (ví dụ: sử dụng SAT).
  3. Phản ứng va chạm : Lặp qua danh sách các vectơ va chạm - tính toán một vectơ lực dựa trên khối lượng, sau đó sử dụng phương pháp này để tính toán vectơ gia tốc.
  4. Tích hợp : Lặp qua tất cả các vectơ gia tốc và tích hợp vị trí (và xoay nếu cần).
  5. Kết xuất : Lặp qua tất cả các vị trí được tính toán và hiển thị từng đối tượng.

Bằng cách tách các giai đoạn, tất cả các đối tượng được cập nhật dần dần đồng bộ hóa và bạn sẽ không có các phụ thuộc đơn hàng mà bạn hiện đang vật lộn. Mã cũng thường đơn giản và dễ thay đổi hơn. Mỗi giai đoạn này khá chung chung và thường có thể thay thế các thuật toán tốt hơn sau khi bạn có một hệ thống làm việc.

Điều đó nói rằng, mỗi phần trong số đó là một khoa học, và có thể chiếm rất nhiều thời gian cố gắng tìm giải pháp tối ưu. Có thể tốt hơn để bắt đầu với một số thuật toán được sử dụng phổ biến nhất:

  • Phát hiện va chạm pha rộng : Băm không gian .
  • Phát hiện va chạm pha hẹp : Đối với vật lý gạch đơn giản, bạn chỉ có thể áp dụng các thử nghiệm giao nhau giữa Trục liên kết trục (AABB). Đối với các hình dạng phức tạp hơn, bạn có thể sử dụng Định lý trục tách . Dù bạn sử dụng thuật toán nào, nó sẽ trả về hướng và độ sâu của giao điểm giữa hai đối tượng (được gọi là vectơ thâm nhập).
  • Phản ứng va chạm : Sử dụng Phép chiếu để giải quyết sự thâm nhập.
  • Tích hợp : Bộ tích hợp là yếu tố quyết định lớn nhất đến độ ổn định và tốc độ của động cơ. Hai tùy chọn phổ biến là tích hợp Verlet (nhanh nhưng đơn giản) hoặc RK4 (chính xác nhưng chậm). Sử dụng tích hợp verlet có thể dẫn đến một thiết kế cực kỳ đơn giản vì hầu hết các hành vi vật lý (nảy, xoay) chỉ hoạt động mà không cần quá nhiều nỗ lực. Một trong những tài liệu tham khảo tốt nhất tôi từng thấy khi học tích hợp RK4 là loạt bài về vật lý cho các trò chơi của Glen Fiedler .

Một nơi tốt (và rõ ràng) để bắt đầu là với định luật chuyển động của Newton .


Cảm ơn vi đa trả lơi. Làm thế nào để tôi chuyển vận tốc giữa các cơ thể, mặc dù? Có xảy ra trong giai đoạn hội nhập?
Vittorio Romeo

Theo một nghĩa nào đó, vâng. Chuyển vận tốc bắt đầu với giai đoạn phản ứng va chạm. Đó là khi bạn tính toán các lực tác động lên cơ thể. Lực chuyển thành gia tốc sử dụng gia tốc công thức = lực / khối lượng. Gia tốc được sử dụng trong pha tích hợp để tính vận tốc, sau đó được sử dụng để tính toán vị trí. Độ chính xác của pha tích hợp xác định tốc độ chính xác (và vị trí sau đó) thay đổi theo thời gian như thế nào.
Luke Van vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.