Küresel sarmala duyulan merakla yapılmış bir görselleştirme
(visualrambling.space)- 3D uzayda nesne hareketini parametrik fonksiyonlarla ifade etme yöntemine dair kavramsal bir giriş
- Daire, sarmal ve küresel sarmal yoluna kadar giderek daha karmaşık yolların matematiksel olarak nasıl oluşturulduğunun açıklanması
- Her koordinat ekseninin (x, y, z) zamanın bir fonksiyonu olarak tanımlanmasıyla çeşitli hareketlerin uygulanabilmesi
- Özellikle küresel sarmal için, yarıçap değişimi veren trigonometrik fonksiyonların çarpımıyla 3 boyutlu bir sarmal yolun oluşturulması
- Bu yaklaşımın, bir nesnenin rastgele bir yolda hareket ettirilebileceğini gösteren yaratıcı bir örnek sunması
3D uzayda nesne hareketini keşfetmek
Bu yazı, 3D uzayda bir nesneyi hareket ettirmenin farklı yollarına ve özellikle küresel sarmal (spherical helix) yolunun matematiksel olarak nasıl tanımlanıp uygulanabileceğine dair kişisel bir keşif çalışmasının sonucu.
Heliks ve 3 boyutlu hareketin temelleri
-
Heliks, yay gibi dönerek sarılan 3 boyutlu bir yapıyı ifade eder
-
Küresel sarmal, bir kürenin yüzeyi boyunca sarmal biçimde dönme kavramıdır
-
3D uzayda bir nesnenin konumu, x, y, z olmak üzere 3 eksenin koordinatlarıyla belirlenir
- x ekseni: sağa-sola hareketi yönetir
- y ekseni: yukarı-aşağı harekete karşılık gelir
- z ekseni: ileri-geri (derinlik) yönündeki değişimi ifade eder
-
Bir nesnenin konumunu zamana (t) göre matematiksel fonksiyonlarla tanımlarsanız, bir hareket yolu oluşturabilirsiniz
Parametrik fonksiyonlar ve basit yol örnekleri
-
Örnek: x konumunu
10 * cos(πt/2)olarak tanımlarsanız, bu 2 saniyede bir -10 ile 10 arasında gidip gelen bir kosinüs dalga hareketi olur -
Aynı şekilde y konumunu
10 * cos(πt/2)olarak belirlemek, dikey yönde gidip gelmeyi de mümkün kılar -
x ve y için farklı fonksiyonlar kullanırsanız (ör. x =
10 * cos(πt/2), y =10 * sin(πt/2)), fazları farklı iki hareket elde edilir ve bunları birleştirince dairesel bir yol oluşur -
Fonksiyona zamanla orantılı bir terim çarparsanız (ör. x =
0.03 * t * cos(πt/2)), yarıçapı giderek büyüyen bir desen, yani bir sarmal (spiral) yol oluşturabilirsiniz
Küresel sarmal (spherical helix) yolu oluşturmak
-
Düzlemdeki klasik sarmaldan farklı olarak küresel sarmal, 3 boyutlu bir yol gerektirir
- z değerinde
10 * cos(0.02 * πt)gibi bir ifade kullanarak ileri-geri konumu kademeli biçimde değiştirebilirsiniz
- z değerinde
-
x ve y için
sin(0.02 * πt)gibi trigonometrik fonksiyon çarpımları kullanarak, yarıçapın ortada en büyük, iki uçta ise daha küçük olduğu bir etki oluşturulabilir -
Hem x hem de y'ye bu çarpımlar uygulandığında, dairesel hareket yaparken kürenin yüzeyi boyunca (yani 3 boyutlu olarak) sarmal bir yol izleyen bir hareket üretmek mümkün olur
-
Bu tür fonksiyon kombinasyonlarıyla küresel sarmal yolunun matematiksel uygulaması tamamlanır
Özet ve kullanım alanları
- Tüm 3D yollar, x, y ve z'nin her birini zamanın parametrik fonksiyonları olarak tanımlayarak oluşturulabilir
- Bu, basit daire ve sarmaldan karmaşık yollara kadar her şeyin matematiksel olarak belirtilebileceği anlamına gelir
- Bu yaklaşım sayesinde karmaşık hareketlerin de aslında kaotik değil, açıkça tanımlanmış matematiksel yollar olduğu görsel olarak anlaşılabilir
visualrambling.space, Damar'ın çeşitli konuları öğrenip görsel olarak anlattığı kişisel bir projedir
1 yorum
Hacker News görüşü
Eski deniz seferlerinde bu tür eğriler (rhumb line, loxodrome) çok önemliydi
çünkü seyir sırasında aynı kerterizi korumak çok daha kolaydı
bu yüzden denizciler mümkün olduğunca bu tür rotaları izlemeye çalışırdı
"rhumb line" kavramı da buradan gelir
Bkz. Rhumb line Wikipedia
Mercator haritası bu tür kerterizlerin hesaplanmasını daha kolay hâle getirdi
Bkz. Mercator projection Wikipedia
bu kurulumun kendisi de sürekli yeni matematiksel keşifler doğurdu
örneğin kutupsal izdüşümde bakıldığında logaritmik sarmal olur
yandan bakıldığında ise bir wave packet olur
matematiksel ilginçliği yüzünden Paul Erdos bile buna kafa yormuştur
İlgili makale: Spiraling the Earth with C. G. J. Jacobi. Paul Erdös
küçük bir not olarak, bugün Hacker News'te küresel geometriyle ilgili epey fazla gönderi var gibi görünüyor
İlgili tartışma bağlantıları:
1
2
3
eğri yüzey üzerinde eşit aralıklı bir biçime sahipken rhumb line, tanım gereği meridyenleri her zaman aynı açıyla kestiği için kutuplara yaklaştıkça çizgiler daha sıklaşır
Denklem olarak da,
x = 10 · cos(π·t/2) · sin(0.02·π·t)
y = 10 · sin(π·t/2) · sin(0.02·π·t)
z = 10 · cos(0.02·π·t)
bunu küresel koordinatlara (R=10) çevirirsek,
λ(t) = π/2 · t (longitude)
φ(t) = π/2 - 0.02·π·t (latitude)
türev alındığında d(λ)/d(φ) = -25 (sabit değer)
gerçek bir rhumb line'da ise d(λ)/d(φ), tan(α) · sec(φ) biçimindedir ve enleme göre değişir
yani bu eğri bir rhumb line değil
kesişme açısı değişen bir eğriyi merak ediyorsanız bu görselleştirme bağlantısına bakmanızı öneririm
Bu bana ilham verdi ve 2022'de yaptığım eğlenceli bir küre projesini paylaşmak istedim
spheredisksample projesi
bugünkü trendle tam uyumlu bir proje olduğunu düşünüyorum
insanların hoşuna gidebilecek sphere-resample projesini de ayrıca öneririm
Rhumb line ve benzeri konuların tartışıldığı bu gönderiye bakmayı da unutmayın
Görselleştirmenin gerçekten harika olduğunu düşünüyorum
bir de merak ettiğim şey, "sabit hızla hareket edebilir mi?" kısmıydı
amacınız yalnızca yol boyunca noktalar yerleştirmekse sorun değil, ama gerçekten hareket ettiğini izlerseniz başlangıçta ve sonda çok daha yavaş ilerlediğini görürsünüz (neredeyse tamamen yarıçapa bağlı)
eğer sabit hızla hareket etmesini, hatta yavaşlayıp hızlanmayı sağlayan bir easing fonksiyonu uygulanmasını isteseydik bunun nasıl yapılacağını merak ediyorum
muhtemelen matematiksel olarak şık bir numarası vardır
denklemi türevleyip bir hız fonksiyonu çıkararak, ardından dx, dy, dz'yi Pisagor üzerinden ele alıp, hız fonksiyonunun tersini kullanarak t' cinsinden yeniden parametrelemek gerekir diye kabaca düşünüyorum
ama bu konuda matematiğe yeterince hâkim olmadığım için biraz yüksek sesle düşünüyormuşum gibi geliyor
Sabit hızla ilerlemek için "Öklidyen parametreleme" gerekir
yani t değeri, alınan Öklidyen mesafeyle orantılı olacak şekilde ayarlanmalıdır
animasyonda bir yol boyunca hareket ederken her zaman gereken bir kavramdır
ama çoğu durumda kapalı form çözüm yoktur, bu yüzden sayısal olarak çözmek gerekir
pratikte her t için istenen mesafeye (ds) karşılık gelen dt, ikili arama ya da interpolation search gibi yöntemlerle bulunur
böylece sonuçlar saklanır ve eşit aralıklı noktalardan oluşan bir polyline üretmek için kullanılır; en azından eğri zamanla değişmiyorsa bu yaklaşım pratiktir
Soruda sözü edilen matematiksel numara tam olarak "yay uzunluğu parametrelemesi"dir
eğrinin yay uzunluğu fonksiyonunun ters fonksiyonuyla bileşim alınır
birkaç özel eğri ailesi dışında bunun kapalı formu yoktur, bu yüzden hesaplamalı yaklaşım gerekir
t'yi daha yavaş ilerletme yönündeki sezginiz doğru
çünkü t'ye göre açısal hız korunurken yarıçap da t'ye göre değişir
bu bir bakıma Archimedean spiral fikridir
hızın büyüklüğünü sabit yapacak şekilde parametreleme daha düzgün bir hareket sağlar
ancak yarıçap 0'dan başladığı için bir şekilde limit değeri ele almak gerekir
oyun gibi uygulamalarda bir yol izlenecekse, Z eksenine göre yolu ve teğeti hedefleyip, hız kısıtını yinelemeli olarak uygulayarak onu bir bead toy gibi sürüklemek de pratik bir sadeleştirme olabilir
"...aslında kaotik bir şey değil. Sadece matematiksel bir fonksiyonla tanımlanan bir yol" kısmıyla ilgili olarak,
verilen fonksiyonun gerçekten kaotik davranış gösterip göstermediğini bilmiyorum, ama kaos kavramının kendisi doğası gereği belirlenimci matematiksel fonksiyonlarda ortaya çıkan bir olgudur; yani başlangıç koşullarına aşırı duyarlılık
sanırım yazar "random" ya da "non-deterministic" yerine "chaotic" kelimesini seçmiş
Böyle teknik düzeltmelerin çok önemli olduğunu düşünüyorum
Hacker News okurları için, ya da öyle olması gerekiyorsa, bu tür ayrımlar ilginçtir
matematikte kaos, başlangıç koşullarına aşırı duyarlı belirlenimci bir sistemdir
sonuçlar rastgele gibi görünse de kavramsal olarak randomness ile tamamen farklıdır
Kaos teriminin belirlenimci matematiksel fonksiyonlarda ortaya çıkan bir özellik olduğu konusunda hemfikirim
ama günlük sözlük anlamında "tam düzensizlik ve karmaşa", "tesadüfün egemen olduğu durum", "karmaşık doğal sistemlerin öngörülemezliği" gibi anlamlar da taşır
gündelik okurun beklentilerine ve dil alışkanlıklarına uymak için, matematiksel katılığı biraz gevşetip daha anlaşılır bir dille anlatmanın da anlamlı olduğunu düşünüyorum
Bir geri bildirim olarak, mobilde gezinme biçimi beklediğim gibi değildi
nasıl kullanılacağını anlayamadığım için önce kaydırmayı denedim
ekrana dokununca bir sonraki sayfaya geçti, ben de "ha, demek böyle" diye düşündüm
sağa dokununca sonraki sayfaya gidince, daha sonra bir kez daha tıklayıp bu kez sola dokunarak geri gitmeye çalıştım ama bunun yerine iki sayfa birden atlamış oldum
bu yüzden bazı ekranları kaçırdım ve biraz hayal kırıklığı yaşadım
büyük bir sorun değil ama küçük bir yönlendirme olsaydı kafa karışıklığı azalır, ben de daha iyi odaklanabilirdim
yama ek olarak swipe hareketi de eklenebilir bence (ben şahsen tap etkileşimini tercih ediyorum)
sosyal medya uygulamalarındaki "card stack" arayüzüne benzetilmek isteniyorsa swipe da doğal durur
İçerik temel seviyede olduğu için çocukların matematik öğrenirken bakması açısından iyi görünüyor
ara ara çember denklemi (
x = r cos t, y = r sin t) gibi matematik kavramlarından da bahsedilse daha iyi olurduileri taşımak için uygun ek konular arasında kutupsal koordinatlar ve lineer cebir (vektörler, dönüşümler, 3D uzayda dönüşümler vb.) var
yazar bu konulara çok hâkim değilse 3blue1brown YouTube videolarını öneririm
programcı gözüyle bakınca kodlama, kütüphaneler ya da gerçek 3D nesnelerle (vertex'ler, deformasyonlar vb.) çalışma kısmı eksik kalmış; onlara da girilse daha da iyi olurdu
Küresel heliste z ekseni boyunca ilerlemenin ne kadar "doğru" olduğu kafama takıldı
z = c * tgibi birçok fonksiyonla basit bir ilerleme yapılabilir ve bu, "kabukların" kalınlığını, tutarlılığını, düzgünlüğünü vb. değiştirirburada kullanılan fonksiyon görsel olarak hoş duruyor ama sarmallar arası sabit mesafe ya da yüzeyin eşit bölünmesi gibi açılardan hedefin nasıl tanımlanması gerektiğini merak ediyorum
bu fonksiyonun nasıl seçildiğini, yoksa sadece güzel göründüğü için mi kullanıldığını merak ediyorum
Bence bu fonksiyon, programlaması kolay ve göze hoş geldiği için seçilmiş
gerçekten "doğru" yöntem muhtemelen noktanın 3B uzayda sabit hızla hareket etmesi olurdu; örneğin gerçek Dünya üzerinde ilerleyen bir gemi gibi
O durumda denklem şöyle olurdu (kod örneğine bakın):
const degrees = Math.PI / 180
const bearing = 5 * degrees
const k = Math.tan(bearing)
const v = 0.001
const phi = (t) => vt/Math.sqrt(1 + kk)
const theta = (t) => k*Math.ln(Math.tan(phi(t)/2))
x, y, z koordinatlarına dönüşüm
const x = (t) => Math.sin(phi(t)) * Math.cos(theta(t))
const y = (t) => Math.sin(phi(t)) * Math.sin(theta(t))
const z = (t) => Math.cos(phi(t))
uygulamada
tan(phi/2)'nin logaritmasını kullanmak gerekir ve bu form diferansiyel denklemin çözümünden gelirsanırım yazar
ln(tan(phi/2))gibi bu kadar karmaşık bir yönteme gitmemişAsıl mesele yol üzerindeki hızın sabit olmasıdır
türevi buna göre ayarlayıp hızı sabit yaptıktan sonra z için çözebilir ya da t' üzerinden yeniden parametreleme yapılabilir
z = c * tseçimi hem yolun parametrelemesini hem de gerçek yörüngeyi birlikte belirlerAnimasyonun çok akıcı olması etkileyici
yakın zamanda küre üzerinde N noktayı dağıtma problemiyle uğraşmam gerekti ve bu sırada "fibonacci-sphere" diye basit bir algoritma keşfettim
bu yöntem de küre üzerinde bir sarmal oluşturarak noktaları yerleştirmek için kullanılıyor
İlgili makale: fibonacci-sphere makalesi PDF
Acko.net'ten henüz bahsedilmemiş olmasına şaşırdım
benzer araçlarla karmaşık sayıları ve fraktalları, özellikle de Julia fractal'ı görsel olarak açıklayan harika bir blog yazısı var
ilgilenen herkesin okumasını tavsiye ederim
How to fold a julia fractal - Acko.net blogu
Bu eğrinin denklemleriyle 3D Desmos'ta doğrudan oynayabilirsiniz Desmos 3D görselleştirme bağlantısı
bu sarmalın parametrik denkleminin küresel koordinat sisteminde lineer olması da ilginç
Bkz. koordinat dönüşümleri Wikipedia
Paylaştığınız için teşekkürler, gerçekten çok ilginçti