# Eğitimler - Trigonometri

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/Trigonometry
- **Çeviri tarihi:** 2025-09-08

## Trigonometri

Trigonometri, bir kodlamacının alet çantasında bulunması gereken gerçekten kullanışlı bir araçtır ve birçok kişi Sinüs ve Kosinüs'ü (ve Tanjant'ı) kavramakta zorlanır, bu yüzden işte size bunların kullanımına dair hızlandırılmış bir eğitim.

Trigonometri, `right triangles` (dik üçgenler) ve `circles` (çemberler) matematiğidir.

### SOH, CAH, TOA

Öncelikle, **SOH**, **CAH**, **TOA**'ya bir göz atalım:

- **SOH** = **S**inüs eşittir **K**arşı Kenar bölü **H**ipotenüs
- **CAH** = **K**osinüs eşittir **K**omşu Kenar bölü **H**ipotenüs
- **TOA** = **T**anjant eşittir **K**arşı Kenar bölü **K**omşu Kenar

Peki bu ne anlama geliyor?

Bir dik üçgenin **Hipotenüs**'ü, üç kenarın en uzun olanıdır. Her zaman dik açının karşısındadır. Diğer iki kenarın kendine özgü bir adı yoktur.

![](https://gmod.tr/api/uploads/wiki/181a7123dc3dbe248d4b.gif)

Dolayısıyla duruma göre, bir dik üçgen hakkında bilmemiz gereken her şeyi bulmak için bu üç denklemden birini kullanabiliriz. Tek ihtiyacımız olan, üç kenardan birinin uzunluğu ve dik olmayan iki açıdan birinin derecesidir. Şu şemaya bakın (ölçekli değildir):

![](https://gmod.tr/api/uploads/wiki/836d27667cc78c0ff19e.png)

Eğer bu kenarları `a` ve `b` ile, Hipotenüs'ü `c` ile ve bildiğimiz açıyı `ang` ile değiştirirsek, `b` kenarının uzunluğunu bulmak için bu denklemi kullanabiliriz. İşte bir Lua örneği:

```lua
local a = 8
local b -- b'yi bulacağız. Bu bizim "Karşı" kenarımız.
local c = 16
local ang = 30

ang = math.rad( ang ) -- Derecelerimizi radyanlara çeviriyoruz. Bu, Lua için bir gerekliliktir. Şimdilik bu konuda çok endişelenmeyin.

-- Unutmayın, Sinüs eşittir Karşı bölü Hipotenüs.
-- Yani, açının sinüsü, karşı kenarın uzunluğunun Hipotenüs'ün uzunluğuna bölünmesine eşittir.
-- math.sin( ang ) == b / c

-- İşte b için çözülmüş aynı denklem:
b = math.sin( ang ) * c

-- Lua, ang'nin sinüsünü şu şekilde hesaplayacaktır:
-- math.sin(  math.rad( 30 ) ) = .5

print( b == .5 * 16 )
--Çıktı olarak true verecektir.
```

İster inanın ister inanmayın, bu temel dik üçgen hesaplamalarının **O KADAR ÇOK KULLANIM ALANI VARDIR Kİ**. `2200` yıldan daha uzun bir süre önce, matematikçiler bu fonksiyonları Dünya'nın yarıçapını hesaplamak için kullandılar. Kelimenin tam anlamıyla her günün her saniyesinde GPS yazılımlarında kullanılır (nirengi (triangulation) terimi de buradan gelir). Polis tarafından bir telefon aramasının yerini tespit etmek için kullanılır. **SOH CAH TOA, Trigonometrinin temelidir**.

Üç trigonometrik fonksiyon şunlardır: [math.sin](https://gmod.tr/wiki/math.sin), [math.cos](https://gmod.tr/wiki/math.cos) ve [math.tan](https://gmod.tr/wiki/math.tan).

### Birim Çember

Sinüs ve Kosinüs'ün kökenlerini araştırdığımızda, bir çemberin temel özellikleri hakkında bir iki şey öğrenebiliriz. Aşağıdakini göz önünde bulundurun:

![](https://gmod.tr/api/uploads/wiki/f3582283e595fcb0f3a6.png)

Yarıçapı 1 olan bir çemberimiz var. Bu çemberde, çemberin sağ yatay ekseninden 30 derece (saat yönünün tersine, her zaman saat yönünün tersine) eğimli bir yarıçap çizgimiz var. Bu bir yarıçap çizgisi olduğu için uzunluğu, bu durumda 1 olan çemberin yarıçapına eşittir.

Peki b'nin uzunluğu nedir? SOH'u hatırlarsak, **Sin( ang ) = Karşı / Hipotenüs** olduğunu görürüz. Değerlerimizi yerine koyalım ve Sin( 30 ) = b / 1. Herhangi bir sayının 1'e bölünmesinin kendisine eşit olduğunu göz önünde bulundurarak şu sonuca varabiliriz:

Yarıçapı 1 olan bir çemberde, çember üzerindeki bir noktanın çemberin merkezine göre **Y-değeri**, açının **sinüs**üne eşittir. Yarıçapı 1 olan bir çemberde, çember üzerindeki bir noktanın çemberin merkezine göre **X-değeri**, açının **kosinüs**üne eşittir.

Yani,

```lua
y = math.sin( ang )
x = math.cos( ang )
```

Bunu burada görebiliriz: ![](https://gmod.tr/api/uploads/wiki/435c90f122c512912a99.gif)

Ancak tüm çemberlerin yarıçapı 1 değildir. Yarıçapı 1'den büyük bir çemberimiz olduğunda, sadece çarpma işlemi yaparız.

```lua
y = math.sin( ang ) * radius
x = math.cos( ang ) * radius
```

Ayrıca, çemberimizin (0,0) noktasında merkezlendiğini varsayıyorduk. Eğer çemberimizin merkezi (100,453) ise, toplama yaparız. İşte tam formülümüz:

```lua
y = math.sin( ang ) * radius + originY
x = math.cos( ang ) * radius + originX
```

Bu, GLua'da çemberler çizmek, propları dairesel şekilde düzenlemek ve temel olarak diğer tüm çember tabanlı kodlar için kullanışlıdır. İşte kareler çizen bir örnek:

```lua
function PointOnCircle( ang, radius, offX, offY )
	ang =  math.rad( ang )
	local x = math.cos( ang ) * radius + offX
	local y = math.sin( ang ) * radius + offY
	return x, y
end

local numSquares = 36 --Kaç tane kare çizmek istiyoruz?
local interval = 360 / numSquares
local centerX, centerY = 200, 500
local radius = 120

hook.Add("HUDPaint","Draw a circle of boxes!", function()

	for degrees = 1, 360, interval do --1'den başla, 360'a git ve eşit aralıklarla ilerle.

		local x, y = PointOnCircle( degrees, radius, centerX, centerY )

		draw.RoundedBox( 4, x, y, 30, 30, Color(255,255,0) )

	end

end)
```

Sonuç:

![](https://gmod.tr/api/uploads/wiki/026a39474e1f7be34ec2.png)

VAY CANINA! ÇOK KULLANIŞLI! Radyal menüler, dairesel can barları, [dairesel bir masa etrafına dizilmiş sandalyeler](http://steamcommunity.com/sharedfiles/filedetails/?id=382065862), elipsler, ses dalgaları ve `DAHA BİRÇOK ŞEY` Trigonometri ile mümkündür.

### Ters Fonksiyonlar

Bir Trigonometrik fonksiyonun ters fonksiyonuna ark-fonksiyonu denir.

Üç ters trigonometrik fonksiyon şunlardır: [math.asin](https://gmod.tr/wiki/math.asin), [math.acos](https://gmod.tr/wiki/math.acos) ve [math.atan](https://gmod.tr/wiki/math.atan) ya da [math.atan2](https://gmod.tr/wiki/math.atan2).

Ark fonksiyonları şu şekilde çalışır:

```lua
--Aşağıdaki iki denklem eşdeğerdir:
sin( a ) = b / c
a = arcsin( b / c )

--Aşağıdaki iki denklem eşdeğerdir:
cos( a ) = b / c
a = arccos( b / c )
```

Bunlar, ters matematik yapmak için kullanışlıdır, örneğin:

```lua
-- A ve B'nin uzunluğunu biliyoruz ve B'ye komşu olan THETA açısını bulmak istiyoruz
local A = 2
local B = 4
-- sin( ang ) == A / B
-- ang == arcsin( A / B )
local ang = math.asin( A / B )
print(ang) -- Çıktısı 30'dur; sin( 30 ) == .5 == 2/4 == A/B
```

Bu fonksiyonlar, söz konusu bilinmeyen değişkenin açınız olduğu durumlarda kullanışlıdır. Programlama için [math.atan2](https://gmod.tr/wiki/math.atan2) adında özel bir Ark-Tanjant fonksiyonu vardır.

tan(ang) fonksiyonunu bir doğrunun eğimini - dikeyin yataya oranını (rise over run) - verdiğini düşünün. Yani:

```lua
tan( ang ) = y / x
ang = atan( y / x )
```

Ancak, y/x işlemi yapılırken, 3/4'ü hesaplamak -3/-4'ü hesaplamakla aynı sonucu verir. Benzer şekilde -3/4, 3/-4 ile aynı sonucu verir. Bu yüzden, işaretleri ayrı ayrı doğru bir şekilde işleyen ve sıfıra bölme/sonsuzluk hatasını önleyen atan2(y,x) fonksiyonuna sahibiz.

```lua
ang = atan2( y, x )
```

atan2'nin kullanımı, `y` = `mx` + `b` denklemindeki gibi `m` eğimine sahip bir doğrunun açısını almaktır.

![](https://gmod.tr/api/uploads/wiki/ff98e4c113f8ef8a7128.png)

### Sonuç

Herhangi bir dairesel yapı oluşturmak ve dik üçgenlerle matematik yapmak için trigonometri gereklidir. Ayrıca, eğimi verilen bir doğrunun açısını bulmak için de kullanışlıdır.

Umarım burada `useful` bir şeyler öğrenmişsinizdir!

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/Trigonometry
