Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra cosin góc phương có vẽ được đường thẳng không (Python)

Bài toán: Cho 3 cosin góc phương l, m, n trong không gian 3D. Kiểm tra xem chúng có thể là cosin góc phương của một đường thẳng hay không.

Điều kiện toán học

Cosin góc phương của vector thỏa mãn: l² + m² + n² = 1.
Do sai số làm tròn máy tính, kiểm tra giá trị tuyệt đối của hiệu số với 1 có nhỏ hơn ngưỡng cho phép (epsilon).

Triển khai Python

def solve(l, m, n):
    angle = l * l + m * m + n * n
    angle = round(angle, 8)
    return abs(1 - angle) < 0.0001

# Test
print(solve(0.42426, 0.56568, 0.7071))  # True: vector (3,4,5) chuẩn hóa
# |(3,4,5)| = √50 ≈ 7.071
# l=3/7.071≈0.424, m=4/7.071≈0.566, n=5/7.071≈0.707
# l²+m²+n² = 9/50 + 16/50 + 25/50 = 50/50 = 1
print(solve(0.5, 0.5, 0.5))             # False: 0.25+0.25+0.25=0.75 ≠ 1
print(solve(1, 0, 0))                   # True: vector trục x

Kết quả

True

Giải thích

  • Tính tổng bình phương 3 cosin góc.
  • Làm tròn 8 chữ số thập phân để giảm sai số floating point.
  • Kiểm tra |1 - sum| < 0.0001 (epsilon = 1e-4).
  • Độ phức tạp: O(1).