5 puan yazan GN⁺ 2025-08-21 | 1 yorum | WhatsApp'ta paylaş
  • 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
  • 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

 
GN⁺ 2025-08-21
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

    • Ama OP'deki sarmal eğri bir rhumb line (loxodrome, rhumb line) değil
      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

    • İlk slaytta kullanım talimatı var
      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 olurdu
    ileri 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 * t gibi 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ştirir
    burada 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 gelir
      sanı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 * t seçimi hem yolun parametrelemesini hem de gerçek yörüngeyi birlikte belirler

  • Animasyonun ç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