Düzgün olmayan rasyonel B-spline (NURBS) Temelleri


9

NURBS eğrilerini (daha sonra yüzeyler!) Anlamaya çalışıyorum ama iç işleyişinin temellerini anlamakta zorlanıyorum. Birisi bana birkaç şeyi açıklayabilir mi? Bezier eğrilerinden geldiğim için, bu ikisi arasında bir karşılaştırma özellikle yararlı olacaktır.

  1. "Rasyonel temeli fonksiyonu" (rasyonel) Bezier eğrisinin Bernstein polinomun gibi bir nebze görünüyor. Parametre ude 0'dan 1'e mi gidiyor?

  2. Bir eğriye "ayrıntı nasıl eklenir?" Yani, Beziers ile daha karmaşık bir şekli tanımlamam gerekirse, birkaç Bezier'i birlikte "dikerdim". Veya daha az sıklıkla, dereceyi artırın. NURBS derecesini de arttırabildiğimi ve birkaç NURBS eğrisini yan yana koyabileceğimi anlıyorum, ancak bu nasıl yapılmalı?

  3. Wikipedia makalesi, en azından benim için, bu "düğüm vektörü" hakkında çok net görünmüyor. Zaten nedir?


Bu bir soru için biraz fazla şey. Konuyla ilgili tanıtım dersimi birkaç saat içinde kaynatabilirim. De casteljanu ve de boor algoritmasının kullanımıyla ilgili ayrıntılar biraz fazla zaman alacaktı.
joojaa

1
Bu yüzden 3, 5 ve muhtemelen 6 soruları cevaplamak ve daha fazla yemek büyüklüğünde anlama yapmak için ayrı sorular olarak bölünmüş görmek istiyorum.
joojaa

@joojaa Elbette, soruyu bölebilirim, sadece bir saniye ...
Ecir Hana

1
Böylece soru 3 , 5 ve 6 ayrı sorulara ayrıldı.
Ecir Hana

Yanıtlar:


7

B-Spline'lar ve Beziers aşağı yukarı aynı şeyin paralel icatlarıdır. Beziers teğet uydurma fikrinden başlamaya çalıştığı yer. B-Spline'lar temel fonksiyonlar fikri ile başlar. NURB Spline'lar (ya da aslında rasyonel kısım) sadece B-Spline'ların genellemesidir, böylece mühendislikle özel ilgi duydukları için doğru konik bölümleri * tanımlayabilirsiniz.

Önce basit bir NURB Spline terminolojisi ile başlayalım. Bu eğrilerin mantığı Beziers için olandan biraz farklıdır. İlk olarak bir açıklık kavramı var. Bir aralık kabaca tüm Bezier spline'a eşit olacaktır, ancak nurbs'ta herhangi bir sayıda açıklığa sahip olabilirsiniz.

resim açıklamasını buraya girin

Resim 1 : Bir kübik NURBS açıklığı. Bu formülasyonda biraz atipik

Her aralık eğri derecesi + 1 kontrol noktası ** tarafından oluşturulur. Her eğri herhangi bir sayıda noktadan oluşabilir. Her ardışık aralık, bir noktayı düşürüp listede bir puan daha alarak önceki açıklıktaki noktaları yeniden kullanır. Bu nedenle, daha karmaşık eğriler yapmak, eğriye daha fazla nokta eklemek kadar kolaydır.

NOT : Görüntü eğrileri biraz atipik olarak parametrelendirilmiştir, bir sonraki bölümde bunun ne anlama geldiğini açıklayamayız. Düğüm kavramını aldığımda. Bu, eğrilerin nasıl yapıştırıldığını açıklamanın daha kolay bir yoludur.

resim açıklamasını buraya girin

Resim 2 : 2 küp birbiri ardına yayılır, her açıklık 4 nokta kullanır. birlikte bir eğri oluştururlar. En çok puanı birbirleriyle paylaşırlar.

Şimdiye kadar muhtemelen karmaşıklık ekleme ile ilgili 2 soruyu cevapladık. Ancak, bu şemanın bezier eğrisinden daha iyi süreklilik sağladığını eklemek isterim. Ayrıca, gövde döngüsünü oluşturan nokta dizisini yapabilirsiniz. Kapalı bir eğri oluşturma.

resim açıklamasını buraya girin

Resim 3 : Kapalı bir kübik NURBS yüzeyi, noktaları kadar açıklığa sahiptir. Her renk bir açıklıktır.

Parametreler

Bu noktaya kadar, açıklıkların birbirine bağlanmasının Bezier eğrilerini "dikmek" gibi bir numara olduğunu söyleyebiliriz. Ama bir fark var. Eğri uzunluğu boyunca parametrelenir. Böylece eğriler ayrı değildir, Beziers gibi her açıklıkta 0 ila 1 formunu enterpolasyon etmezler. Bunun yerine, altta yatan eğri cusomizable bir parametre aralığına sahiptir. Parametre düğüm adı verilen bir şeyde saklanır ve her düğüm dizide rastgele artan bir değere sahip olabilir. Böylece u eğrilerinin tamamını 0 - 1 veya 0 ila 12 arasında parametrelendirebilirsiniz. Parametrelemenin aynı zamanda tekdüze olması da gerekmez.

Bu parametrelendirme eğrinin şeklini değiştirir. Bu neden faydalı olabilir? Biri için eğri boyunca gerginliği ayarlayabilirsiniz. Veya eğrinin uzunluğunu U parametresine kodlayabilirsiniz. Bir tuhaf kullanım, NURBS eğrisinin tamamen veya sadece kısmen Bezier eğrisi gibi hareket etmesini sağlamaktır (örneğin uçlarda olduğu gibi bezier ancak ortada değil).

resim açıklamasını buraya girin

Resim 4 : Aynı nokta farklı düğüm dizileri. Yeşil NURBS eğrisi, 0-1 yerine 0-2 parametre aralığına sahip bir Bezier eğrisine karşılık gelir

Peki düğümler ne? Bunlar basitçe temel fonksiyonların aralıklarıdır. 4 noktalı kübik b-spline 4 enterpolasyon fonksiyonuna sahip olduğundan 8 knot'a ihtiyaç duyar. Yalnızca 3 işlevin üst üste geldiği ve 1,0'a kadar topladığı alanlar çizgi çizilebilir.

resim açıklamasını buraya girin

Resim 5 : 2 farklı temel fonksiyon, bir bezier benzeri ve düzgün bir segment parametresi, 0-1 aralığına yayıldı.

Ve şimdi çoğunlukla soru 1'in cevabını açıkladık. Aralık tanımlanmamış olarak gördüğünüz gibi temel fonksiyonları genişletebilirsiniz. Ve son olarak düğüm vektörü basitçe temel fonksiyonlar için parametre aralıkları üretir. Halen eğrinin şeklini yöneten bir şey daha var ve bu ağırlık vektörü. Ama bu başka bir yerde anlatılacak başka bir hikaye.


* Bu durumda bu rasyonel, bir NURBS eğrisinin polinom olması gerekmediği anlamına gelir, çünkü polinomları olan bir daireyi tanımlayamazsınız.

** Başka tür noktalar tanımlanabilir.


(*) ile ilgili olarak, Bezier eğrileri aynı soruna sahiptir. Sorun, eğrilerin (her iki durumda da) x = f (t), y = f (t) olarak tanımlanmasıdır. Ancak, t yerine x kullanarak tek değişkenli / açık / 1 boyutlu bir eğri de (yine her iki durumda da) y = f (x) olarak tanımlayabilirsiniz. Rasyonel eğriler durumunda, konik bölümleri temsil etmek yerine, sinüs ve kosinüsü (ve elbette daha fazlasını) temsil edebilirsiniz. NURBS / b-spline'lar bu bakımdan özel değildir.
Alan Wolfe

Ben uzunluk hesaplamaları (! İyi bilgi size sadece Sayın verdi) sizin açıklama sığacak gerekiyordu nasıl uzunluğu hakkında sizin beyanı (? Yalnızca doğrusal fonksiyonları ile çalışır) yanlış olduğunu düşünüyorum ve emin
Alan Wolfe

@AlanWolfe yine de silindi
joojaa

En muhteşem! Çok teşekkürler, çok iyi bir açıklama!
Ecir Hana

Yazım hatası belki? "Bunun yerine, alttaki yüzey özelleştirilebilir bir parametre aralığına sahiptir. Parametre düğüm adı verilen bir şeyde saklanır ve her düğüm bir sonraki değerden daha büyük olan rastgele bir değere sahip olabilir." -> "Yerine yatan eğri özelleştirilebilir parametre yelpazesine sahiptir parametresi bir düğüm denilen şey saklanır ve her düğüm daha büyük bir keyfi değere sahip olabilir. Bir önceki ." Btw., "UV aralığı" ile ne demek istediğinizi açıklar mısınız? "UV" 2D anlamına gelir ..?
Ecir Hana
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.