Bu Havuz Oyunu'nu nasıl çözersiniz?
Cevabın B olduğunu biliyorum, ama neden olduğu konusunda emin değilim. Birisi cevabını bulma sürecini açıklayabilir veya muhtemelen bir simülasyon gösterebilirse, bu harika olurdu.
Teşekkür ederiz.
Bu Havuz Oyunu'nu nasıl çözersiniz?
Cevabın B olduğunu biliyorum, ama neden olduğu konusunda emin değilim. Birisi cevabını bulma sürecini açıklayabilir veya muhtemelen bir simülasyon gösterebilirse, bu harika olurdu.
Teşekkür ederiz.
Bilye tablasını masa boyunca takip edebilirsiniz. Bunu kolaylaştıran nokta, topun 45 ° 'lik bir yönde başlamasıdır. Böylece tüm çarpışma açıları 45 ° olacak. Bu nedenle, topun yön vektörünün sadece bir bileşenini ters çevirmeniz gerekir.
Bazı C# örnek kodları. Koordinat sisteminin kaynağı, tablonun sol alt köşesindedir. Aşağıdaki yolda
int ballX = 0;
int ballY = 0;
int ballWidth = 5;
int tableWidth = 230;
int tableHeight = 130;
int directionX = 1;
int directionY = 1;
while(true)
{
//the distances that the ball could travel until it collides with a vertical or horizontal border, respectively
int travelDistanceX, travelDistanceY;
if (directionX > 0)
travelDistanceX = tableWidth - ballWidth - ballX;
else
travelDistanceX = ballX;
if (directionY > 0)
travelDistanceY = tableHeight - ballWidth - ballY;
else
travelDistanceY = ballY;
if(travelDistanceX == travelDistanceY)
{
//we found the target pocket:
Console.WriteLine("Target is located at {0}/{1}.", ballX + travelDistanceX * directionX, ballY + travelDistanceY * directionY);
break;
}
if(travelDistanceX < travelDistanceY)
{
//collision with the vertical borders
ballX += travelDistanceX * directionX;
ballY += travelDistanceX * directionY;
directionX *= -1;
}
else
{
//collision with the horizontal borders
ballX += travelDistanceY * directionX;
ballY += travelDistanceY * directionY;
directionY *= -1;
}
Console.WriteLine("Collision at {0}/{1}.", ballX, ballY);
}
kod sonuçları:
Collision at 125/125.
Collision at 225/25.
Collision at 200/0.
Collision at 75/125.
Collision at 0/50.
Collision at 50/0.
Collision at 175/125.
Collision at 225/75.
Collision at 150/0.
Collision at 25/125.
Collision at 0/100.
Collision at 100/0.
Target is located at 225/125.
Ve (225/125)
de cebi (gerçek olsun top genişliği eklemek top konumu, sınırlayıcı kutusu' sol alt köşesine ölçülür pozisyon) B
Sence ne olacak? Bu genel bir problemi çözmek için bir program yazmak istemediğiniz sürece, bu bir fizik sorusudur. Bu durumda, olabildiğince fazla program yazmak ve daha sonra buraya göndermek istersiniz. – Teepeemm
Bu soruyu konu dışı olarak kapatmak için oy veriyorum çünkü programlama ile ilgili değil. –