Tahminleriniz doğrudur. Simetriyi kontrol etmek mükemmel bir fikirdir: (Gauss) eğriliği bir yüzeyin kendine özgü bir özelliğidir. Bu nedenle, bir ızgarayı döndürmek onu değiştirmemelidir. Bununla birlikte, rotasyonlar, 90 derecenin katları ile rotasyonlar hariç, ayrıklaştırma hatası verir. Bu nedenle, bu tür herhangi bir rotasyon, eğriliği korumalıdır.
İlk diferansiyel diferansiyel fikrinden yararlanarak neler olup bittiğini anlayabiliriz : türevler fark bölümlerinin sınırlarıdır. Gerçekten bilmemiz gereken bu.
dxx
x-yönündeki ikinci kısmi türev için ayrı bir yaklaşım olduğu varsayılmaktadır. Bu özel yaklaşım (mümkün olanların çoğundan), hücre boyunca yatay bir enine boyunca yüzey örneklenerek hesaplanır. (2) yazılan satır 2 ve sütun 2'deki merkezi hücrenin yerini alan transekt, (1,2), (2,2) ve (3,2) 'deki hücrelerden geçer.
Bu transect boyunca, ilk türevler, kendi fark bölümleri ile yakınlaştırılır, (* x32- * x22) / L ve (* x22- * x12) / L, burada L, hücreler arasındaki (ortak olarak eşit) mesafedir cellSizeAvg
. İkinci türevler, bunların fark bölümleri ile elde edilir.
dxx = ((*x32-*x22)/L - (*x22-*x12)/L)/L
= (*x32 - 2 * *x22 + *x12) / L^2.
L ^ 2 bölünmesine dikkat edin!
Benzer şekilde, y-yönündeki ikinci kısmi türev için ayrık bir yaklaşım dyy
olduğu varsayılmaktadır . Transect dikeydir, (2,1), (2,2) ve (2,3) 'te hücrelerden geçer. Formül içindekiyle aynı görünecek, dxx
ancak aktarılan aboneliklerle. Bu sorudaki üçüncü formül olabilir - ancak yine de L ^ 2'ye bölmeniz gerekir.
Karışık ikinci kısmi türev, ikidxy
fark alınarak tahmin edilebilir hücre birbirinden . Örneğin, hücredeki (2,3) x'e göre ilk türev (merkezi hücre değil, en üst orta hücre!), Değeri solundan, * x13, sağındaki değerden çıkararak tahmin edilebilir, * x33 ve bu hücreler arasındaki mesafeye bölünerek, 2L. (2,1) hücresindeki (alt orta hücre) x'e göre ilk türev (* x31 - * x11) / (2L) ile tahmin edilir. Bunların fark, 2L bölünmesiyle, karışık kısmi bağışları tahmin
dxy = ((*x33 - *x13)/(2L) - (*x31 - *x11)/(2L))/(2L)
= (*x33 - *x13 - *x31 + *x11) / (4 L^2).
"Toplam" eğriliğin ne anlama geldiğinden emin değilim, ama muhtemelen Gauss eğriliği (temel eğrilerin ürünü olan) olması amaçlanmıştır. Göre Meek & Walton 2000 , Denklem 2.4, Gauss d xy ^ 2 - eğrilik dxx * DYY bölünmesiyle elde edilir (haber eksi işareti! - bu bir olan belirleyici ) yüzeyinin eğim norm karesine. Bu nedenle, soruda belirtilen geri dönüş değeri bir eğrilik değildir, ancak Gauss eğriliği için dağınık bir kısmi ifade gibi görünür.
Öyleyse buluruz, kodda , çoğu kritik olan altı hata:
dxx 1'e değil L ^ 2'ye bölünmelidir.
dyy'nin 1 değil L ^ 2'ye bölünmesi gerekir.
Dxy işareti yanlış. (Bunun eğrilik formülü üzerinde hiçbir etkisi yoktur.)
Dyy ve dxy için formüller, not ettiğiniz gibi karıştırılır.
Dönüş değerindeki bir terimde negatif işaret eksik.
Aslında bir eğriliği hesaplamaz, sadece eğrilik için rasyonel ifadenin payını hesaplar.
Çok basit bir kontrol olarak, değiştirilen formülün ikinci dereceden yüzeylerdeki yatay konumlar için makul değerler döndürdüğünü doğrulayalım. Böyle bir konumu koordinat sisteminin kaynağı olacak şekilde ve yüksekliğini sıfır yükseklikte alarak, bu tür yüzeylerin hepsinin form denklemleri vardır.
elevation = a*x^2 + 2b*x*y + c*y^2.
sabit a, b ve c için. Merkezi kare koordinatlarda (0,0), sol tarafındaki koordinatlar (-L, 0) vb. Vardır. Dokuz yükseklik
*x13 *x23 *x33 (a-2b+c)L^2, (c)L^2, (a+2b+c)L^2
*x12 *x22 *x32 = (a)L^2, 0, (a)L^2
*x11 *x21 *x31 (a+2b+c)L^2, (c)L^2, (a-2b+c)L^2
Bu nedenle, değiştirilmiş formülle,
dxx = (a*L^2 - 2*0 + a*L^2) / L^2
= 2a;
dxy = ((a+2b+c)L^2 - (a-2b+c)L^2 - (a-2b+c)L^2 + (a+2b+c)L^2)/(4L^2)
= 2b;
dyy = ... [computed as in dxx] ... = 2c.
Eğrilik, 2a * 2c - (2b) ^ 2 = 4 (ac - b ^ 2) olarak tahmin edilir. (Meek & Walton formülündeki payda bu durumda birdir.) Bu mantıklı mı? A, b ve c gibi basit değerleri deneyin:
a = c = 1, b = 0. Bu dairesel bir paraboloiddir; Gauss eğriliği pozitif olmalıdır. 4 (ac-b ^ 2) değeri gerçekten pozitiftir (4'e eşit).
a = c = 0, b = 1. Bu, bir tabakanın hiperboloididir - bir eyer - negatif eğrilik yüzeyinin standart örneği . Tabii ki, 4 (ac-b ^ 2) = -4.
a = 1, b = 0, c = -1. Bu, bir tabakanın hiperboloidinin (45 derece döndürülmüş) başka bir denklemidir. Bir kez daha 4 (ac-b ^ 2) = -4.
a = 1, b = 0, c = 0. Bu parabolik bir şekle katlanmış düz bir yüzeydir. Şimdi, 4 (ac-b ^ 2) = 0: sıfır Gauss eğriliği bu yüzeyin düzlüğünü doğru bir şekilde algılar.
Bu örneklerdeki sorudaki kodu denerseniz, her zaman hatalı bir değer elde ettiğini görürsünüz.