点到直线垂足坐标c语言,平面坐标里计算点到线段的垂足问题

2023-10-25 09:59

本文主要是介绍点到直线垂足坐标c语言,平面坐标里计算点到线段的垂足问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如图,以左上为原点的坐标图,坐标都为正

bVcLHTm

已知任意直线的点A,B, 和直线外一点C

目前用向量法还是直线方程的方法,然后都有偏移的情况 。

向量法结果在A点,直线方程结果在CB线上。

(另外线AB方向是不确定的,可能是AB也可能是BA, 可能是各种方向上)

现在的方法有时是正常的,有时是错误的, 图上是错误时的用例

向量法// 求垂足座标, C(x0,y0), A(x1, y1) B(x2, y2)

func VerticalAix(x0, y0, x1, y1, x2, y2 int) (int, int) {

dx := x1 - x2

dy := y1 - y2

if math.Abs(float64(dx)) < 0.00000001 && math.Abs(float64(dy)) < 0.00000001 {

return x0, y0

}

u := (x0-x1)*(x1-x2) +

(y0-y1)*(y1-y2)

u = u / ((dx * dx) + (dy * dy))

x := x1 + u*dx

y := y1 + u*dy

return x, y

}

直线方程// 求垂足座标 C(x0,y0), A(x1, y1) B(x2, y2)

func VerticalAix(x0, y0, x1, y1, x2, y2 int) (int, int) {

if x2-x1 == 0 {

return x2, y0

}

// 算斜率

k1 := (y2 - y1) / (x2 - x1)

// 垂足x坐标

x := (math.Pow(float64(k1), 2)*float64(x1) + float64(k1*(y0-y1)) + float64(x0)) / (math.Pow(float64(k1), 2) + 1)

y := float64(k1)*(x-float64(x1)) + float64(y1)

return int(x), int(y)

}

这篇关于点到直线垂足坐标c语言,平面坐标里计算点到线段的垂足问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/281786

相关文章

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ