Sebuah peluru yang ditembakkan dari sebuah meriam atau senjata, maka peluru akan mulai bergerak ke depan dengan lintasan membentuk parabola terbalik. Hal ini disebabkan oleh gaya tarik gravitasi yang membu peluru begerak dengan kecepatan lurus berubah beraturan pada sumbu y.
Daftar Isi
Jangkauan Peluru Meriam
A. Tujuan Percobaan
- Mengetahuan jangakuan meriam yang ditembakkan dari atas sebuah gedung berdasarkan kecepatan dan sudut awal tembakan.
B. Landasan Teori
Misalkan sebuah meriam diletakkan di atas sebuah gedung dengan ketinggian 100 m. Dari ketinggian ini, peluru memiliki dua skenario tembakan, yakni ketika memiliki sudut lebih tinggi dari horison meriam dan lebih rendah dari meriam.
1. Setengah Parabola
Skenario pertama jika meriam ditembakan dengan sudut di bawah horison maka peluru akan membentuk gerak setengah parabola.
t =\frac{v_{0y}^2+2gh-v_{0y}}{g}
Jangkauan meriam yang ditambakkan pada posisi ini dapat ditentukan dengan persamaan :
R = v_x.t
dimana
v_x= v_o \sin \theta
Dimana nilai dari t ditentukan oleh gerak peluruh ke arah sumbuh y tepat mencapai permukaan tanah. Nilai t dapat dihitung dengan persamaan
v_y^2=v_{0y}^2+2gh
dimana
v_y=v_0+gt
maka t adalah:
t=\frac{v_y-v_{0y}}{g}
Setelah memperoleh t, kita bisa dapatkan nilai R dengan memeasukkan ke persaman R = vxt
R = v_0 \sin \theta \frac{v_0 \cos^2 \theta+2gh-v_0 \cos \theta}{g}
C. Contoh Code
#include <stdio.h>
#include <math.h>
#define GRAVITY 9.8
float calculateDistance(float initialVelocity, float launchAngle, float height)
{
float horizontalDistance, verticalDistance;
float timeOfFlight;
// Sudut tembakan lebih rendah dari horison
if (launchAngle < 0)
{
timeOfFlight = (-2 * initialVelocity * sin(launchAngle)) / GRAVITY;
horizontalDistance = initialVelocity * cos(launchAngle) * timeOfFlight;
verticalDistance = initialVelocity * sin(launchAngle) * timeOfFlight + (0.5 * GRAVITY * pow(timeOfFlight, 2));
}
// Sudut tembakan di atas horison (gerak parabola)
else
{
timeOfFlight = (2 * initialVelocity * sin(launchAngle)) / GRAVITY;
horizontalDistance = initialVelocity * cos(launchAngle) * timeOfFlight;
verticalDistance = initialVelocity * sin(launchAngle) * timeOfFlight;
}
float adjustedHeight = height + verticalDistance;
return sqrt(pow(horizontalDistance, 2) + pow(adjustedHeight, 2));
}
int main()
{
float initialVelocity, launchAngle, height, distance;
printf("Masukkan kecepatan awal (m/s): ");
scanf("%f", &initialVelocity);
printf("Masukkan sudut lemparan (derajat): ");
scanf("%f", &launchAngle);
printf("Masukkan ketinggian gedung (m): ");
scanf("%f", &height);
// Mengkonversi sudut dari derajat menjadi radian
launchAngle = launchAngle * M_PI / 180;
distance = calculateDistance(initialVelocity, launchAngle, height);
printf("Jarak tempuh tembakan: %.2f meter\n", distance);
return 0;
}