bir açı ve mesafe koordinat hesapliyorsunuz Bir Ipoint bu uzantı yöntemi yazdım. I 0, 90, 180 ve 270 'lik bir açıda koyarak zamanbir koordinat
public static IPoint Offset(this IPoint point, double angle, double distanceInMeters)
{
var radians = Math.PI * angle/180;
var distanceX = distanceInMeters * Math.Cos(radians);
var distanceY = distanceInMeters * Math.Sin(radians);
var earthRadius = 6371000;
var y = point.Y + ((distanceY/earthRadius) * 180/Math.PI);
var x = point.X + ((distanceX/(earthRadius * Math.Cos(y * 180/Math.PI))) * 180/Math.PI);
return new Point(x, y);
}
Daha sonra, bir çıkış noktası olan belirli bir mesafede koordinat dönüş iyi çalışır. Ama tam olarak Kuzey, Doğu gibi noktalara işaret etmeyen bir açıya girmeye başladığımda yanlış mesafeler alıyorum.
Nerede hata yapıyorum? Alternatif kullanmak için bazı kütüphaneler var mı?
Bu konuda gerçekten emin değilim ... ama ... – Ian
'int açısı 'potansiyel tamsayı bölmesine dikkat edin ??? 'Çift açı' - '30.51' derece –
'dır. * Hata ayıklama * .First, neyin ters gittiği - eğer açı' 90 'ise Tamam, küçük * bozukluğu *,' 91' derecesini söyleyin. : distanceX'te ekstra * kazanç * veya * kayıp * var mı? 'DistanceY' hakkında ne dersiniz? 89 dereceye kadar devam edin; Sonra koymak '45' - * tam * önce' 0' ve '90' olgu ... –