Skip to content

Commit 6f36d52

Browse files
committed
Updated text to be relative to zoom level
1 parent 2b7385d commit 6f36d52

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

graphics/graphics_text.py

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@
22
from numpy import sign, arange
33

44

5+
def get_text_size(scene):
6+
"""
7+
8+
"""
9+
# Distance of camera from focus point to determine text size
10+
distance_from_center = mag(scene.center - scene.camera.pos)
11+
12+
# Eq generated from data (Using 3rd order polynomial)
13+
# D | size
14+
# 0 | 5
15+
# 0.5 | 8
16+
# 1 | 10
17+
# 2 | 12
18+
# 3 | 14
19+
# 5 | 15
20+
val = 0.1114 * distance_from_center**3 - 1.336 * distance_from_center**2 + 5.8666 * distance_from_center + 5.1711
21+
22+
return min(max(val, 10), 15) # Return val between 10 and 15
23+
24+
525
def draw_label(label_text, label_position, scene):
626
"""
727
Display a label at a given position, with borders and lines
@@ -54,15 +74,7 @@ def draw_text(label_text, label_position, scene):
5474
:return: The created label object.
5575
:rtype: class:`vpython.label`
5676
"""
57-
58-
# Distance of camera from focus point to determine text size
59-
distance_from_center = mag(scene.center - scene.camera.pos)
60-
61-
# Far away = smaller text, closer = larger text (up to a min (20) and max (40))
62-
# Typically 5->20 units away
63-
# (eqn and limits modified to suit display better) = -1.3333 * distance_from_center + 46.6667
64-
label_height = -1.3333 * distance_from_center + 36.6667 # Calculate label height
65-
label_height = max(min(label_height, 35), 10) # Limit to 10->35
77+
label_height = get_text_size(scene)
6678
label_xoffset = 0
6779
label_yoffset = 0
6880
label_space = 0
@@ -151,9 +163,11 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
151163
pos = vector(x_pos + padding, y_origin + padding, z_origin)
152164
if append:
153165
numbers_list.append(draw_text(txt, pos, scene))
166+
numbers_list[len(numbers_list)-1].height = get_text_size(scene)
154167
else:
155168
numbers_list[index].text = txt
156169
numbers_list[index].pos = pos
170+
numbers_list[index].height = get_text_size(scene)
157171
index += 1
158172
# Draw the axis label at either the positive or negative side away from center
159173
# If sign = -1, draw off max side, if sign = 0 or 1, draw off negative side
@@ -164,9 +178,11 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
164178
pos = vector(min_x_coord - 1, y_origin, z_origin)
165179
if append:
166180
numbers_list.append(draw_text(txt, pos, scene))
181+
numbers_list[len(numbers_list) - 1].height = get_text_size(scene)
167182
else:
168183
numbers_list[index].text = txt
169184
numbers_list[index].pos = pos
185+
numbers_list[index].height = get_text_size(scene)
170186
index += 1
171187

172188
# Y plane
@@ -176,9 +192,11 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
176192
pos = vector(x_origin, y_pos + padding, z_origin + padding)
177193
if append:
178194
numbers_list.append(draw_text(txt, pos, scene))
195+
numbers_list[len(numbers_list) - 1].height = get_text_size(scene)
179196
else:
180197
numbers_list[index].text = txt
181198
numbers_list[index].pos = pos
199+
numbers_list[index].height = get_text_size(scene)
182200
index += 1
183201
# Draw the axis label at either the positive or negative side away from center
184202
# If sign = -1, draw off max side, if sign = 0 or 1, draw off negative side
@@ -189,9 +207,11 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
189207
pos = vector(x_origin, min_y_coord - 1, z_origin)
190208
if append:
191209
numbers_list.append(draw_text(txt, pos, scene))
210+
numbers_list[len(numbers_list) - 1].height = get_text_size(scene)
192211
else:
193212
numbers_list[index].text = txt
194213
numbers_list[index].pos = pos
214+
numbers_list[index].height = get_text_size(scene)
195215
index += 1
196216

197217
# Z plane
@@ -201,9 +221,11 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
201221
pos = vector(x_origin, y_origin - padding, z_pos + padding)
202222
if append:
203223
numbers_list.append(draw_text(txt, pos, scene))
224+
numbers_list[len(numbers_list) - 1].height = get_text_size(scene)
204225
else:
205226
numbers_list[index].text = txt
206227
numbers_list[index].pos = pos
228+
numbers_list[index].height = get_text_size(scene)
207229
index += 1
208230
# Draw the axis label at either the positive or negative side away from center
209231
# If sign = -1, draw off max side, if sign = 0 or 1, draw off negative side
@@ -214,7 +236,9 @@ def update_grid_numbers(focal_point, numbers_list, num_squares, scale, scene):
214236
pos = vector(x_origin, y_origin, min_z_coord - 1)
215237
if append:
216238
numbers_list.append(draw_text(txt, pos, scene))
239+
numbers_list[len(numbers_list) - 1].height = get_text_size(scene)
217240
else:
218241
numbers_list[index].text = txt
219242
numbers_list[index].pos = pos
243+
numbers_list[index].height = get_text_size(scene)
220244
index += 1

0 commit comments

Comments
 (0)