良い一日、私はObjective C Devにかなり慣れておらず、ここhttp://www.movable-type.co.uk/scripts/latlong.htmlにある中点式の実装について問い合わせています。
方式:
Bx = cos(lat2).cos(Δlong)
By = cos(lat2).sin(Δlong)
latm = atan2(sin(lat1)+ sin(lat2)、√((cos(lat1)+ Bx)²+By²))
lonm = lon1 + atan2(By、cos(lat1)+ Bx)
ObjectiveCでのこの式の私の実装はです。
- (CLLocationCoordinate2D) getMidPointCoords
{
double dLon = (self.toCoordinate.longitude - self.fromCoordinate.longitude) * (M_PI/180);
double Bx = cos(self.toCoordinate.latitude)*cos(dLon);
double By = cos(self.toCoordinate.latitude)*sin(dLon);
double latM = atan2(sin(self.fromCoordinate.latitude)+sin(self.toCoordinate.latitude), sqrt( (cos(self.fromCoordinate.latitude)+Bx)*(cos(self.fromCoordinate.latitude)+Bx) + By*By) );
double lonM = self.fromCoordinate.longitude + atan2(By, cos(self.fromCoordinate.latitude) + Bx);
CLLocationCoordinate2D midPoint;
midPoint.latitude = latM;
midPoint.longitude = lonM;
}
このコードをデバッグすると、明らかに間違った座標が返されます。つまり、基本的に私の質問は、「これは、ダブルを使用しているという事実のためですか?」です。それとも、この式の私の実装は単純に失敗したのでしょうか?
支援や洞察を提供していただき、ありがとうございます。