目录

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 };
        }
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
MediaTea2 小时前
Ae 效果详解:3D 眼镜
3d
知来者逆10 小时前
探索生成式AI在游戏开发中的应用——3D角色生成式 AI 实现
人工智能·深度学习·神经网络·计算机视觉·3d·游戏开发
木木黄木木20 小时前
html5炫酷3D文字效果项目开发实践
前端·3d·html5
帮帮志1 天前
05.unity 游戏开发-3D工程的创建及使用方式和区别
3d·unity·游戏引擎
在下胡三汉1 天前
gltf unity-Unity中Gltf模型的使用与优化技巧
3d
AI是这个时代的魔法1 天前
$R^n$超平面约束下的向量列
人工智能·机器学习·平面
前端极客探险家2 天前
如何用 Three.js 和 Vue 3 实现 3D 商品展示
javascript·vue.js·3d
余人于RenYu2 天前
3D 地图渲染-区域纹理图添加
3d·高德地图
小西几哦2 天前
3D点云配准RPM-Net模型解读(附论文+源码)
人工智能·pytorch·3d
木木黄木木2 天前
css炫酷的3D水波纹文字效果实现详解
前端·css·3d