1

NSPointは、平面内の点を表すためにCocoaで使用されるC構造体です。

Objective-CスタイルのNSPointで、どのように平行移動、回転、およびその他の幾何学的操作を行いますか?

これまでのところ、これらの計算にはC関数を使用していますが、私の意見では、残りのコードでは見栄えがよくありません。

-(NSPoint) rotateAroundNSPoint: (NSPoint)origin  pointToRotate:(NSPoint)point andDegreesAngle:(float)angleD;
NSPoint rotateAround(NSPoint origin, NSPoint initialPos, float angleDegrees)


/* C-style function */
NSPoint pointD = rotateAround(point000, point001, 72*9);
/* Objective-C method */
NSPoint pointE = [self rotateAroundNSPoint:point000 pointToRotate:point001 andDegreesAngle:72*12];

他の選択肢はありますか?

4

1 に答える 1

1

Cocoaは、このような関数を指すマクロを定義しているので、一貫したスタイルを維持するためにそれを行うことができます

例えば

#define NSPointRotateAround(origin, initialPos, angleDegrees) rotateAround(origin, initialPos, angleDegrees)

それでも同じコードを呼び出しているので、少しきれいに見えます。幾何関数を共通のファイルに移動することもできます。それらをクラスに関連付ける必要はありません。

注:私が見たところ、cocoaは実際にインライン関数を使用しているので、それも実行できます(呼び出し元のコードはどちらの方法でも同じように見えます)

于 2012-07-18T11:41:19.773 に答える