Bir çift bilardo topunun 2 boyutlu pozisyonları ve hızları, çarpmadan hemen önce, elastik bir çarpışmadan sonra hızlarını hesaplar . Bilyaların, aynı yarıçap, aynı kütle, homojen yoğunluk ve sürtünme olmadan ideal küreler (veya eşdeğeri: daireler) olduğu varsayılır.
: Girdi 8 sayıdan oluşur ilk topu, merkezidir benzer onun hızına ve ikinci topu için. Sen herhangi bir sırada girdi kabul eder ve bir 2x2x2 dizisi, ya da belki bir 2x2 dizisi gibi mesela, herhangi uygun bir şekilde yapılandırılmış olabilir ve iki uzunluk-2 diziler ve . Ayrıca, xy çiftleri yerine (eğer diliniz destekliyorsa) karmaşık sayılar almanız iyi olur. Bununla birlikte, kartezyen dışındaki bir koordinat sistemine giriş yapmamalısınız, yani kutuplara izin verilmez.p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1y
p0x,p0y
v0x,v0y
p1x,p1y,v1x,v1y
p
v0
v1
Bilardo topunun yarıçapının aradaki mesafenin yarısı olduğunu p0x,p0y
ve p1x,p1y
bu nedenle girişin açık bir parçası olarak verilmediğini unutmayın.
Herhangi bir uygun Kartezyen gösterimi için 4 sayı veren veya döndüren bir program veya işlev yazın: çarpışma sonrası değerleri v0x,v0y,v1x,v1y
.
Olası bir algoritma:
her iki merkezden geçen normal çizgiyi bulmak
iki merkez arasındaki orta noktadan geçen ve normal çizgiye dik olan teğet çizgiyi bulun
koordinat sistemi ve yıkmak değişir
v0x,v0y
vev1x,v1y
bunların teğet ve normal bileşenlerinev0t,v0n
vev1t,v1n
teğet bileşenlerini normal bileşenleriyle değiştirerek
v0
ve bunlarıv1
koruyarakorijinal koordinat sistemine geri dön
Testler (5 ondalık basamağa yuvarlanmış sonuçlar):
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]
En kısa kazançlar. Boşluk yok.
Diyagramın arka plan renginin düzeltilmesine yardımcı olduğunuz için teşekkürler
r=p-q
onunlap-=q
daha ileride kullanırsanız bir bayt kaydedebilirsinizp
r