2016-04-13 58 views
1

Java'da 4 denetim noktası tarafından tanımlanan bir CubicCurve var. Ortaya çıkan şekli çizebilirim, ancak bu şeklin belirli bir çözünürlüğünde her noktayı verimli bir şekilde nasıl alabilirim? Bu arada PathIterator "sadece" kontrol noktalarını döndürür, ancak eğrinin kendi noktalarını döndürmez.Eğri noktaları nasıl oluşturulur (Şekil)

+0

eğri noktalarının dizisine sahip olmak sebebi nedir? Genel görevlerin çoğu için (noktanın eğride olup olmadığını saptamak, çizgi ile kesişme noktası bulmak, eğri üzerinde canlandırmak için) genellikle bir formül vardır. –

+0

Benim durumumda, bu eğriye dayanarak bir gama düzeltmesi uygulamak için eğri verisini kullanmak istiyorum. Bu yüzden mümkün olduğunca çok ayrı noktaya ihtiyacım var. – Thomas

+0

Yani burada gerçekten noktalara ihtiyacınız yok ama transfer fonksiyonu 'newBrightness = f (oldBrightness)'. –

cevap

0

2D parametrik kübik eğriler sadece iki polinomları sen tüm noktaları size almak gerekir olarak t=<0.0,1.0> böylece kontrol noktalarından a?0...a?3 katsayıları gibi küçük bir adımla sonra sadece döngü t hesaplamak

x(t)=ax0+ax1*t+ax2*t*t+ax3*t*t*t 
y(t)=ay0+ay1*t+ay2*t*t+ay3*t*t*t 

Örneğin, n'un nokta sayısı olan dt=1.0/(n-1)'a gereksinimi vardır.

katsayıları BEZIER/SPLINE veya interpolasyon See için kullanılan eğri bağlıdır:

+0

Formülde kullandığınız katsayılar, Java'daki CubicCurve ile aynı değil: https://docs.oracle.com/javase/7/docs/api/java/awt/geom/ CubicCurve2D.html # constructor_summary – Thomas

+0

@Thomas Daha sonra sahip olduklarınızı kullanın ... Eğer katsayıları şekilden ayıklayabilirseniz, bunları hesaplamanız gerekmez. Polinom denklemleri x (t), y (t) 'aynı olacaktır. Değişebilen tek şey, 't' aralığıdır. – Spektre