将3d坐标矢量归一化为介于0和1之间

问题描述 投票:3回答:2

我有一个庞大的3D坐标矢量,我想对其进行归一化,以便它们位于尺寸为[0,1] x [0,1] x [0,1]的立方体内(即每个x,y,坐标的z应该在0到1之间),我正在做的事情是将所有坐标除以此向量中3D坐标的最大长度,但是这样我就无法处理负值的坐标。谁能建议将这些坐标标准化的正确方法是什么?

3d coordinates normalization
2个回答
6
投票

只需将每个分量除以向量的长度:

长度= sqrt(x ^ 2 + y ^ 2 + z ^ 2)

所以您的归一化向量是:

v =(x /长度,y /长度,z /长度)


0
投票
import numpy as np


>>> v1 = np.array([[[-1,2,3], [4,5,6]]])
>>> v1
array([[[-1,  2,  3],
        [ 4,  5,  6]]])

>>> v1.shape
(1, 2, 3)

>>> scaled_unit = 1.0 / (np.max(v1) - np.min(v1))
>>> (v1 * scaled_unit) + scaled_unit
array([[[0.        , 0.42857143, 0.57142857],
        [0.71428571, 0.85714286, 1.        ]]])
© www.soinside.com 2019 - 2024. All rights reserved.