Skip to content

Commit 1e2c796

Browse files
committed
Fix orbiting camera mode along minor fixes
1 parent 634a554 commit 1e2c796

File tree

7 files changed

+25
-31
lines changed

7 files changed

+25
-31
lines changed

atmospheric_drag.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ def update_mass(self, maneuvers, sim_time, dt):
4242
if m.type == "const_thrust" and m.t_start <= sim_time <= m.t_start + m.duration:
4343
self.mass = m.mass
4444
# maneuver finish update
45-
elif m.type == "const_thrust" and m.t_start + m.duration >= sim_time and m.t_start + m.duration <= sim_time + dt:
46-
self.mass = m.mass_init - mass_flow * duration
45+
elif m.type == "const_thrust" and sim_time <= m.t_start + m.duration <= sim_time + dt:
46+
self.mass = m.mass_init - m.mass_flow * m.duration
4747

4848
# in case of a const-accel maneuver the user will have to update manaully
4949
# if siginificant propellant mass was spent

barycenter_class.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def get_vel(self):
7272
return [sum_x/self.get_mass(), sum_y/self.get_mass(), sum_z/self.get_mass()]
7373

7474
def get_vel_mag(self):
75-
return mag(self.vel)
75+
return self.vel.mag()
7676

7777
def get_draw_pos(self):
7878
return self.get_pos() * visual_scaling_factor

body_class.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def get_vel_rel_to(self, obj):
7979
return self.vel - obj.vel
8080

8181
def get_vel_mag(self):
82-
return mag(self.vel)
82+
return self.vel.mag()
8383

8484
def get_vel_mag_rel_to(self, obj):
8585
return (self.vel - obj.vel).mag()

camera_class.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def __init__(self, name, pos, orient, active, lock=None):
1111
self.orient = orient
1212
self.active = active
1313
self.lock = lock
14-
self.offset = vec3()
14+
self.offset_amount = 100
1515

1616
def get_name(self):
1717
return self.name
@@ -25,20 +25,20 @@ def set_pos(self, new_pos):
2525
self.pos = new_pos
2626

2727
def move(self, movement):
28-
29-
glTranslate((movement.x * self.orient.m11) + (movement.y * self.orient.m21) + (movement.z * self.orient.m31),
30-
(movement.x * self.orient.m12) + (movement.y * self.orient.m22) + (movement.z * self.orient.m32),
31-
(movement.x * self.orient.m13) + (movement.y * self.orient.m23) + (movement.z * self.orient.m33))
32-
3328
if not self.lock:
29+
glTranslate((movement.x * self.orient.m11) + (movement.y * self.orient.m21) + (movement.z * self.orient.m31),
30+
(movement.x * self.orient.m12) + (movement.y * self.orient.m22) + (movement.z * self.orient.m32),
31+
(movement.x * self.orient.m13) + (movement.y * self.orient.m23) + (movement.z * self.orient.m33))
32+
3433
self.pos = vec3(lst=[self.pos.x + (movement.x * self.orient.m11) + (movement.y * self.orient.m21) + (movement.z * self.orient.m31),
3534
self.pos.y + (movement.x * self.orient.m12) + (movement.y * self.orient.m22) + (movement.z * self.orient.m32),
3635
self.pos.z + (movement.x * self.orient.m13) + (movement.y * self.orient.m23) + (movement.z * self.orient.m33)])
3736

3837
else:
39-
self.offset = vec3(lst=[self.offset.x + (movement.x * self.orient.m11) + (movement.y * self.orient.m21) + (movement.z * self.orient.m31),
40-
self.offset.y + (movement.x * self.orient.m12) + (movement.y * self.orient.m22) + (movement.z * self.orient.m32),
41-
self.offset.z + (movement.x * self.orient.m13) + (movement.y * self.orient.m23) + (movement.z * self.orient.m33)])
38+
# this handles zooming in and out
39+
self.offset_amount += movement.z
40+
if self.offset_amount <= 0:
41+
self.offset_amount -= movement.z
4242

4343
def get_orient(self):
4444
return self.orient
@@ -56,10 +56,7 @@ def get_lock(self):
5656
return self.lock
5757

5858
def rotate(self, rotation):
59-
if not self.lock:
60-
about_pos = self.pos
61-
else:
62-
about_pos = self.pos - self.offset
59+
about_pos = self.pos
6360

6461
glTranslate(-about_pos.x, -about_pos.y, -about_pos.z)
6562
glRotate(-rotation[0], self.orient.m11, self.orient.m12, self.orient.m13)
@@ -78,15 +75,15 @@ def rotate(self, rotation):
7875
def lock_to_target(self, target):
7976
self.lock = target
8077
if type(target).__name__ == "body":
81-
offset_amount = target.get_radius() * 2 * visual_scaling_factor
82-
self.offset = self.orient.vz() * -offset_amount
78+
self.offset_amount = target.get_radius() * 3 * visual_scaling_factor
8379
else:
84-
self.offset = vec3(0,0,-100)
80+
self.offset_amount = 100
81+
82+
self.set_pos(-self.lock.get_draw_pos() - self.orient.vz() * self.offset_amount)
8583

8684
def unlock(self):
8785
self.lock = None
88-
self.offset = vec3()
8986

9087
def move_with_lock(self):
9188
if self.lock:
92-
self.set_pos(self.lock.get_pos() - self.offset * visual_scaling_factor)
89+
self.set_pos(-self.lock.get_draw_pos() - self.orient.vz() * self.offset_amount)

graphics.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,6 @@ def drawVesselLabels(vs, cam, offset=0.05):
314314
def drawProjectionLabels(ps, cam, offset=0.05, size=0.05):
315315

316316
for p in ps:
317-
center = p.body.get_draw_pos()
318317
pe_adjusted = p.draw_pe + p.get_body().get_draw_pos()
319318
ap_adjusted = p.draw_ap + p.get_body().get_draw_pos()
320319
an_adjusted = p.draw_an + p.get_body().get_draw_pos()
@@ -369,22 +368,20 @@ def drawScene(bodies, vessels, surface_points, barycenters, projections, maneuve
369368
drawSurfacePoints(surface_points, active_cam)
370369
drawVessels(vessels, active_cam, draw_mode)
371370

372-
if not active_cam.get_lock() and labels_visible:
371+
if labels_visible:
373372
glEnable(GL_LINE_SMOOTH)
374373
drawBarycenterLabels(barycenters, active_cam)
375374
drawBodyLabels(bodies, active_cam)
376375
drawSurfacePointLabels(surface_points, active_cam)
377376
drawVesselLabels(vessels, active_cam)
378377
glDisable(GL_LINE_SMOOTH)
379378

379+
drawProjections(projections)
380+
if labels_visible:
381+
drawProjectionLabels(projections, active_cam)
380382
# draw trajectory and predictions
381383
if show_trajectories:
382-
383-
drawProjections(projections)
384384
glEnable(GL_LINE_SMOOTH)
385-
if not active_cam.get_lock() and labels_visible:
386-
drawProjectionLabels(projections, active_cam)
387-
388385
drawTrajectories(vessels, scene_lock)
389386
drawManeuvers(maneuvers, point_size, active_cam)
390387
glDisable(GL_LINE_SMOOTH)

radiation_pressure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def update_mass(self, maneuvers, sim_time, dt):
9191
self.mass = m.mass
9292
# maneuver finish update
9393
elif m.type == "const_thrust" and sim_time <= m.t_start + m.duration <= sim_time + dt:
94-
self.mass = m.mass_init - mass_flow * duration
94+
self.mass = m.mass_init - m.mass_flow * m.duration
9595

9696
# in case of a const-accel maneuver the user will have to update manaully
9797
# if siginificant propellant mass was spent

solver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def VelocityVerlet(bodies, vessels, surface_points, maneuvers, atmospheric_drags
133133

134134
# calculate vessel accelerations due to atmospheric drag
135135
for ad in atmospheric_drags:
136-
if ad.vessels in vessels:
136+
if ad.vessel in vessels:
137137
v_idx = vessels.index(ad.vessel)
138138
accel_vec = ad.calc_accel()
139139
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec

0 commit comments

Comments
 (0)