2008-10-24 18 views
11

arasındaki kesişme noktası b-spline ve düz bir çizgi arasındaki kesişimi hesaplamanın bir yolunu bulmaya çalışıyorum. Şimdiye kadar Google çok fazla yardım etmedi.Bir spline ve bir satır

cevap

6

En iyi yaklaşımınız, spline'ınızı tek tek satır segmentlerine ayırmak ve her satır parçasını hat ile kesişim açısından test etmek olabilir. spline birden fazla noktada çizgiyi kesiştiği olabilir, bu nedenle de ilgilendiğiniz karar vermek gerekecek

+0

Katılıyorum, genellikle önerilen yöntem budur. Eğer yinelemeli olarak yaparsanız, istenen çözünürlüğü elde edene kadar bir kesişme noktasını bulduğunuz çizgi parçalarını hassaslaştırırsanız, genellikle daha verimli olur. – Kena

7

Saf matematiksel yaklaşım:.

  • spline ve böylece çizgiyi Transform satırın X ekseninde olduğunu.
  • Y = 0 (spline'ın sırasına göre değişir) üzerindeki splinedaki noktaları hesaplayın.
  • Bu noktaları özgün koordinat sisteminize geri dönüştürün.

Bu şekilde gidiyorsanız, gerekli formülleri çalıştırabilirim.

+0

Yaklaşımdan hoşlanıyorum, ama spline'ın Y = 0 olduğu zaman nasıl çözersin? Spline segmentlerini değerlendirmek ve yaklaşmaya çalışmaktan başka bir yolu var mı? – Herms

+0

Spline sırasına bağlı olarak, spline denklemlerinde (en azından kübik spline kadar) mevcut çözümler vardır. Formüller gerçekten garip olma eğilimindedir ve sayısal hatalarda düşük olmaları garanti edilmez. Dediğim gibi: saf bir matematiksel yaklaşım. –

7

Duyduğum en verimli algoritma Bezier kırpma adı verilir.

İşte bir book chapter on curve and spline intersection (pdf).

+1

Bezier ve B Spline fonksiyonları için polinom kökü bulması kolay olduğundan, özellikle bu konudaki bir çözümü, özellikle bölüm 7.3'e bakarak başardım. –

İlgili konular