Với các vị trí và vận tốc 2 chiều của một cặp bóng bi-a ngay trước khi va chạm, hãy tính vận tốc của chúng sau một va chạm hoàn toàn đàn hồi . Các quả bóng được coi là hình cầu lý tưởng (hoặc tương đương: hình tròn) có cùng bán kính, cùng khối lượng, mật độ đồng đều và không có ma sát.
Đầu vào bao gồm 8 số: p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1ytrong đó p0x,p0ylà tâm của quả bóng thứ nhất, v0x,v0yvận tốc của nó và tương tự p1x,p1y,v1x,v1ycho quả bóng thứ hai. Bạn có thể chấp nhận đầu vào theo bất kỳ thứ tự nào và được cấu trúc theo bất kỳ cách thuận tiện nào, ví dụ như mảng 2x2x2 hoặc có thể là mảng 2x2 cho pvà hai mảng có độ dài 2 cho v0và v1. Cũng tốt để lấy số phức (nếu ngôn ngữ của bạn hỗ trợ chúng) thay vì cặp xy. Tuy nhiên, bạn không nên lấy đầu vào trong một hệ tọa độ khác ngoài Cartesian, tức là cực không được phép.
Lưu ý rằng bán kính của một quả bóng bi-a là một nửa khoảng cách giữa p0x,p0yvà p1x,p1yvì vậy nó không được đưa ra như một phần rõ ràng của đầu vào.
Viết chương trình hoặc hàm xuất hoặc trả về 4 số trong bất kỳ biểu diễn Cartesian thuận tiện nào: các giá trị sau va chạm của v0x,v0y,v1x,v1y.
Một thuật toán có thể là:
tìm dòng bình thường đi qua cả hai trung tâm
tìm đường tiếp tuyến đi qua trung điểm giữa hai tâm và vuông góc với đường bình thường
thay đổi hệ tọa độ và phá vỡ
v0x,v0yvàv1x,v1ythành các thành phần tiếp tuyến và bình thường của chúngv0t,v0nvàv1t,v1ntrao đổi các thành phần bình thường của
v0vàv1, bảo quản các thành phần tiếp tuyến của chúngthay đổi trở lại hệ tọa độ ban đầu
Các xét nghiệm (kết quả được làm tròn đến 5 chữ số thập phân):
p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y'
[-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809]
[ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353]
[-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ -26.48927,-102.19239, 37.48927, -51.80761]
[-21.1,-52.6,-77.7, 91.5, 46.0, 94.1, 83.8, 93.7] [ -48.92598, 154.40834, 55.02598, 30.79166]
[ 91.3, -5.3, 72.6, 89.0, 97.8, 50.5, 36.2, 85.7] [ 71.73343, 81.56080, 37.06657, 93.13920]
[-79.9, 54.9, 92.5,-40.7,-20.8,-46.9,-16.4, -0.9] [ 47.76727, 36.35232, 28.33273, -77.95232]
[ 29.1, 80.7, 76.9,-85.1,-29.3,-49.5,-29.0,-13.0] [ 86.08581, -64.62067, -38.18581, -33.47933]
[ 97.7,-89.0, 72.5, 12.4, 77.8,-88.2, 31.5,-34.0] [ 33.42847, 13.97071, 70.57153, -35.57071]
[-22.2, 22.6,-61.3, 87.1, 67.0, 57.6,-15.3,-23.1] [ -58.90816, 88.03850, -17.69184, -24.03850]
[-95.4, 15.0, 5.3, 39.5,-54.7,-28.5, -0.7, 0.8] [ 21.80656, 21.85786, -17.20656, 18.44214]
[ 84.0,-26.8,-98.6,-85.6,-90.1, 30.9,-48.1, 37.2] [ -89.76828, -88.52700, -56.93172, 40.12700]
[ 57.8, 90.4, 53.2,-74.1, 76.4,-94.4,-68.1,-69.3] [ 51.50525, -57.26181, -66.40525, -86.13819]
[ 92.9, 69.8,-31.3, 72.6,-49.1,-78.8,-62.3,-81.6] [-123.11680, -23.48435, 29.51680, 14.48435]
[-10.3,-84.5,-93.5,-95.6, 35.0, 22.6, 44.8, 75.5] [ -11.12485, 99.15449, -37.57515,-119.25449]
[ -3.9, 55.8,-83.3, 9.1, -2.7,-95.6, 37.7,-47.8] [ -82.84144, -48.75541, 37.24144, 10.05541]
[-76.5,-88.4,-76.7,-49.9, 84.5, 38.0, 4.2, 18.4] [ 6.52461, 15.43907, -79.02461, -46.93907]
[ 64.2,-19.3, 67.2, 45.4,-27.1,-28.7, 64.7, -4.3] [ 59.66292, 44.62400, 72.23708, -3.52400]
[ 9.8, 70.7,-66.2, 63.0,-58.7, 59.5, 83.7,-10.6] [ 68.07646, 84.95469, -50.57646, -32.55469]
[ 62.9, 46.4, 85.0, 87.4, 36.3,-29.0,-63.0,-56.3] [ 23.53487, -86.82822, -1.53487, 117.92822]
[ -5.5, 35.6, 17.6,-54.3, -2.2, 66.8,-15.2, 11.8] [ 24.15112, 7.63786, -21.75112, -50.13786]
Chiến thắng ngắn nhất. Không sơ hở.
cảm ơn @Anush đã giúp sửa màu nền của sơ đồ

r=p-qvớip-=qvà tiếp tục sử dụngpthay vìr, giống như trong câu trả lời của Neil js