Vector normalization

后端 未结 1 1139
走了就别回头了
走了就别回头了 2020-12-07 03:38

The formula for half vector is (Hv) = (Lv + Vv) / |Lv+Vv|, where Lv is light vector, and Vv is view vector.

Am I doing this right in Python code?

Vvx         


        
相关标签:
1条回答
  • 2020-12-07 04:04

    This is misnamed. What you've written is simple vector addition of two vectors, with the result being a normalized unit vector.

    Here's how I'd do it:

    import math
    
    def magnitude(v):
        return math.sqrt(sum(v[i]*v[i] for i in range(len(v))))
    
    def add(u, v):
        return [ u[i]+v[i] for i in range(len(u)) ]
    
    def sub(u, v):
        return [ u[i]-v[i] for i in range(len(u)) ]
    
    def dot(u, v):
        return sum(u[i]*v[i] for i in range(len(u)))
    
    def normalize(v):
        vmag = magnitude(v)
        return [ v[i]/vmag  for i in range(len(v)) ]
    
    if __name__ == '__main__':
        l = [1, 1, 1]
        v = [0, 0, 0]
    
        h = normalize(add(l, v))
        print h
    
    0 讨论(0)
提交回复
热议问题