3D空间位置计算 — 线与面的交点

2023-05-16


/***********************************************************************************************************\
	线与面的交点

	@PlanePt:平面内一点
	@PlaneVector:平面的法向量
	@LinePt:直线上一点
	@LineVector:直线的向量
************************************************************************************************************/
Point3d_s point2PlaneProjectionPoint(Point3d_s PlanePt, double PlaneVector[], Point3d_s LinePt, double LineVector[])
{
	Point3d_s returnPoint;	//(x,y,z)
	double vp1, vp2, vp3, n1, n2, n3, v1, v2, v3, m1, m2, m3, t, vpt;

	vp1 = PlaneVector[0];  //平面的法线向量	x,y,z//
	vp2 = PlaneVector[1];
	vp3 = PlaneVector[2];

	n1 = PlanePt.x;  //平面经过的一点坐标
	n2 = PlanePt.y;
	n3 = PlanePt.z;

	v1 = LineVector[0];  //直线的方向向量	//【这个地方需要再次计算求出】
	v2 = LineVector[1];
	v3 = LineVector[2];

	m1 = LinePt.x;  //直线经过的一点坐标
	m2 = LinePt.y;
	m3 = LinePt.z;
	vpt = v1 * vp1 + v2 * vp2 + v3 * vp3;


	//首先判断直线是否与平面平行
	if (vpt == 0)
	{
		returnPoint.x = -999;
		returnPoint.y = -999;
		returnPoint.z = -999;
	}
	else
	{
		t = ((n1 - m1) * vp1 + (n2 - m2) * vp2 + (n3 - m3) * vp3) / vpt;
		returnPoint.x = m1 + v1 * t;
		returnPoint.y = m2 + v2 * t;
		returnPoint.z = m3 + v3 * t;
	}

	printf("pointtoPlaneProjectionPoint.xyz=  %f,  %f,  %f\n", returnPoint.x, returnPoint.y, returnPoint.z);
	//getchar();

	return returnPoint;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D空间位置计算 — 线与面的交点 的相关文章

  • 通用链接-Universal Link

    前言 通用链接与URL Scheme的用途类似 xff0c 主要是实现从外部唤醒App xff0c 并执行某些操作 xff08 如 xff1a 打开指定页面 xff09 由于使用URL Scheme xff08 wechat path qu
  • CocoaPods - podspec私有库配置

    工程引用 Podfile中添加以下cocoaPods指令 xff0c 在终端输入pod install 构建 source 39 https github com zhengmiaokai Specs git 39 pod 39 JPUti
  • 【转】面向对象分析方法

    一 什么是OOA xff1f Object Oriented Analysis 面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后 xff0c 按照面向对象的思想来分析问题 OOA与结构化分析有较大的区别 OOA所强调的是在系
  • Python图形用户界面Tkinter标准色彩颜色背景色大全

    Python图形用户界面Tkinter标准色彩颜色背景色大全 前段时间刚开始学Tkinter xff0c 后来想做一个漂亮的GUI界面 xff0c 但是自己对颜色的词汇储备有限 xff0c 所以没能顺利完成 xff0c 今天在网上查了很多信
  • linux CentOS 7.4下 mysql5.7.20 密码改简单的方法

    mysql升级5 7版本以后 xff0c 安全性大幅度上升 但是呢 带复杂的记不住 额额 本来脑子就不好使 xff0c 还记那么复杂 xff0c 尤其是本地就更没必要 xff0c 还是root方便 进入mysql mysql gt SHOW
  • linux centos7下源码 tar安装mysql5.7.30或mysql5.7.22 图文详解

    之前用的rpm安装的每次安装都是最新的 xff0c xff0c xff0c 导致每次版本不统一 现在用tar包安装5 7 22和5 7 20一样的 xff08 5 7 30安装也一样 xff09 xff08 下载最好下载最新版本 mysql
  • 10-13 查询各专业学生的平均成绩(MSSQL)

    本题目要求编写SQL语句 xff0c 统计各专业的学生选课的平均成绩 xff0c 如果某专业尚未有任何学生选修课程或成绩为空时 xff0c 平均分计为0 输出结果集按照major表中的mno升序排序 提示 xff1a MSSQLServer
  • idea重装后打不开,点起来没反应(难受)

    嗨兄弟们 xff0c 遇到我就停下吧 xff0c 我来帮你解决这个烦人的问题 xff0c 没毛病铁质 一 出现的经过 卸载完idea2021 3 3后重新安装idea2022 3 1 xff0c 安装完后点击没有一点反应 我以为是版本太新了
  • yapi启动命令

    Yapi 启动命令 xff1a 1 查询mongoDB id PID 61 netstat nlp grep 27017 awk 39 print 7 39 awk F 39 39 39 NR 61 61 1 print 1 39 echo
  • Debian 10安装配置

    拥有sudo权限 su gedit etc sudoers nano etc sudoers 找到 root ALL 61 ALL ALL ALL 之后在下面添加一行即可 xxx 表示用户名 Host alias specification
  • root密码忘记了怎么办?不要慌,一招教你解决!!!(注:红色加粗部分可直接复制粘贴使用)

    方法一 init方法 1 启动VM虚拟机 2 GRUB2启动屏显时 xff0c 按下e键进入编辑模式 3 在linux所在参数行尾添加以下内容 xff0c 然后按Ctrl 43 X 执行 xff08 1 xff09 将ro修改为 rw xf
  • 黑苹果无线能用上蓝牙5.2及WIFI 6,还能同时支持隔空投送嘛?有完美方案嘛?

    很多小伙伴对黑苹果博通无线网卡蓝牙和网速不满意 xff0c 没有WIFI 6 xff0c 没有蓝牙5 x 黑苹果博通无线网卡最高仅支持蓝牙4 2 比如BCM943602CS xff08 早期4 1 xff0c 后出才有4 2 BCM9436
  • 理解全加器(进来学小学加法)

    上图是一个典型的全加器 什么是全加器 xff1f 全加器就是考虑进位的加法运算器 一位全加器有Ci 1 Ai Bi Si Ci 输入端有Ci 1 Ai Bi Ci 1 xff1a 前一次运算后是否有进位 xff0c 有进位则为1 xff0c
  • 如何使用dosbox运行程序——步骤详解

    我在e盘中创建了一个asm文件夹 xff0c 并把masm文件夹放在里面 将源代码写完后命名为test1 dsm放在了masm文件夹中 之后步骤为 xff1a 1 双击打开dosbox 2 输入mount c e asm表示打开asm文件夹
  • 字扩展,位扩展和字位扩展

    位扩展 位扩展指的是用多个存储器器件对字长进行扩充 xff0c 指的是用多个存储器器件对字长进行扩充 xff0c 如用2个16KX4位芯片组成16KX8位的存储器 位扩展的连接方式是将多片存储器的地址 片选CS 读写控制端R W相应并联 x
  • 创建了Cisco账号,Cisco 软件却无法登录

    明明注册完了思科账户 xff0c 依旧无法使用软件 xff0c 提示Sorry we can t find a NetAcad account associated with this Cisco account xff0c 怎么回事呢 x
  • 最简单的8421码计算方法

    很简单 0 9 就是按照二进制来的 0 0000 1 0001 9 1001 超出9以后把10进制情况下的数按照个十百千万的位数拆开 xff0c 并把每一位按照8421转换后合起来 10 10000 11 10001 19 11001 20
  • 3.15—Python作业

    1 已知一个字符串为 hello world yoyo xff0c 如何得到一个队列 hello world yoyo xff1f a 61 39 hello world yoyo 39 b 61 a split 39 39 print b
  • 线性表划分问题

    有一个顺序表L xff0c 其元素为整形数据 xff0c 设计一个算法 xff0c 将L中所有小于表头元素的整数放在前半部分 xff0c 大于表头元素的整数放在后半部分 算法思想 xff1a 先将L的 第一个元素存于变量temp中 xff0
  • ubuntu/Linux下 提示“conda:未找到命令”

    echo span class token string 39 export PATH 61 34 root anaconda3 bin PATH 34 39 span span class token operator gt gt spa

随机推荐