Polar Grafik Donusumu.

Başlatan muhittin_kaplan, 06 Ekim 2019, 11:08:14

muhittin_kaplan

Elimde Başlangıç ve Bitlis Noktaları bulunan çizgilerden oluşmuş( Resim1) bir polar Grafik var.[ çizgilerin oluşmasını sağlayan her nokta da mevcut].
Yapmak istediğim ise, Çizgiler kullanarak Oluşmuş bu resmi poligon lar ile çizmek.(Resim 3)
Resim 1

Resim2

Resim3

Epsilon

Benzeri işlemler için bir site var

https://www.desmos.com/calculator

Buraya grafiği ekleyebiliyorsnuz


Benzer konunun videosu
Algoritması konusunda yardımcı olabilir belki.


devrecii

Her linenin iki ucunda  point olduğunu farzedelim birbirine en yakın pointler line ile birleştirilir eğer yanında ki point çok uzakta ise birleştirilmez aynı linenın baş ve son pointi kenar kabul edilir.

Her linenin  orije göre  kaçıncı derecede olduğu eğimden bulunabilir bu sayede 0 dan 360 dereceye kadar yanyana komşu lineler bululur uclar birleştirilebilir.

Paintteki boya doldurma gibi  de işlem yapılabilir pixeller genişletilir doldulrulur toleransdan uzakta ise burada yayılma sona erer bu noktaya poligoun pointi koyulur burası dış kanardır.

Tabi bunlar fikir vermesi açısından iş pek kolay değil.




MC_Skywalker

Geogebra var.  https://www.geogebra.org benzer grafiksel matematik işlemleri için.


muhittin_kaplan

   Python kullanıyorum. Çizimler vb işler için Matplotlib Kütüphanesi.Matematiksel işlemler için Numpy Kütüphanesi. Büyük Veri için Pandas.

   Şunu yaptım. Numpy ve Pandas ile oluşturup Matplotlib ile görselleştirdiğim veriyi (1.resim) Bir diziye RGBA olarak aldım. GraySacle yaparak 2 boyutlu diziye çevirdim.
SciKit-Learn kütüphanesindeki (opencvde de mevcut) Canny ile (edge dedector) resmin kenarlarını buldum. Kenarların koordinatlarını aldım.
Burada şu problemim çıktı orjinal resmin (resim1) çözünürlülüğü ile sonuc resim in çözünürlülüğü aynı değil. :)

muhittin_kaplan

Alıntı yapılan: iboibo - 06 Ekim 2019, 23:09:27Her linenin iki ucunda  point olduğunu farzedelim birbirine en yakın pointler line ile birleştirilir eğer yanında ki point çok uzakta ise birleştirilmez aynı linenın baş ve son pointi kenar kabul edilir.

Her linenin  orije göre  kaçıncı derecede olduğu eğimden bulunabilir bu sayede 0 dan 360 dereceye kadar yanyana komşu lineler bululur uclar birleştirilebilir.

Paintteki boya doldurma gibi  de işlem yapılabilir pixeller genişletilir doldulrulur toleransdan uzakta ise burada yayılma sona erer bu noktaya poligoun pointi koyulur burası dış kanardır.

Tabi bunlar fikir vermesi açısından iş pek kolay değil.


Hocam Aslında Line lar birsürü noktalardan oluşuyor. ben line oluştururken kaynak israfı olmasın diye başlangıç ve bitiş noktalarını birleştirdim (arada kalanları almadım). Aslında her noktanın bir koordinatı var ve ben bunların hepsini bir DataSet te tutuyorum.

tekosis

Hocam aşağıdaki sayfa işine yarar mı?

https://plot.ly/python/v3/polygon-area/
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

muhittin_kaplan

#7
hocam ploty bir python modülü ve maalesef online. Ayrıca polygon çizmekte problem yaşamıyorum. Ben bir algoritmayla bu noktalardan oluşan scatter den oluşan şekli poligonlarla çizmeye çalışıyorum. bunun içinde kenarların koordinatını bulmalıyımki poligonlar çizebileyim

z

Bayagi bir kafa yormak lazim.

Beyni en az yoracak fakat fazla islem gucu gerektirecek cozum soyle olabilir;

Kartezyen koordinatlar icin uretilmis verilerle poligonlari cizersin.

Sonra elindeki verileri polar koordinata cevirirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

#9
Alıntı YapKartezyen koordinatlar icin uretilmis verilerle poligonlari cizersin.
Kartezyen de var, koordinat ta. polar koordinatta. Ama noktaların.
Poligon Nasıl Olacak ?

bocek

Hocam sizin probleminizi şu kütüphane çözer gibi:
https://doc.cgal.org/latest/Manual/packages.html

Anladığım kadarıyla da şu konu ile alakalı:
https://doc.cgal.org/latest/Optimal_transportation_reconstruction_2/index.html#Chapter_Optimal_Transportation_Curve_Reconstruction

Kütüphane C++ ile yazılmış ama pitonseverler de düşünülmüş:
https://pypi.org/project/cgal-bindings/
1 ya da 0. işte 'bit'ün mesele..


muhittin_kaplan


devrecii

Sorun çözüldü mü ?, linklerden hiçbir şey anlamadım.

Eğer elinde bir hex fomatında x-y koodinatleri olan ham değiştirmediğin dosyayı burada yayınlarsan yukarıda yazdığım pixelleri genişletip kümenin etrafını çizgi ile sarabilirim belki  :du:

 

muhittin_kaplan

Hex degil. Herhangi birseye ihtiyaç ta yok örnek için. Iki üç guruptan oluşan dağılımları guruplandirmaya ve etraflarini cizmeye çalışarak ilerliyrom şu anda.