Eğitimler - Trigonometri

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 = Sinüs eşittir Karşı Kenar bölü Hipotenüs
  • CAH = Kosinüs eşittir Komşu Kenar bölü Hipotenüs
  • TOA = Tanjant eşittir Karşı Kenar bölü Komş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.

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):

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:

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, math.cos ve 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:

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,

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

Bunu burada görebiliriz:

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.

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:

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:

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ç:

VAY CANINA! ÇOK KULLANIŞLI! Radyal menüler, dairesel can barları, dairesel bir masa etrafına dizilmiş sandalyeler, 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, math.acos ve math.atan ya da math.atan2.

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

--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:

-- 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 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:

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.

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.

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!

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord