Topik ini membahas dua satuan pengukuran sudut, yaitu derajat dan radian, beserta hubungan keduanya pada sebuah lingkaran. Pembahasan bergerak dari definisi radian melalui panjang busur, konversi antar satuan dengan NumPy, pembuatan diagram sudut, hingga demo interaktif yang dapat langsung dicoba. Setelah topik ini selesai dibaca, sudut dapat dinyatakan dalam satuan yang tepat, dan alasan fungsi trigonometri NumPy menerima radian dapat dijelaskan dari geometrinya.
Derajat dan radian pada lingkaran#
Derajat membagi satu putaran penuh menjadi 360 bagian sama besar, sedangkan radian mengukur sudut dari panjang busur yang dibentuknya pada lingkaran. Sebuah sudut pusat bernilai satu radian apabila busur yang dibatasi kedua jari-jarinya sama panjang dengan jari-jari lingkaran. Besar sudut dalam radian oleh karena itu dinyatakan sebagai perbandingan berikut.
Dengan menyatakan panjang busur dan jari-jari, hasil bagi tersebut berupa bilangan murni tanpa satuan. Satu putaran penuh menempuh busur sepanjang keliling lingkaran , sehingga satu putaran penuh sama dengan radian. Karena putaran yang sama juga berarti , hubungan kedua satuan itu menjadi titik tolak setiap konversi.
Diagram berikut memperlihatkan sudut pusat beserta busurnya, yaitu bentuk geometri yang mendasari definisi radian. Panjang busur merah dibandingkan dengan jari-jari biru, dan perbandingan itulah nilai sudutnya dalam radian. Label pada busurnya merujuk rumus panjang busur yang diterapkan pada bagian berikutnya.
Perbandingan tersebut membuat radian bersifat alami. Nilai tidak bergantung pada besar lingkaran, sehingga sudut yang sama tetap bernilai sama apabila lingkarannya diperbesar atau diperkecil. Derajat tidak memiliki sifat ini karena angka 360 merupakan konvensi pembagian, bukan besaran yang muncul dari geometri lingkaran. Derajat tetap berguna untuk penyajian yang mudah dibaca manusia, sedangkan perhitungan pada program umumnya menggunakan radian.
Konversi derajat dan radian dengan NumPy#
Hubungan antara kedua satuan menghasilkan dua rumus konversi, satu untuk setiap arah. Faktor pengalinya berupa untuk arah derajat ke radian dan kebalikannya untuk arah radian ke derajat. Keduanya ditulis sebagai berikut.
NumPy menyediakan pasangan fungsi np.deg2rad dan np.rad2deg untuk kedua arah, sedangkan konstanta tersedia sebagai np.pi. Skrip utuh berikut menerapkan keduanya pada beberapa sudut yang sering muncul, lalu memeriksa rumus panjang busur . Setiap baris keluarannya dapat dihitung ulang secara manual untuk memastikan kecocokannya.
import numpy as np
derajat = np.array([0.0, 30.0, 45.0, 60.0, 90.0, 180.0, 360.0])
radian = np.deg2rad(derajat)
for d, r in zip(derajat, radian):
print(f"{d:6.1f} derajat = {r:8.4f} radian")
# satu radian dinyatakan kembali dalam derajat
print(f"1 radian = {np.rad2deg(1.0):.4f} derajat")
# rumus panjang busur s = r·θ diperiksa dengan r = 1.5 dan θ = 0.8 radian
r, t = 1.5, 0.8
print(f"busur s = r·θ pada r = {r} dan θ = {t} : {r * t:.4f}") 0.0 derajat = 0.0000 radian
30.0 derajat = 0.5236 radian
45.0 derajat = 0.7854 radian
60.0 derajat = 1.0472 radian
90.0 derajat = 1.5708 radian
180.0 derajat = 3.1416 radian
360.0 derajat = 6.2832 radian
1 radian = 57.2958 derajat
busur s = r·θ pada r = 1.5 dan θ = 0.8 : 1.2000Keluaran tersebut memuat beberapa nilai yang patut dikenali. Sudut setara radian yang tercetak , sedangkan satu radian setara derajat, jauh lebih besar daripada satu derajat. Baris terakhir menghitung panjang busur untuk dan , dan hasilnya persis sama dengan hasil kali keduanya. Rumus busur bekerja tanpa faktor koreksi karena radian memang diturunkan dari perbandingan busur terhadap jari-jari.
Menghasilkan diagram sudut dari kode#
Diagram lingkaran pada bagian pertama dibuat oleh skrip matplotlib berikut. Lingkaran penuh digambar dari 400 titik hasil np.linspace pada rentang sampai , sedangkan busur merah tebal menggunakan rentang yang lebih pendek dari sampai . Pemanggilan ax.set_aspect("equal") menjaga skala kedua sumbu tetap sama, sehingga lingkaran tidak berubah bentuk menjadi elips.
import numpy as np
import matplotlib
matplotlib.use("Agg") # backend tanpa jendela, cocok untuk menyimpan berkas
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5, 5))
ax.set_aspect("equal")
r = 1.0
theta = np.deg2rad(52.0)
# lingkaran penuh berwarna abu-abu
t = np.linspace(0.0, 2 * np.pi, 400)
ax.plot(r * np.cos(t), r * np.sin(t), color="#999999", linewidth=1.5)
# dua jari-jari biru yang membentuk sudut pusat
ax.plot([0, r], [0, 0], color="#1f77b4", linewidth=2.2)
ax.plot([0, r * np.cos(theta)], [0, r * np.sin(theta)], color="#1f77b4", linewidth=2.2)
ax.plot(0, 0, "o", color="#444444", markersize=4)
# busur merah tebal di antara kedua jari-jari
busur = np.linspace(0.0, theta, 120)
ax.plot(r * np.cos(busur), r * np.sin(busur), color="#d62728", linewidth=4.0)
# label
ax.text(0.42, -0.10, "r", color="#1f77b4", fontsize=14, ha="center")
ax.text(0.26, 0.50, "r", color="#1f77b4", fontsize=14, ha="center")
ax.text(0.41, 0.21, "θ", fontsize=14, ha="center", color="#444444")
ax.text(0.66, 0.32, "s = r·θ", color="#d62728", fontsize=13, ha="center")
ax.set_xlim(-1.25, 1.25)
ax.set_ylim(-1.25, 1.25)
ax.axis("off")
plt.tight_layout()
plt.savefig("sudut-radian.svg")Skrip berjalan penuh pada lingkungan tanpa layar karena matplotlib.use("Agg") memilih backend yang hanya menyimpan berkas tanpa membuka jendela. Hasilnya adalah berkas sudut-radian.svg, yaitu berkas yang sama dengan diagram yang telah ditampilkan sebelumnya. Komentar pada setiap kelompok baris menandai bagian yang digambar, sehingga skripnya mudah diubah untuk sudut atau warna yang berbeda. Pola semacam ini berlaku secara umum untuk menggambar bentuk geometri apa pun pada jalur ini.
Mencoba konversi secara interaktif#
Demo berikut mengulang konversi derajat ke radian pada sebuah kanvas. Geser penggesernya dari 0 sampai 360 derajat, kemudian amati tiga baris nilai di bawah kanvas, yaitu nilai radian, panjang busur pada lingkaran satuan, dan bagian dari satu putaran penuh. Dua nilai pertama selalu sama angkanya karena lingkaran satuan berjari-jari tepat satu, sehingga busurnya persis sepanjang sudutnya. Perubahan terkecil pada penggeser langsung memperbarui ketiganya.
Kode sumber demo
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="utf-8">
<title>Demo konversi derajat ke radian</title>
<style>
body { font-family: sans-serif; margin: 0; padding: 10px; color: #222; }
canvas { background: #fafafa; border: 1px solid #ddd; max-width: 100%; }
.kontrol { margin-top: 8px; }
.baris { margin-top: 4px; font-size: 14px; }
.nilai { display: inline-block; min-width: 130px; font-weight: bold; }
</style>
</head>
<body>
<canvas id="kanvas" width="460" height="280"></canvas>
<div class="kontrol">
<label for="sudut">Sudut: <span id="teksSudut">52</span>°</label>
<input type="range" id="sudut" min="0" max="360" value="52" style="width: 100%">
<div class="baris">Nilai radian: <span class="nilai" id="nilaiRadian"></span></div>
<div class="baris">Busur pada lingkaran satuan (r = 1): <span class="nilai" id="nilaiBusur"></span></div>
<div class="baris">Bagian dari satu putaran penuh: <span class="nilai" id="nilaiBagian"></span></div>
</div>
<script>
const kanvas = document.getElementById('kanvas');
const ctx = kanvas.getContext('2d');
const slider = document.getElementById('sudut');
const pusatX = 110, pusatY = 140, jari = 80;
function gambar() {
const derajat = Number(slider.value);
const radian = derajat * Math.PI / 180;
ctx.clearRect(0, 0, kanvas.width, kanvas.height);
// lingkaran penuh berwarna abu-abu
ctx.beginPath();
ctx.arc(pusatX, pusatY, jari, 0, 2 * Math.PI);
ctx.strokeStyle = '#999999';
ctx.lineWidth = 1.5;
ctx.stroke();
// busur merah dari sudut nol sampai sudut terpilih
ctx.beginPath();
ctx.arc(pusatX, pusatY, jari, 0, -radian, true);
ctx.strokeStyle = '#d62728';
ctx.lineWidth = 4;
ctx.stroke();
// dua jari-jari biru
ctx.beginPath();
ctx.moveTo(pusatX, pusatY);
ctx.lineTo(pusatX + jari, pusatY);
ctx.moveTo(pusatX, pusatY);
ctx.lineTo(pusatX + jari * Math.cos(radian), pusatY - jari * Math.sin(radian));
ctx.strokeStyle = '#1f77b4';
ctx.lineWidth = 2.2;
ctx.stroke();
document.getElementById('teksSudut').textContent = String(derajat);
document.getElementById('nilaiRadian').textContent = radian.toFixed(4) + ' rad';
document.getElementById('nilaiBusur').textContent = radian.toFixed(4) + ' kali jari-jari';
document.getElementById('nilaiBagian').textContent = (derajat / 360).toFixed(4) + ' putaran';
}
slider.addEventListener('input', gambar);
gambar();
</script>
</body>
</html>Pada kode sumbernya, konversi dikerjakan oleh satu ekspresi derajat * Math.PI / 180 yang sesuai dengan rumus pada bagian sebelumnya. Kanvas menggambar busur merah dari sudut nol sampai sudut terpilih, sedangkan dua jari-jari biru menandai batas sudutnya. Sumbu vertikal kanvas menghadap ke bawah, sehingga sudut positif digambar melalui argumen sudut negatif pada fungsi arc agar arahnya tetap menghadap ke atas.
Di mana hal ini ditemui dalam kode#
Konstanta dan fungsi trigonometri NumPy adalah titik temu paling sering antara topik ini dan pekerjaan pemrograman sehari-hari. Fungsi np.sin dan np.cos menganggap argumennya radian, sedangkan data sudut dari berkas konfigurasi atau masukan pengguna sering berbentuk derajat. Konversi yang terlewat tidak memicu error apa pun karena derajat tetap merupakan angka yang sah. Perbedaannya hanya muncul kemudian pada angka hasil yang keliru secara diam-diam.
import numpy as np
t = np.linspace(0.0, np.pi, 5)
print(np.sin(t))
print(np.sin(np.rad2deg(t)))[0.00000000e+00 7.07106781e-01 1.00000000e+00 7.07106781e-01
1.22464680e-16]
[ 0. 0.85090352 0.89399666 0.08836869 -0.80115264]Baris pertama berisi nilai sinus yang benar untuk sudut , , , , dan . Baris kedua mengalikan setiap sudut dengan terlebih dahulu, sehingga fungsi np.sin menerima derajat dan memperlakukannya sebagai radian. Nilai pada argumen kedua, yang seharusnya menghasilkan , justru terbaca sebagai radian dan menghasilkan .
Di luar NumPy, radian juga muncul pada rotasi grafika dan fase sinyal. Pustaka grafika umumnya menerima sudut rotasi dalam radian, sedangkan antarmuka yang menghadap pengguna sering menyediakan derajat lalu mengonversinya sebelum digunakan dalam perhitungan. Sinyal audio dan catatan sensor periodik menyatakan fasenya dalam radian pula, sehingga rumus seperti langsung ditulis tanpa konversi apa pun.
Ringkasan#
- Radian didefinisikan sebagai perbandingan panjang busur terhadap jari-jari, sehingga satu putaran penuh bernilai radian dan nilai sudutnya tidak bergantung pada besar lingkaran.
- Konversi dua arah menggunakan faktor , baik secara manual maupun melalui
np.deg2raddannp.rad2deg. - Panjang busur bekerja tanpa faktor koreksi karena radian diturunkan langsung dari geometri lingkaran.
np.sindannp.cosmenerima radian, sehingga argumen derajat wajib dikonversi terlebih dahulu agar hasilnya tidak keliru secara diam-diam.
Referensi#
- numpy.deg2rad — NumPy Developers — Dokumentasi fungsi konversi derajat ke radian yang digunakan pada skrip topik ini.
- Mathematical functions — NumPy Developers — Daftar fungsi matematika NumPy beserta catatan bahwa fungsi trigonometrinya menerima sudut dalam radian.
- Pyplot — Matplotlib
— Referensi fungsi
pyplotsepertisavefigyang digunakan pada skrip pembangkit diagram. - Algebra and Trigonometry 1e — OpenStax — Buku teks terbuka yang membahas sudut, radian, dan lingkaran pada bab trigonometrinya.