XYZ点操作常用方法

判断两个向量是否平行(包含方向相反) 

/// <summary>
        /// 判断两个向量是否平行,包含方向相反
        /// 通过Normalize()将两个向量单位正交化,这样就可以通过比较这两个单位向量的大小
        /// 或者说比较这两个点是否重合来比较。
        /// </summary>
        /// <param name="vt1"></param>
        /// <param name="vt2"></param>
        /// <param name="dDist"></param>
        /// <returns></returns>
        public static bool IsParallel(XYZ vt1, XYZ vt2, double dDist = 0.001)
        {
            return vt1.Normalize().DistanceTo(vt2.Normalize()) < dDist || vt1.Normalize().DistanceTo(-vt2.Normalize()) < dDist;
        }

判断两个向量是否同向 

/// <summary>
        /// 判断两个向量是否同向
        /// </summary>
        /// <param name="vt1"></param>
        /// <param name="vt2"></param>
        /// <param name="dDist"></param>
        /// <returns></returns>
        public static bool IsSameDirection(XYZ vt1, XYZ vt2, double dDist = 0.001)
        {
            return vt1.Normalize().DistanceTo(vt2.Normalize()) < dDist;
        }

判断两个向量是否垂直 

向量的点乘:a * b

公式:a * b = |a| * |b| * cosθ 
点乘又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。 
点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大。

/// <summary>
        /// 判断两个向量是否垂直,通过判断两个向量的点乘(若等于0说明垂直)
        /// </summary>
        /// <param name="vt1"></param>
        /// <param name="vt2"></param>
        /// <param name="dDist"></param>
        /// <returns></returns>
        public static bool IsPerpendicular(XYZ vt1, XYZ vt2, double dDist = 0.001)
        {
            return Math.Abs(vt1.Normalize().DotProduct(vt2.Normalize())) < dDist;
        }

查找某集合是否包含某点,如果不包含就添加该点

用到List<T>.FindIndex 方法

该方法如果找到匹配值就返回从0开始的索引值,否则返回-1.注意里面的参数为predicate<T> match

public static void AddXYZ(List<XYZ> lstXYZ, XYZ pt, double dDist = 0.001)
        {
            if (lstXYZ.FindIndex((XYZ obj) => obj.DistanceTo(pt) < dDist) != -1)
            {
                return;
            }
            lstXYZ.Add(pt);
        }

 查找某集合是否包含某点,找到就删除该点

public static void DelXYZ(List<XYZ> lstXYZ, XYZ pt, double dDist = 0.001)
        {
            int num = lstXYZ.FindIndex((XYZ obj) => obj.DistanceTo(pt) < dDist);
            if (num != -1)
            {
                lstXYZ.RemoveAt(num);
            }
        }

比较两点是否是重合(利用它们的距离来判断)

public static bool Equal(XYZ pt1, XYZ pt2, double dDist = 0.001)
        {
            return pt1.DistanceTo(pt2) < dDist;
        }

判断某键值对是否含有由某两点构成的键值对

public static bool ContainXYZ(Dictionary<XYZ, XYZ> dict, XYZ pt1, XYZ pt2, double dDist = 0.001)
        {
            foreach (KeyValuePair<XYZ, XYZ> current in dict)
            {
                if ((current.Key.DistanceTo(pt1) < dDist && current.Value.DistanceTo(pt2) < dDist) || (current.Key.DistanceTo(pt2) < dDist && current.Value.DistanceTo(pt1) < dDist))
                {
                    return true;
                }
            }
            return false;
        }

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cie1931是一种色彩空间模型,用于描述人类的色彩感知。它将所有可见光的颜色分为三个通道:CIE XYZXYZ表示颜色空间的三个坐标轴,分别代表了红、绿和蓝颜色的亮度。在CIE 1931色彩空间模型中,我们可以通过将RGB色彩值转换为XYZ色彩值来实现颜色的转换。 要在线进行cie1931xyz转换xyz,我们可以利用一些在线工具或软件。这些工具通常提供用户友好的界面,使得转换过程更方便和直观。 具体操作步骤如下: 1. 打开一款在线cie1931xyz转换xyz的工具或软件。 2. 在工具界面上找到相应的输入框,并将待转换的cie1931xyz值填入。 3. 击转换或计算按钮,等待工具完成转换操作。 4. 工具完成转换后,会在界面上显示出转换后的xyz值。 5. 将转换后的xyz值复制或记录下来,以便在需要的时候使用。 在线cie1931xyz转换xyz工具的使用非常容易和快捷,它们可以帮助我们快速转换颜色数值,以适应不同的需求。无论是从cie1931xyz转换xyz,还是其他颜色空间模型的转换,这些工具都可以帮助我们更加方便地实现色彩值的转换和应用。 ### 回答2: cie1931是一种使用于计算机图形显示设备的色彩空间,而XYZ则是一种用于表示人类感知的色彩空间。cie1931xyz转换xyz在线是指将cie1931色彩空间中的颜色值转换为xyz色彩空间中的颜色值。这个过程可以通过计算机算法实现。 在转换的过程中,首先需要获得cie1931色彩空间中的颜色值,常用的方式是通过色度图表或者光谱测量获得。然后,利用转换矩阵将cie1931色彩空间中的颜色值转换为xyz色彩空间中的颜色值。转换矩阵是根据cie1931和xyz色彩空间之间的关系而确定的,通过矩阵乘法运算可以将颜色值进行转换。 转换完成后,就可以得到xyz色彩空间中的颜色值。xyz色彩空间通常用于表示人类感知的颜色,其中的x、y、z坐标分别表示红、绿、蓝三个基本颜色分量,具体数值表示对应颜色分量的亮度。 cie1931xyz转换xyz在线可以帮助人们在计算机图形显示设备中准确地显示出想要的颜色。比如,当我们在计算机上编辑照片时,经过转换可以更准确地获得我们所希望的对应颜色,从而提高图像的质量和真实性。 总而言之,cie1931xyz转换xyz在线是一种将cie1931色彩空间中的颜色值转换为xyz色彩空间中的颜色值的过程,通过这个转换可以使计算机图形显示设备更准确地显示人类感知的颜色。 ### 回答3: CIE 1931 XYZ色彩空间是一种三原色色彩模型,用于描述人眼对颜色的感知。而将CIE 1931 XYZ颜色坐标转换为RGB颜色空间可以实现在线转换的目的。 在转换过程中,需要使用某种算法将XYZ坐标值映射到RGB的三个分量上。最常用的转换算法是线性变换和矩阵变换。线性变换是通过将XYZ坐标值与一组系数相乘,然后将结果限制在0到1的范围内得到RGB的三个分量。而矩阵变换则是通过将XYZ坐标值与一个矩阵相乘,得到RGB的三个分量。 具体的转换公式如下: R = 3.2406 * X - 1.5372 * Y - 0.4986 * Z G = -0.9689 * X + 1.8758 * Y + 0.0415 * Z B = 0.0557 * X - 0.2040 * Y + 1.0570 * Z 其中,X、Y、Z是CIE 1931 XYZ的三个分量,R、G、B则是转换后的RGB的三个分量。 通过在线的工具或编程语言,可以将给定的XYZ值代入上述公式,计算出对应的RGB值。这样,就可以实现将CIE 1931 XYZ颜色坐标转换为RGB颜色空间的在线转换。这一转换过程在图像处理、颜色校准、色彩管理等领域具有广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值