Mekansal çizgi düzenleri için istatistiksel testler?


32

Mekansal nokta düzenleri için, noktaların rasgele dağıtılıp dağıtılmadığını belirlemek için kullanılabilecek çok sayıda test var, ancak mekansal çizgi düzenleri için belirlenmiş testler var mı? (Sadece başlangıç ​​ve bitiş noktası olan ve ara düğüm olmayan düz çizgiler düşünüyorum.)

Analiz etmek istediğim veriler, insan ve hayvan hareketinin OD (başlangıç-varış yeri) hatlarıdır. ( Yönlendirilmemiş satırları kümelemedeki örneğe benzer .)

Şimdiye kadar, bir fikir 4D noktaları gibi çizgileri ele almak ve nokta deseni testleri kullanmaktı, ancak bunun uygun olup olmadığından emin değilim.

İdeal test, satır kümeleri olup olmadığını belirlemeyi mümkün kılar.

İçgüdüsel olarak, aynı kökenle başlayan, ancak her türlü farklı destinasyona sahip birçok çizginin bir küme olarak düşünülmemesi gerektiğini söyleyebilirim. Öte yandan, daha uzun bir süre boyunca paralel olarak çalışan (buna yakın) birçok satır bir küme olacaktır. görüntü tanımını buraya girin


Bir satır diğer satıra paralel, ancak 1) ilk satırdan çok daha kısa ya da 2) ilk satırın yönünde "uzak" ise davranışınız ne olmalıdır
radouxju

bu durumlarda @radouxju, ben onlar aynı kümeye aittir yok derdim
Underdark

Yanıtlar:


17

Bu, zor bir sorudur, çünkü çizgi özellikleri için geliştirilen mekansal süreç istatistiği henüz yoktur. Denklemlere ve koda ciddi bir şekilde kazma olmadan, nokta işlem istatistikleri doğrusal özellikler için kolayca uygulanabilir değildir ve bu nedenle istatistiksel olarak geçersizdir. Bunun nedeni, belirli bir şablonun test edildiği boşluğun, rastgele alandaki doğrusal bağımlılıklara değil, nokta olaylarına dayanmasıdır. Şunu söylemeliyim ki, boşluğun ne kadar olacağı ve yoğunluk / düzenleme / yönlendirme daha da zor olacaktır.

Ben sadece tükürük topluyum ama Euclidean mesafeyle (veya eğer çizgiler karmaşıksa Hausdorff mesafesinin) çok boyutlu bir hat yoğunluğu değerlendirmesinin sürekli bir kümelenme ölçüsü göstermeyeceğini merak ediyorum. Bu veriler daha sonra uzunluk vektörlerindeki eşitsizliği hesaba katan varyansı kullanarak çizgi vektörlerine özetlenebilir (Thomas 2011) ve K-aracı gibi bir istatistik kullanarak bir küme değeri atanabilir. Kümelerin atanmasından sonra olmadığınızı biliyorum ancak küme değeri kümelenme derecelerini bölümleyebilir. Bu, açık bir şekilde, optimal bir k uyumu gerektireceğinden, rasgele kümeler atanmaz. Bunun grafiksel teorik modellerde kenar yapı değerlendirmesinde ilginç bir yaklaşım olacağını düşünüyorum.

İşte R'de çalışılmış bir örnek, üzgünüm, ancak QGIS örneği sağlamaktan daha hızlı ve daha tekrarlanabilir ve benim rahatlık bölgemde daha fazla :)

Kitaplık ekleyin ve spatstat'tan bakır psp nesnesini çizgi örneği olarak kullanın

library(spatstat)
library(raster)
library(spatialEco)

data(copper)
l <- copper$Lines
l <- rotate.psp(l, pi/2)

Standart 1. ve 2. sıra hat yoğunluğunu hesaplayın ve ardından raster sınıf nesnelere zorlayın

d1st <- density(l)
  d1st <- d1st / max(d1st)
  d1st <- raster(d1st)  
d2nd <- density(l, sigma = 2)
  d2nd <- d2nd / max(d2nd)
  d2nd <- raster(d2nd)  

1. ve 2. sipariş yoğunluğunu teraziye entegre bir yoğunluğa göre standartlaştırın

d <- d1st + d2nd
d <- d / cellStats(d, stat='max')  

Standartlaştırılmış ters öklid mesafesini hesaplayın ve raster sınıfına zorlayın

euclidean <- distmap(l)
euclidean <- euclidean / max(euclidean)
euclidean <- raster.invert(raster(euclidean))

Zorlama spatstat psp bir spatialLinesDataFrame nesnesine raster :: extract kullanmak için

as.SpatialLines.psp <- local({
     ends2line <- function(x) Line(matrix(x, ncol=2, byrow=TRUE))
     munch <- function(z) { Lines(ends2line(as.numeric(z[1:4])), ID=z[5]) }
     convert <- function(x) {
        ends <- as.data.frame(x)[,1:4]
        ends[,5] <- row.names(ends)
        y <- apply(ends, 1, munch)
        SpatialLines(y)
     }
     convert
})
l <- as.SpatialLines.psp(l)
l <- SpatialLinesDataFrame(l, data.frame(ID=1:length(l)) )

Arsa sonuçları

par(mfrow=c(2,2))
  plot(d1st, main="1st order line density")
    plot(l, add=TRUE)
  plot(d2nd, main="2nd order line density")
    plot(l, add=TRUE) 
  plot(d, main="integrated line density")
    plot(l, add=TRUE)   
  plot(euclidean, main="euclidean distance")
    plot(l, add=TRUE) 

Raster değerlerini ayıklayın ve her satırla ilişkili özet istatistiklerini hesaplayın

l.dist <- extract(euclidean, l)
l.den <- extract(d, l)
l.stats <- data.frame(min.dist = unlist(lapply(l.dist, min)),
                      med.dist = unlist(lapply(l.dist, median)),
                      max.dist = unlist(lapply(l.dist, max)),
                      var.dist = unlist(lapply(l.dist, var)),
                      min.den = unlist(lapply(l.den, min)),
                      med.den = unlist(lapply(l.den, median)),
                      max.den = unlist(lapply(l.den, max)),
                      var.den = unlist(lapply(l.den, var)))

Optimal.k işleviyle optimal k (küme sayısını) değerlendirmek için küme siluet değerlerini kullanın, ardından satırlara küme değerleri atayın. Daha sonra her kümeye renk atayabilir ve yoğunluk rasterinin üzerine çizebiliriz.

clust <- optimal.k(scale(l.stats), nk = 10, plot = TRUE)                      
  l@data <- data.frame(l@data, cluster = clust$clustering) 

kcol <- ifelse(clust$clustering == 1, "red", "blue")
plot(d)
  plot(l, col=kcol, add=TRUE)

Bu noktada, elde edilen yoğunluk ve mesafenin rastgele anlamlı olup olmadığını test etmek için çizgilerin rastgele bir işlemi gerçekleştirilebilir. Çizgilerinizi rasgele yeniden yönlendirmek için "rshift.psp" işlevini kullanabilirsiniz. Ayrıca başlangıç ​​ve bitiş noktalarını rastgele seçebilir ve her satırı yeniden oluşturabilirsiniz.

Biri ayrıca "ne olursa olsun", çizgilerin değişmez olan başlangıç ​​ve bitiş noktalarındaki tek değişkenli veya çapraz analiz istatistiklerini kullanarak bir nokta deseni analizi yaptınız. Tek değişkenli bir analizde, iki nokta deseni arasında kümelemede tutarlı olup olmadığını görmek için başlangıç ​​ve bitiş noktalarının sonuçlarını karşılaştırırsınız. Bu bir f-hat, G-hat veya Ripley's-K-hat ile yapılabilir (işaretlenmemiş nokta işlemleri için). Başka bir yaklaşım, iki nokta işleminin aynı anda [start, stop] olarak işaretlenerek test edildiği bir Çapraz analiz (örneğin, çapraz K) olacaktır. Bu, kümeleme sürecindeki başlangıç ​​ve bitiş noktaları arasındaki mesafe ilişkilerini gösterir. Ancak, Altta yatan bir yoğunlaşma sürecine mekansal bağımlılık (tarafsızlık) bu tür modellerde onları homojen olmayan ve farklı bir model gerektiren bir sorun olabilir. İronik olarak, homojen olmayan süreç, bizi tam daireyi yoğunluğa geri döndüren bir yoğunluk fonksiyonu kullanılarak modellenmiştir, böylece kümelemenin bir ölçüsü olarak ölçeğe entegre bir yoğunluk kullanılması fikrini desteklemektedir.

Burada, Ripleys K (Besags L), çizgi özellik sınıfının start, stop konumlarını kullanarak işaretlenmemiş bir nokta işleminin otomatik korelasyonu için istatistik olup olmadığını gösteren hızlı bir örnek. Son model, hem başlangıç ​​hem de durma konumlarını nominal olarak işaretlenmiş bir işlem olarak kullanan bir çapraz-k.

library(spatstat)
  data(copper)
  l <- copper$Lines
  l <- rotate.psp(l, pi/2)

Lr <- function (...) {
 K <- Kest(...)
  nama <- colnames(K)
   K <- K[, !(nama %in% c("rip", "ls"))]
   L <- eval.fv(sqrt(K/pi)-bw)
  L <- rebadge.fv(L, substitute(L(r), NULL), "L")
 return(L)
}

### Ripley's K ( Besag L(r) ) for start locations
start <- endpoints.psp(l, which="first")
marks(start) <- factor("start")
W <- start$window
area <- area.owin(W)
lambda <- start$n / area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
( Lenv <- plot( envelope(start, fun="Lr", r=seq(0, rmax, by=1), nsim=199, nrank=5) ) )

### Ripley's K ( Besag L(r) ) for end locations
stop <- endpoints.psp(l, which="second")
  marks(stop) <- factor("stop")
W <- stop$window
area <- area.owin(W)
lambda <- stop$n / area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
( Lenv <- plot( envelope(start, fun="Lr", r=seq(0, rmax, by=1), nsim=199, nrank=5) ) )

### Ripley's Cross-K ( Besag L(r) ) for start/stop
sdata.ppp <- superimpose(start, stop)
( Lenv <- plot(envelope(sdata.ppp, fun="Kcross", r=bw, i="start", j="stop", nsim=199,nrank=5, 
                 transform=expression(sqrt(./pi)-bw), global=TRUE) ) )

Referanslar

Thomas JCR (2011) Prototip Olarak Çizgi Segmentinin Kullanılması K-Aracına Dayalı Yeni Bir Kümeleme Algoritması. In: San Martin C., Kim SW. (eds) Örüntü Tanıma, Görüntü Analizi, Bilgisayarla Görme ve Uygulamalarda İlerleme. CIARP 2011. Bilgisayar Bilimi Ders Notları, cilt 7042. Springer, Berlin, Heidelberg


14

Fréchet mesafesine bakmak isteyebilirsiniz . Bunu son zamanlarda bir python uygulaması arayan son bir sorudan sonra öğrendim .

Bu, bağların uzamsal benzerliğini bulmak için bir ölçüdür . Çokgen benzerlik önlemleri için eşdeğer olan Hausdorff mesafesine benzer, ancak bir yönü olan çizgiler için de aynı fikirdir.

Fréchet mesafesi, köpeği bir yörüngede sahibi ile ikinci bir yörüngede bağlayan, her ikisi de asla geriye doğru hareket etmeyen bir tasmanın minimum uzunluğu olarak tanımlanır.

Bu metrik, birbirine yakın yerleştirilmiş, neredeyse paralel, aynı şekilde ve aynı uzunlukta olacak şekilde iki eğri için küçük bir değere sahip olacaktır.

Yine de, bu küme tanımlama bölümüne cevap vermiyor.

Burada kapsamlı bir sunum var . Durumunuz, bölüm 46-49'da belirtilen kullanım durumlarından bazıları gibi görünüyor

Bu metrik, coğrafi olmayan birçok kullanım alanına sahiptir.

  • Gen dizilimindeki ortak alt kalıpları tespit etmek
  • elyazısı tanıma
  • Hisse senedi fiyatı geçmişleri gibi zaman serilerinde ilişkili dönemleri tespit etmek

bu nedenle, kaynakçadaki birçok makale bu konuyu ele alırken, çoğu coğrafi değildir. Ayrıca bu makalelerin birçoğu geospatial / geosciences yerine algoritmalar / matematik / bilgisayar bilimleri alanına girmekte ve bu doğrultuda amaçlanmaktadır.

Ancak bu makale umut verici görünüyordu: -

Buchin, K., Buchin, M. ve Wang, Y. (2009). Fréchet mesafesi ile kısmi eğri eşleşmesi için kesin algoritmalar. Kesikli Algoritmalar Üzerine 20. ACM-SIAM Sempozyumu Bildirilerinde, sayfa 645-654

Diğer makalelerden bazıları, neyin peşinde olduğunuza istinaden daha yakın geliyor - kümelenme tanımlaması ve yörüngelerin kümelere tahsisi - ancak zaman serisi verileri veya diğer mekansal olmayan örnekler kullanılarak gösteriliyor. Ancak ilginç yönlere işaret edebilirler.


2
Frechet veya Hausdorff mesafesini kullanarak öklid mesafesi yerine minimum bağlantı (veya DBSCAN) kümelemesinin güzel bir çözüm olacağını düşünüyorum.
dbaston

Frechet mesafesinin varlığını seviyorum ve ayrıca sunumun "jöle fasulye" ile "göbek düğmelerini" karşılaştırmasını da seviyorum.
Fezter

5

Burada anlatılana benzer bir yaklaşım kullanmayı öneriyorum .

ALGORİTMA ve adlandırma:

a) Ad satırı katmanı NODES. Hesaplama yatakları

b) mesafe toleransı kullanarak mekansal olarak kendisine (bir ila birçok) birleşme. İsim katmanı LINKS

c) LINKS'ten kendi kendine gelenleri kaldır; yani NAME = NAME_1

d) LİNKLER içinde "aynı" yön çiftleri bulunur. Kullandım:

def theSame(aList,tol):
    maxB=max(aList);minB=min(aList)
    if abs(maxB-minB)<tol:return 1
    if abs(maxB-minB-180)<tol:return 1
    return 0
#-----------
theSame( [!BEARING!, !BEARING_1!],15)

diğer bir deyişle, zıt yöne doğru giden yönlerin yön bakımından benzer olduğu kabul edilir.

d) benzer olmayan (0) çiftleri LINKS'ten çıkarın.

e) NODES üzerinden bağlanan LINKS gruplarını hesaplamak ve grup numaralarını NODES tablosuna aktarmak:

görüntü tanımını buraya girin

Ne yazık ki:

görüntü tanımını buraya girin

Bununla birlikte, grup içindeki rulmanların basit istatistikleri, örneğin standart sapma:

abs(tan(bearing))

ilk durumda hiçbir sapma, ikincisinde ise çok büyük bir sapma göstermedi. Benzer şekilde uzunluk istatistikleri de 'uzun süre paralel koşmak' için yardımcı olabilir.

Eğer yukarıdaki ilgi alanıysa, bağlı link gruplarını hesaplayan script ile cevabı güncelleyebilirim. Arcpy ve networkx modülü kullanıyor.

Aynı noktadan geçen bir çift çizgiyi zıt yönlerde nasıl ele alacağınızı bilmiyorum ...


Senaryoyu görmek isterim.
alphabetasoup

1
@RichardLaw çözümümün 1. satırındaki bağlantıyı takip edin ve görmek için aşağı kaydırın. Biraz daha iyi cilalanmış bir sürümüm var, ancak bu işe yarayacak. Mantık son derece basittir: 1. ona bağlı olan bağlantıları ve düğümleri kullanarak grafiği yapın 2. 1. düğümü alın ve ataları bulun (grup 0) 3) düğümleri grafikten kaldırın ve düğüm kalmadan önce tekrarlayın. Yüksek kaliteli Konsey / LINZ veri setleri için bağlantısız boru gruplarını (akarsu ve akarsu vb.) Bulmak için tekrar tekrar kullanıyorum
FelixIP

5

Gözlerimde, hangi yaklaşımların kullanılacağına karar verecek olan çizgilerin tanımında bir sorun var (yukarıda belirtilenlerden bazıları). Bunlar OD çiftleriyse ve geometri bir rol oynamıyorsa, buna ağ kümelemesine dayanarak yaklaşırdım. Ağların bir ağ oluşturmadığını söylersiniz - öyle olsun, ancak kökenlerin ve hedeflerin anlamlı bölgelere düşmesi muhtemeldir ve bu nedenle bir ağ olarak değerlendirebilirsiniz.

Geometri söyleyecek bir şeye sahipse (bunlar GPS yörüngelerini söyler ve geometriyi düşünmek istersiniz), gerçekte (x, y, t) uzayda çalışmanız gerekecek - hareketin ayak izinin benzer geometrisi ancak farklı kez aynı olarak değerlendirilemez - bu soruda belirtilmemiş.

Bakabileceğin bazı imkanlar:

  1. İhtiyaçlarınıza en yakın Dodge, Weibel, Forootan (2009), burada http://orca.cf.ac.uk/94865/1/PhysicsMovement.pdf
  2. Geometri basitleştirilebiliyorsa, belki burada belirtilen parametreler kullanımda olabilir: http://www.tandfonline.com/doi/full/10.1080/17445647.2017.1313788

Ancak, nihayet, ilk sorunuzu bir kez daha okuduğunuzda, daha basit olabilir: segmentlerin doğrusal uzantılarının kesişimi ile en yakın noktaları arasındaki mesafeyi ikili olarak hesaplayabilir misiniz (belki uzunluğuna bağlı olarak) parçanın kendisi) ve bir matris kümeleme algoritması kullanıyor musunuz? Sebep: kesişen bölümler, kesişenlere göre daha yakındır (paralel). Çizimlerde, bir ofsette bulunan uzun çizgisel veya paralel segmentlerin nasıl işleneceğini söylemiyorsunuz (uzun feçe dist). Bunun yukarıdaki çözüme sorun getireceğini varsayıyorum. (yukarıda "doğrusal uzantı" nın açıkça belirtilmesiyle netlik için düzenlenmiştir)

Not (Ocak 2018): Son zamanlarda bunun üzerine düştüm:

  1. Cai, Yuhan ve Raymond Ng. "Spatio-temporal yörüngelerin Chebyshev polinomları ile endekslenmesi." Verilerin yönetimi konulu 2004 ACM SIGMOD uluslararası konferansının bildirileri. ACM, 2004.

Yörünge benzerliği ile ilgilidir ve bu nedenle bir dereceye kadar benzerlik miktarını ölçmeyi sağlar. Bu, eğrilerin polinom yaklaşımına ve bir Chebyshev mesafesinin hesaplanmasına dayanır.


4

Çalıştığınız veri türü hakkında biraz daha ayrıntılı bilgi verebilir misiniz? Bunlar sadece bir dizi kesikli çizgi mi yoksa bir ağ mı oluşturuyor? Mekansal kalıp analizi için ArcGIS araçlarından herhangi birini kullandınız mı? ArcGIS yöntemlerinin çoğu (Ripley K, NN indeksi, Morans I) nokta olmayan verilerde kullanıldığında sadece çizgiler / poligonların centroidini kullanır. Ancak burada, merkezlerinin çok uzakta olması nedeniyle çok uzun çizgilerin dikkate alınmaması için her çizgiyi eşit bölümlere ayırmayı düşünmeniz gerekebilir.

Düşünülmesi gereken diğer bir şey ise kavramsal olarak bir satır kümesi nedir? Birbirine yakın kaynaklı birçok çizginiz olabilir, ancak daha sonra son noktaları dağılabilir. Benzer şekilde, birbirine çok yakın başlayan ve biten birçok çizgiyi elde edebilirsiniz, ancak daha sonra başlangıç ​​/ bitiş noktaları arasında çok dağılmış hale gelir.

Bununla birlikte, bir yaklaşım basitçe bir çizgi yoğunluğu analizi yapmak olabilir, böylece daha fazla çizgi içeren alanlar (bir anlamda kümelenmiş sayılabilir) yüksek ızgara değerlerine sahip olurken, düşük yoğunluklu alanlar düşük değerlere sahip olur. Böylece bir miktar sıcak nokta çıkışı elde edersiniz; ancak bu size Morans I veya NNI gibi tek bir istatistik vermez. Aynı zamanda yoğunluk, çok düzensiz bir çizginin (yani sıkı bir sarmalın) sonucu birçok çizgiden farklılaşmayacaktır.

Maalesef bu sorunun tam bir cevabı değil, fakat bence elde etmeye çalıştığın şeyin tam anlamıyla çivilemesinin daha iyi çözümler sağlayabileceğini düşünüyorum.

GÜNCELLEŞTİRME

Verdiğiniz örneğe dayanarak, FelixlP'nin nokta deseni ölçümleriyle kullanmak için çizgi taşıma özelliği olan bir nokta yaratma önerisini kullanmanın iyi bir yol olduğunu düşünüyorum. Bunun dışında, noktaları eşit parçalara böler ve her bir tepe noktasında çizgi taşıyan bir noktaya sahip olurdum. Daha sonra, her bir noktanın yakınlığına ve rulmanlar arasındaki benzerliğe bakacak önlemlere bakmanız gerekir (bu nedenle dik olanlara daha yakın çizgiler tespit edersiniz).

Dolayısıyla, Getis-Ord GI (Hotspot analizi) kullanmak, kümelerin nerede olduğunu görselleştirmek için kullanmak için iyi bir araç olacaktır; ve sonra küresel kümelenme düzeyini değerlendirmek için küresel bir Moran's.

Bununla birlikte, çizgileri segmentlere ayırma mesafesi, bulunan kümelenme derecesini etkiler. 1km ölçeğinde kümeler arıyorsanız, çizgileri bunun etrafına bölmeniz gerekir. Benzer şekilde, 100 metre ölçeğinde kümeler arıyorsanız, çizgileri buna göre ayırmanız gerekir. Bu, satırları kaçırmamanız ve böylece her satırı küme olarak algılamamanızdır.


Çizgiler gezi kökenlerini ve varış yerlerini temsil eder. Bir ağ kurmuyorlar. Şimdiye kadar başlangıç ​​ve varış noktalarının uzamsal nokta desenleri için R yöntemlerini kullandım. Satır merkezlerini kullanma fikrine pek düşkün değilim ama çizgiyi yoğunlaştırıp sonuçta ortaya çıkan düğümleri analiz etmeyi denemek faydalı olabilir, teşekkürler!
underdark

Daha uygun bir şey bulamazsam, hat yoğunluğu analizi bir geri dönüş çözümü olabilir.
underdark

Birincil çizgiyi belli bir mesafeye tamponlamak ve tampon tarafından tamamen çevrelenmemiş satırları sorgulamak bir çözüm olabilir mi? Geçmişte, en muhtemel seyahat rotasını bulmak için çok şey yaptım, ancak veriler basit çizgi bölümlerinden ziyade çok düğümlü polillerden oluşuyordu.
jbgramm

@jbgramm Bir şeyleri hesaplayabilecek birçok yaklaşım düşünebilirim ama istatistikçi değilim ve bu nedenle yerleşik yöntemler arıyorum - eğer varsa
underdark

2
Bir nokta işlemlerini temsil etmek için bir çizgi merkez noktası veya köşeleri kullanmak, istatistiksel olarak geçerli bir yaklaşım değildir. Ayrıca, mekansal sürecin temsilini de derinden değiştiriyorsunuz. Bazı önerilerde bulunacağım ama dürüst olmak gerekirse, biraz geçerli bir yaklaşım sunan tek şey çizgi yoğunluğunun @ underdark önerisidir. Ölçekler arasında, bir otokorelasyon istatistiği ile birleştiğinde, doğrusal özelliklerdeki bir kümelenme derecesini gösterecektir.
Jeffrey Evans,

3

Örnekler için teşekkürler.

Aradığınızı hesaplamak için belirlenmiş bir yöntem görmedim, ancak bu benim yaklaşımım olurdu. Bir çeşit kaba kuvvet çözümü.

Minimum sınırlayıcı bir dikdörtgen hesaplayın, ardından dört köşenin her birinde isteğe bağlı, ancak eşit miktarda genişletin.

Yaratma dikdörtgeni kütlesinin merkezini bulun, her bir çizgi için OD noktaları için azimuthal ve mesafe dağılımını hesaplayın ve aynı çizgiyi azimutlarını karşılaştırarak sınırlama dikdörtgenin köşelerini kullanarak yapın.

Dört köşenin her birinden her bir ışının sonuna kadar olan paralelliği test edin. Her ışının sonuna kadar kütle merkezinden paralelliği test edin.

Bunu yaparak, köşelerden uçlara olan sapmayı karşılaştırabilirsiniz. Örneğin (a) köşelerden ikisinden, üç satır kümesinin her birine paralel paralel çizgiler elde edersiniz. Ayrıca kütlenin merkezinden çizgilerin uzak uçlarına kadar paralel çizgilere sahip olabilirsiniz.

Örnek (b) Her bir çizginin köşesinden köşelerine kadar hesaplama yaparken yakın paralel çizgilere sahip olmayacaksınız, ancak çizgiler rastgele görünmüyor, hafif sapmalarla birbirlerine yol açıyorlar.

Örnek (c) rastgele görünüyor

Örnek (d) rastgele değil, radyaldir.

Buna daha fazla bakarken, yukarıda açıklanan testlerin yanı sıra, oluşturulan çevreleyen dikdörtgenin köşelerinden ışınların uçlarına üçgen çözüm testleri oluşturacağım. Benzer iç açılar ve alanlar, kümedeki çizgilerden biri diğerlerinden önemli ölçüde kısa olmadığı sürece kümelemenin doğrulanmasına yardımcı olacaktır.

Yukarıdakiler yalnızca bir aptalın görüşüdür ve muhtemelen yanılıyorum.


-1

İçgüdüsel açıklamanızın ardından, 2 satırın paralel olmasının ölçütü nedir?

Temel olarak başlangıç ​​veya bitiş noktaları üzerinde bir test yapabilirsiniz:
Let Sx = (start_x_line_1 - start_x_line_2),
Sy = (start_y_line_1 - start_y_line_2)
ve Ex, Ey aynı nokta ve son noktaları için.

Eğer sqrt (Sx² + Sy²) VE sqrt (Ex² + Ey²) belli bir eşiğin altındaysa, bu çizgileri paralel olarak düşünebilirsiniz.

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.