向量的長度(length),或者說大小(magnitude),一般記做‖⋅‖或|⋅|,它的計算方式非常簡單,用的就是大家耳熟能詳的畢氏定理。
計算向量的長度時,向量的兩個分量,就是直角三角形的兩個直角邊,而向量本身,就是直角三角形的斜邊。所以向量v=(vx, vy)的長度就會是
‖v‖ = (vx2 + vy2)0.5
向量的長度可以用pygame裡頭的length()
或magnitude()
來計算。下面這個例子,除了畫出畫面中心點到滑鼠游標位置間的線段外,也會在畫面左上角,畫出長邊長度等於該線段長度的長方形。
Example 1.5: Vector Magnitude
# python version 3.10.9
import sys
import pygame # version 2.3.0
pygame.init()
pygame.display.set_caption("Example 1.5: Vector Magnitude")
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
screen_size = WIDTH, HEIGHT = 640, 360
screen = pygame.display.set_mode(screen_size)
FPS = 60
frame_rate = pygame.time.Clock()
center = pygame.Vector2(WIDTH//2, HEIGHT//2)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.fill(WHITE)
mouse = pygame.Vector2(pygame.mouse.get_pos())
# 計算向量及其長度
vec = mouse - center
vec_length = vec.length()
# 畫線段
pygame.draw.line(screen, BLACK, center, mouse)
# 畫長方形
rectangle = pygame.Rect(0, 0, vec_length, 10)
pygame.draw.rect(screen, BLACK, rectangle)
pygame.display.update()
frame_rate.tick(FPS)