计算点在线上的投影坐标

news/2024/11/30 0:31:28/

如题

计算点到线上的垂点,首先明确:
该线段必须给出确切的起始点和终点, 而不是一个向量,因为一个向量并不能代表一个线段。
所以参数列表如下:

Vector3 VerticalPoint(Vector3 point, Vector3 lStart, Vector3 lEnd);

下图中蓝色标记的是未知量,黑色为已知量
求点target的位置

数学方法求解:

求解过程

  • 因为pointLStartLEnd都已知,
    所以向量vector = LEnd- LStartguideLine = point - LStart 都已知
    首先由向量的点积公式可知
    v e c t o r ⋅ g u i d e L i n e = ∣ v e c t o r ∣ ∣ g u i d e L i n e ∣ c o s θ vector ·guideLine = |vector||guideLine|cosθ vectorguideLine=vector∣∣guideLinecosθ
  • 又因为需要的是点到线段上的垂点
    且由直角三角形的定义可知
    我们可以求得|target - LStart|长度,
    |guideLine| * cosθ
    由此即可得到目标点相对LStart的偏移量
  • 由向量性质可知
    向量归一化后其长度为一,所以我们可以将vector向量转化为单位向量
    因为|vector.normalize| == 1,所以当vector = vector.normalize ,则|vector| == 1
    此时我们的公式就化为了:
    v e c t o r . n o r m a l i z e ⋅ g u i d e L i n e = ∣ g u i d e L i n e ∣ c o s θ vector.normalize ·guideLine = |guideLine|cosθ vector.normalizeguideLine=guideLinecosθ
    接着:
    ∣ t a r g e t − L S t a r t ∣ = ∣ g u i d e L i n e ∣ c o s θ = v e c t o r . n o r m a l i z e ⋅ g u i d e L i n e = 偏移量 |target - LStart| = |guideLine|cosθ = vector.normalize · guideLine = 偏移量 targetLStart=guideLinecosθ=vector.normalizeguideLine=偏移量
    此时vector.normalizeguideLine 均可知
    所以 target = LStart + vector * 偏移量

C#代码

public static Vector3 VerticalPoint(Vector3 point, Vector3 lStart, Vector3 lEnd)
{Vector3 guideLine = point - lStart;Vector3 vector = lEnd - lStart;//float magnitude = vector.magnitude;	vector = vector.normalized;float num2 = Vector3.Dot(vector, guideLine);//有需要的话可以将值限制在范围之间,比如这里限制在 线段内部//float num2 = Mathf.Clamp(Vector3.Dot(vector, guideLine), 0f, magnitude);	return lStart + (vector * num2);
}

http://www.ppmy.cn/news/263844.html

相关文章

arcgis投影/定义投影

目标:画一个北极上空的俯瞰 地理坐标系和投影坐标系的区别 arcgis帮助:什么是地理坐标系、投影坐标系 地理坐标系是球面坐标,参考平面是椭球面,坐标单位是经纬度;投影坐标系是平面坐标系,参考平面是水平…

css投影

一、单侧投影 <style>.box {width: 80px;height: 40px;background: orange;/* 第四个参数&#xff1a;扩张半径&#xff0c;根据指定的值去扩大或缩小投影的尺寸 */box-shadow: 0 5px 5px -4px rgba(0, 0, 0, .5)}</style><div class"box"></di…

投影(Projections)

1. 投影&#xff08;Projections&#xff09; 1.1 投影到直线上&#xff08;Projection onto a Line&#xff09; P r o j L ( x ⃗ ) c v ⃗ x ⃗ − P r o j L ( x ⃗ ) i s o r t h o g o n a l t o v ⃗ ( x ⃗ − P r o j L ( x ⃗ ) ) ⋅ v ⃗ 0 ( x ⃗ − c v ⃗ ) ⋅…

智能计算机的功能有哪些功能,智能中央空调有哪些功能 智能中央空调功能介绍【详解】...

现在人们对中央空调的要求就是节能与舒适&#xff0c;希望在能耗低的同时又能保持室温与空气湿度&#xff0c;给居住者提供的温度。智能中央空调以节能舒适为目标&#xff0c;对中央空调所释放的能量进行回收利用&#xff0c;今天小编就来介绍一下智能中央空调有哪些功能 &…

中央空调控制系统的matlab仿真,中央空调变频智能控制系统设计

中央空调变频智能控制系统设计 随着我国经济的飞速发展,各类大型建筑如雨后春笋般涌现于各个城市的大街小巷,集中于这些建筑中的能耗在整个社会总能耗中所占的比重也呈明显的上升趋势,而有调查显示中央空调系统的能耗在商用建筑能耗中所占的比例可达50%到60%,在目前电力供应紧张…

智能空调APP开发(一键快速开发)

智能空调APP开发&#xff0c;智能空调APP一键快速开发。在我国高新科技水准不断提升&#xff0c;众多智能商品也发生在大家日常生活&#xff0c;给大家日常生活给予便捷&#xff0c;而智能家用电器也是司空见惯&#xff0c;但用户要想在日常生活中掌握智能家用电器功能&#xf…

智能房间改造[1]——Arduino控制美的空调(记录自己改造房间的过程)

所用硬件:Arduino UNO KY-005红外发射模块 用的库是IRremote github地址是:https://github.com/z3t0/Arduino-IRremote 美的空调采用的是红外R05d协议,看此博客之前最好先了解一下红外NEC协议。当然不了解也行&#xff0c;可能读起来有点困难…… 先说一下其一些波形规范! 有…

奥克斯携手360 互联网思想打造智能空调

4月14日音讯&#xff0c;2014年4月13日&#xff0c;奥克斯空调20周年庆典在宁波盛大举行&#xff0c;届时宣告正式与中国榜首大移动互联网安全公司—360打开深度协作。会上&#xff0c;360公司副总裁沈海寅表明&#xff0c;在移动互联网年代&#xff0c;应该用互联网思想来做互…