319 |
vector: NormalizeVector (_up) |
vector: NormalizeVector (_up) |
320 |
point: SubCoord (_center, _eye)]; |
point: SubCoord (_center, _eye)]; |
321 |
|
|
322 |
_center = AddCoord(_eye, newDir); |
_center = AddCoord(_eye,newDir); |
323 |
} |
} |
324 |
|
|
325 |
/** |
/** |
362 |
*/ |
*/ |
363 |
- (void) rotateAroundViewHeading: (double)heading |
- (void) rotateAroundViewHeading: (double)heading |
364 |
{ |
{ |
365 |
|
double normDir = VectorNorm( SubCoord (_center, _eye)); |
366 |
coord_t newDir; |
coord_t newDir; |
367 |
newDir = [self rotateByAngle: heading |
newDir = NormalizeVector([self rotateByAngle: heading |
368 |
vector: NormalizeVector (_up) |
vector: NormalizeVector (_up) |
369 |
point: SubCoord (_center, _eye)]; |
point: SubCoord (_center, _eye)]); |
370 |
|
|
371 |
_eye = SubCoord(_center, newDir); |
_eye = SubCoord(_center, MultCoord(newDir,normDir)); |
372 |
} |
} |
373 |
|
|
374 |
/** |
/** |
377 |
*/ |
*/ |
378 |
- (void) rotateAroundViewPitch: (double)pitch |
- (void) rotateAroundViewPitch: (double)pitch |
379 |
{ |
{ |
380 |
|
double normDir = VectorNorm( SubCoord (_center, _eye)); |
381 |
coord_t newDir, newUp; |
coord_t newDir, newUp; |
382 |
newDir = [self rotateByAngle: pitch |
newDir = NormalizeVector([self rotateByAngle: pitch |
383 |
vector: [self ortho] |
vector: [self ortho] |
384 |
point: SubCoord (_center, _eye)]; |
point: SubCoord (_center, _eye)]); |
385 |
|
|
386 |
_eye = SubCoord(_center, newDir); |
_eye = SubCoord(_center, MultCoord(newDir,normDir)); |
387 |
|
|
388 |
newUp = [self rotateByAngle: pitch |
newUp = [self rotateByAngle: pitch |
389 |
vector: [self ortho] |
vector: [self ortho] |