2016-03-21 45 views
2

Dairenin çevresi boyunca en uygun noktayı bulmak için bir kod yazmaya çalışıyorum.Dairenin çevresi için en uygun nokta

3B alanda tanımlanmış bir daire var, öyle ki, yarıçapını ve üzerinde bulunduğu düzlemi biliyorum. Çemberin merkezinin yerini de biliyorum.

Ayrıca bu çemberin dışında bir noktam var ve 3D konumunu biliyorum. Bu dış noktaya en yakın olan dairenin çevresini bulmak istiyorum.

Bunu hesaplamanın en etkili yolu nedir?

+2

Yarıçaptan ve düzlemden daha fazlasına ihtiyacınız varsa, merkezin konumuna da ihtiyacınız var. –

+0

Bunu yakaladığın için, merkezin yerini de biliyorum. Bunu dahil etmek için soruyu düzenledim. – Vermillion

+0

Dairenin dışındaki nokta daire ile aynı düzlemde mi? – Fogmeister

cevap

2

Analitik çözüm:

İlk: Wikipedia: daire yatıyor düzleme senin noktasının bir projeksiyon olun. Bu şekilde problem 2D olur.

İkincisi: Çemberin merkezi ile prjection arasında bir çizgi çizin. Eğer çevresi çapraz nereye noktası

Matematiksel Optimizasyon Çözüm vardır: web dairenin çevresi üzerinde

Seç üç opsiyonel noktaları ve noktaya her mesafeyi hesaplayın. İki noktayı daha küçük mesafeyle alın. Daha sonra, bu iki nokta arasında (çevrede) duran ve noktanıza olan uzaklığını hesaplayan yeni bir üçüncü noktaya geçin.

Yeterince yakın bir noktaya sahip olana kadar bunu yapın.

+0

Bu harika bir çözüm, teşekkürler! – Vermillion

+0

Uh, bu optimizasyon çözümünün analitik çözümden çok daha yavaş olması muhtemeldir. Çünkü sorun 2d olduğunda, tek ihtiyacınız merkezden noktaya olan açıdır (“atan (orta, merkez, sivri, pointx)”) ve sonra cevap “(orta x + yarıçap * cos (açı)), centery + radius * sin (açı)) –

+0

Evet, kesinlikle. Sadece eklemek istedim çünkü soru matematiksel optimizasyon olarak etiketlendi. – RomCoo