已知线段上某点与起点的距离,求该点的坐标
文章目录
- 1. 概述
- 2. 实现
1. 概述
在实际进行空间几何计算的时候,很难确定直线的方向向量,一般都是知道线段的起点OOO和终点EEE。那么显然方向向量为D=E−OD=E-OD=E−O。这时,根据射线的向量方程,线段上某一点P为:
P=O+tDP=O+tDP=O+tD
很显然,这个t值就确定了线段上PPP的位置。在方向向量由起止点确定,且点在线段内的情况下,t的取值范围为0到1:取值为0时就是起点OOO,取值为1时就是终点EEE。进一步,根据相似三角形原则,如果知道PPP点与起点OOO的距离为d,则t的取值为:
t=dMod(D)t = \frac{d}{Mod(D)}t=Mod(D)d
其中Mod(D)是向量的模,也就是线段的长度。
2. 实现
具体的C++实现代码如下:
#include <iostream>using namespace std;// 2D Point
struct Vector2d
{public:Vector2d(){}Vector2d(double dx, double dy){x = dx;y = dy;}// 矢量赋值void set(double dx, double dy){x = dx;y = dy;}// 矢量相加Vector2d operator + (const Vector2d& v) const{return Vector2d(x + v.x, y + v.y);}// 矢量相减Vector2d operator - (const Vector2d& v) const{return Vector2d(x - v.x, y - v.y);}//矢量数乘Vector2d Scalar(double c) const{return Vector2d(c*x, c*y);}// 矢量点积double Dot(const Vector2d& v) const{return x * v.x + y * v.y;}//向量的模double Mod() const{return sqrt(x * x + y * y);}double x, y;
};void CalPointFromLineWithDistance(const Vector2d & O, const Vector2d & E, double d, Vector2d& P)
{Vector2d D = E - O; double t = d / D.Mod();P = O + D.Scalar(t);
}int main()
{Vector2d O(1.0, 2.4);Vector2d E(10.2, 11.5);double d = 5;Vector2d P;CalPointFromLineWithDistance(O, E, d, P);cout << "计算的点为:" << P.x<<'\t' << P.y << '\n'; cout << "验算距离是否为"<<d<<":" <<(P-O).Mod()<< '\n';
}
运行结果如下所示:
已知线段上某点与起点的距离,求该点的坐标相关推荐
- java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...
要求:地球的平均半径为6371千米,已知地球上两个城市A.B的经度和纬度,编程序求出这两个城市之间的地面距离. 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2). 由空间解析几何及向量知 ...
- 【C#】已知圆心上的三点求圆心
已知圆心上的三点:,, ,求圆心: 把三点坐标圆的方程: 得: 把 展开整理得: 令 ; ; , , , 求 求 把 移项整理得: 把 移项整理得: 还原代入式子: 整理结果 简化: 其中: ...
- 已知直线上两点求其一般式
已知直线上两点P1 P2,求直线的一般式方程. 已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合.求该直线的一般式方程AX+BY+C=0 解当x1=x2时,直线方程为x- ...
- 已知空间一点到另外两点直线的距离
转自:http://www.cnblogs.com/clarkustb/archive/2008/11/04/1326500.html 已知空间一点到另外两点直线的距离 设空间中的三点为M1,M2,M ...
- 两点间距离公式计算机,已知两点经纬度,用excel计算两点距离的公式?(转
已知两点经纬度,用excel计算两点距离的公式?(转 (2008-08-03 17:51:26) 标签: 杂谈 用EXCEL进行高斯投影换算 从经纬度BL换算到高斯平面直角坐标XY(高斯投影正算),或 ...
- C++实现已知二叉树前序遍历和中序遍历,求后序遍历
C++实现已知二叉树前序遍历和中序遍历,求后序遍历 一.基本概念 1.先序遍历(NLR)可以确定二叉树的父子结点: 2.中序遍历(LNR)可以确定二叉树的左右子树: 3.后序遍历(LRN)可以确定二叉 ...
- java jts获取线上任意一点到起点的距离
java jts获取线上任意一点到起点的距离 近期项目要求计算某段公路上一辆车的运行轨迹,通过路上的设备实时获取车辆的经纬度信息并发送到后台接收. 抽象出来就是获取线上任意一点到起点的距离,按照一定每 ...
- Java 通过已知点的经纬度,相对角度,距离计算另一点的经纬度
问题背景:自己在使用高德地图时没有发现通过已知点经纬度,角度,距离计算另一点经纬度的方法,所以只好自己实现了.查询之后发现国内的博客基本都是计算两点距离,计算点到线距离的距离等,有几篇也都是C语言形式 ...
- 给定一个二维 0-1 矩阵,其中 1 表示陆地,0 表示海洋,每个位置与上下左右相连。已知矩阵中有且只有两个岛屿,求最少要填海造陆多少个位置才可以将两个岛屿相连。
给定一个二维 0-1 矩阵,其中 1 表示陆地,0 表示海洋,每个位置与上下左右相连.已知矩阵中有且只有两个岛屿,求最少要填海造陆多少个位置才可以将两个岛屿相连. 输入是一个二维整数数组,输出是一个非 ...
- 已知曲线上三点,如何求中间一点的法向量。
如下图,已知 A.B.C 三个点,求 B 点的 法向量,即(fCosSita, fSinSita),Sita 为 法线按逆时针方向和水平方向的夹角. 先计算线段AB的单位垂线段2,再计算线段BC 的单 ...
最新文章
- 【6月活动】投稿换T恤!只要你愿意分享!这件酷炫的T恤就是你的~!!
- libsvm2.9数据格式
- 成功解决Exception “unhandled ImportError“cannot import name ‘imread‘ from ‘scipy.misc‘
- 介绍 Java 平台的 Jazzy:一种新的拼写检查器 API
- Dubbo(三)之Spring zookeeper集成
- pandas 每一列相加_Python3 numpy amp; pandas 学习笔记
- 【JVM】javap命令行分析揭示boolean的本质的虚拟机指令
- 15 CT04创建特性程序DUMP解决方法
- Command line is too long. Shorten command line for Application or also for Spring Boot default...
- JAVA支付宝蚂蚁金服开放平台沙箱
- Ubuntu 16.04 快捷键截图
- 从贫穷到富有——我的修行之路
- python头歌--文件翻转
- SAP SHDB(BDC)心得
- Information Gain 计算 python实现
- 小红书商业生态产品负责人精卫:全面解锁小红书达人营销新玩法
- Ubuntu上nc的安装与使用
- 学习笔记15--机器人操作系统
- js 中国标准时间,时间戳 ,yyyy-mm-dd格式之前相互转换
- 风速风向 UV 相互转换
热门文章
- Enhancement spot 的实现
- kilo meg giga tera peta exa zetta yotta
- SecureCRT远程操作linux系统
- 用户活跃、留存、流失,终于讲清楚了!
- 照片拼图软件:Picture Collage Maker for Mac
- nginx代理 域名重定向
- java: 不兼容的类型: java.lang.Long无法转换为java.lang.Intege
- 对 Python 代码使用的词语标记化器 tokenize,你懂了吗?【Python|标准库|tokenize】
- TCP 糊涂窗口综合症
- 论文中的 w.r.t. 和 i.e. 是什么意思