3d世界坐标转换到某个二维平面。

有个功能需要截取某个平面的点云数据,然后计算宽高。需要将3d点投影到二维平面上。

csharp 复制代码
        //将3d坐标点转换为2d
        /**
         * 法向量(A, B, C)
         * 常量D
         * 原点x0,y0,z0
         * 方向向量(vx, vy, vz)
         * 投影点(x,y,z)
         * 
public static double[] Convert3DPointTo2D(
            double A, double B, double C, double D,
            double x0, double y0, double z0,
            double vx, double vy, double vz,
            double x, double y, double z)
        {
            // 首先,找到平面P上的两个正交向量
            // 我们可以使用平面的法向量(A, B, C)和L1的方向向量(vx, vy, vz)的叉积来找到平面上的一个向量
            double ux = B * vz - C * vy;
            double uy = C * vx - A * vz;
            double uz = A * vy - B * vx;

            // 规范化这个向量得到U(我们2D坐标系统中的x轴)
            double lengthU = Math.Sqrt(ux * ux + uy * uy + uz * uz);
            ux /= lengthU;
            uy /= lengthU;
            uz /= lengthU;

            // 要找到第二个向量,我们可以取U和平面的法向量的叉积
            double vx2 = uy * C - uz * B;
            double vy2 = uz * A - ux * C;
            double vz2 = ux * B - uy * A;

            // 规范化这个向量得到V(我们2D坐标系统中的y轴)
            double lengthV = Math.Sqrt(vx2 * vx2 + vy2 * vy2 + vz2 * vz2);
            vx2 /= lengthV;
            vy2 /= lengthV;
            vz2 /= lengthV;




            // 现在,我们可以将点(x, y, z)投影到平面上,并计算其在2D系统中的坐标
            // 计算点到平面的投影
            double t = -(A * x + B * y + C * z + D) / (A * A + B * B + C * C);
            double xp = x + A * t;
            double yp = y + B * t;
            double zp = z + C * t;

            // 计算投影点在平面坐标系统中的2D坐标(u, v)
            double u = (xp - x0) * ux + (yp - y0) * uy + (zp - z0) * uz;
            double v = (xp - x0) * vx2 + (yp - y0) * vy2 + (zp - z0) * vz2;
            return new double[] { u, v };
        }
相关推荐
geng_zhaoying2 小时前
在VPython中使用向量计算3D物体移动
python·3d·vpython
中科米堆2 小时前
机械行业案例 | 大型钢部件三维扫描3D尺寸检测解决方案-CASAIM
3d·3d全尺寸检测
top_designer1 天前
Substance 3D Stager:电商“虚拟摄影”工作流
人工智能·3d·设计模式·prompt·技术美术·教育电商·游戏美术
tealcwu1 天前
【Unity小技巧】如何将3D场景转换成2D场景
3d·unity·游戏引擎
3DVisionary1 天前
基于XTOM蓝光扫描的复杂中小尺寸零件3D形貌重建与全尺寸误差分析
数码相机·3d·质量控制·3d尺寸检测·xtom蓝光扫描·复杂结构零件·中小尺寸测量
2401_863801461 天前
最常见的 3D 文件类型
3d
3DVisionary1 天前
小尺寸手机零部件3D检测:高精度3D扫描如何助力高效质量控制
3d·智能手机·质量控制·精密测量·3d扫描检测·手机零部件·小幅面扫描
二川bro2 天前
第47节:机器学习:3D姿态估计与动画驱动
人工智能·机器学习·3d
中科米堆2 天前
冲压钣金件案例 | 三维扫描3d偏差检测分析解决方案-CASAIM
人工智能·3d·3d全尺寸检测
点PY2 天前
TR3D: Towards Real-Time Indoor 3D Object Detection论文精读
人工智能·目标检测·3d