已知一条线段的两端点A(x1,y1),B(x2,y2)及线段外的任意一点P(px,py),设计一个程序找出线段中距离p最近的点

2023-05-16

#include<stdio.h>

typedef struct
{
	float x;
	float y;
}Point;

typedef struct
{
	Point p1;
	Point p2;
}Line_segment;

void initLine (Line_segment &L)
{
	Point p;
	if(L.p1.x>L.p2.x)
	{
		p=L.p1;
		L.p1=L.p2;
		L.p2=p;
	}
}

Point getNearstPoint(Line_segment L,Point P)
{
	Point nearest_p;
	float l_k = (L.p1.y-L.p2.y)/(L.p1.x-L.p2.x);//斜率
	float v_k = -1/l_k;//与线段垂直的斜率
	float h_x = (L.p1.y+v_k*P.x-P.y-l_k*L.p1.x)/(v_k-l_k);//求出线段对应的直线和过p点且与线段对应直线垂直的交点
	float h_y =v_k*(h_x-P.x)+P.y;
	if(h_x>L.p2.x)
	{	//交点的x大于右端端点的x,最近的点就是右端点
		nearest_p = L.p2;
	}else if(h_x<L.p1.x)
	{	//交点的x小于左端端点的x,最近的点就是左端点
		nearest_p = L.p1;
	}else
	{
		nearest_p.x=h_x;
		nearest_p.y = h_y;
	}
	return nearest_p;
}


int main() {
	Point P;
	P.x = 1;
	P.y = 1;
    Line_segment L;
	L.p2.x = 1;
	L.p2.y=3;
	L.p1.x =0;
	L.p1.y = 4;
    initLine(L);
    Point nearest_p = getNearstPoint(L,P);
    printf("intersection x is %f,y is %f", nearest_p.x, nearest_p.y);
	getchar();
}




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

已知一条线段的两端点A(x1,y1),B(x2,y2)及线段外的任意一点P(px,py),设计一个程序找出线段中距离p最近的点 的相关文章

  • python torch.optim.SGD

    torch optim sgd学习参数 torch入门笔记14 Torch中optim的sgd Stochastic gradient descent 方法的实现细节 pytorch中使用torch optim优化神经网络以及优化器的选择
  • python zero_grad()

    有两种方式直接把模型的参数梯度设成0 xff1a model span class hljs preprocessor zero span grad optimizer span class hljs preprocessor zero s
  • torch.topk

    torch kthvalue input k dim 61 None keepdim 61 False out 61 None gt Tensor LongTensor k xff1a 第k个最小元素 返回第k个最小元素 input k d
  • torch.normal()

    torch normal means std out 61 None 返回一个张量 xff0c 包含从给定参数means std的离散正态分布中抽取随机数 均值means是一个张量 xff0c 包含每个输出元素相关的正态分布的均值 std是
  • 台式机ubuntu18.04 x86_64 简单ROS版本安装及其他库编译

    本教程是用于只安装ros melodic ros base的情况下 xff0c 为了避免安装opencv3 2 xff0c 而只保留一个opencv3 4 10 xff0c 而一步步安装rqt xff0c cv bridge xff0c r
  • ubuntu 当前文件夹 文件个数

    ls l grep 34 34 wc l
  • python [:,::-1]

    In span class hljs number 33 span t 61 np array span class hljs string 1 2 3 4 5 6 7 8 9 span In span class hljs number
  • numpy.floor

    numpy floor x out 61 None where 61 True casting 61 39 same kind 39 order 61 39 K 39 dtype 61 None subok 61 True signatur
  • Perfdog玩转内存泄漏

    背景交代 最近QC同学在跑游戏的过程中发现玩的时间久了游戏会发生闪退 xff0c 经过和开发人员讨论后又搜集了一些信息 xff0c 最后排除了功能性bug的原因 一 判断是否是内存泄露 拿到真机 xff0c USB连接 xff0c 杀掉多余
  • LCD1602知识详解(很详尽的)

    1602液晶知识详解 xff1a 1 1602液晶基础 VSS xff1a 电源地信号引脚 xff1b VDD xff1a 电源信号引脚 xff1b VEE xff1a 液晶对比度调节引脚 xff0c 接0 5V以调节液晶的显示对比度 xf
  • 如何学习嵌入式软件

    什么是嵌入式 xff1f 嵌入式分为广义和狭义两种 广义的嵌入式就是片上系统 system on a chip xff0c 包括单片机 PSOC NIOS Microblaze等 而狭义的嵌入式就是ARM9 cortex A8等特定的跑操作
  • Raspberry Pi 4B 通过 MAVROS 实现从地面站远程连接飞控板

    Raspberry Pi 4B 通过 MAVROS 实现从地面站远程连接飞控板 0x00 为 RPi 刷写系统0x01 启动 Ubuntu0x02 使用 SSH 连接至 RPi0x03 更换软件源0x04 安装桌面环境 xff08 可选 x
  • LeetCode-T97-交错字符串(interleaving-string)

    题目 原题链接 题目描述 xff1a 给定三个字符串 s1 s2 s3 验证 s3 是否是由 s1 和 s2 交错组成的 样例 case1 输入 s1 61 aabcc s2 61 dbbca s3 61 aadbbcbcac 输出 tru
  • LeetCode-T167-两数之和 II - 输入有序数组(two-sum-ii-input-array-is-sorted)

    题目 原题链接 题目描述 xff1a 给定一个已按照升序排列 的有序数组 xff0c 找到两个数使得它们相加之和等于目标数 函数应该返回这两个下标值 index1 和 index2 xff0c 其中 index1 必须小于 index2 说
  • LeetCode-T95-不同的二叉搜索树 II(unique-binary-search-trees-ii)

    题目 题目链接 题目描述 给定一个整数 n xff0c 生成所有由 1 n 为节点所组成的 二叉搜索树 样例 case1 输入 xff1a 3 输出 xff1a 1 null 3 2 3 2 null 1 3 1 null null 2 2
  • 主从机时间同步

    安装 服务器和客户端都安装 sudo apt get install ntpsudo apt get install ntpdate 服务器端 配置文件设置 运行sudo vim etc ntp conf在文件末尾加入如下几行代码 rest
  • 判断两条线段是否相交(三种算法)

    转载于 xff1a http blog csdn net rickliuxiao article details 6259322 算法1 xff1a cpp view plain copy alg 1 struct Point double
  • 朱、刘算法:求最小树形图权值个人理解+个人详解【最小树形图模板】

    什么是最小树形图 xff1f 相信大家如果会过来看这篇文章 xff0c 想必也应该对最小生成树有所了解的 xff0c 最小生成树求的是无向图的一颗生成树的最小权值 我们的最小树形图就是来解决一个有向图的一颗生成树的最小权值 xff0c 对于
  • Floyd最小环算法

    问题描述 xff1a 给你一张无向图 xff0c 定义环为从i出发到达j然后从j返回i并且所有点都只经过一次 xff08 最少为3个点 xff09 xff0c 求所有环当中经过路径最小的环 算法描述 xff1a 首先容易想到的是暴力来枚举环
  • O(1)快速乘

    求两个数相乘超过long long取摸的快速运算O 1 inline long long multi long long x long long y long long mod long long tmp 61 x y long long

随机推荐