CelestiaUniversalCoord.mm
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. //
  2. //  CelestiaUniversalCoord.mm
  3. //  celestia
  4. //
  5. //  Created by Bob Ippolito on Fri Jun 07 2002.
  6. //  Copyright (c) 2002 Chris Laurel. All rights reserved.
  7. //
  8. #import "CelestiaUniversalCoord.h"
  9. #import "CelestiaUniversalCoord_PrivateAPI.h"
  10. #import "CelestiaVector_PrivateAPI.h"
  11. @implementation CelestiaUniversalCoord(PrivateAPI)
  12. -(UniversalCoord)universalCoord
  13. {
  14.     return *reinterpret_cast<const UniversalCoord*>([_data bytes]);
  15. }
  16. -(CelestiaUniversalCoord*)initWithUniversalCoord:(UniversalCoord)uni
  17. {
  18.     self = [super init];
  19.     _data = [[NSData alloc] initWithBytes:(void *)&uni length:sizeof(UniversalCoord)];
  20.     return self;
  21. }
  22. @end
  23. @implementation CelestiaUniversalCoord
  24. -(NSData*)data
  25. {
  26.     return _data;
  27. }
  28. -(id)initWithData:(NSData*)data
  29. {
  30.     self = [super init];
  31.     _data = [data retain];
  32.     return self;
  33. }
  34. -(void)encodeWithCoder:(NSCoder*)coder
  35. {
  36.     NSLog(@"[CelestiaUniversalCoord encodeWithCoder:%@]",coder);
  37.     //[super encodeWithCoder:coder];
  38.     [coder encodeObject:_data];
  39. }
  40. -(id)initWithCoder:(NSCoder*)coder
  41. {
  42.     NSLog(@"[CelestiaUniversalCoord initWithCoder:%@]",coder);
  43.     //self = [super initWithCoder:coder];
  44.     self = [super init];
  45.     _data = [[coder decodeObject] retain];
  46.     return self;
  47. }
  48. -(void)dealloc
  49. {
  50.     if (_data != nil) {
  51.         [_data release];
  52.         _data = nil;
  53.     }
  54.     [super dealloc];
  55. }
  56. -(CelestiaVector*)celestiaVector
  57. {
  58.     return [CelestiaVector vectorWithPoint3d:Point3d([self universalCoord])];
  59. }
  60. -(NSNumber*)distanceTo:(CelestiaUniversalCoord*)t
  61. {
  62.     return [NSNumber numberWithDouble:[self universalCoord].distanceTo([t universalCoord])];
  63. }
  64. -(CelestiaUniversalCoord*)difference:(CelestiaUniversalCoord*)t
  65. {
  66.     return [[[CelestiaUniversalCoord alloc] initWithUniversalCoord:[self universalCoord].difference([self universalCoord])] autorelease];
  67. }
  68. @end