博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上
阅读量:6114 次
发布时间:2019-06-21

本文共 967 字,大约阅读时间需要 3 分钟。

 
///
 
<summary>
        
///
  p点到(a,b)点两所在直线的垂点坐标
        
///
 
</summary>
        
///
 
<param name="a">
直线上a点
</param>
        
///
 
<param name="b">
直线上b点
</param>
        
///
 
<param name="p">
</param>
        
///
 
<returns>
垂点坐标
</returns>
        
public 
static Vector2D GetVerticalPosition(Vector2D a, Vector2D b, Vector2D p)
        {
            
double fa = b.Y - a.Y;
            
double fb = a.X - b.X;
            
double fc = a.Y * b.X - a.X * b.Y;
            Vector2D vpt = 
new Vector2D();
//
垂足
            vpt.X = (fb * fb * p.X - fa * fb * p.Y - fa * fc) / (fa * fa + fb * fb);
            vpt.Y = (fa * fa * p.Y - fa * fb * p.X - fb * fc) / (fa * fa + fb * fb);
            
return vpt;
        }
        
///
 
<summary>
        
///
 p点是否在(a,b)两点所在直线上
        
///
 
</summary>
        
///
 
<param name="a"></param>
        
///
 
<param name="b"></param>
        
///
 
<param name="foot"></param>
        
///
 
<returns></returns>
        
public 
static 
bool DotIsOnLine(Vector2D a, Vector2D b, Vector2D foot)
        {
            
return Math.Min(a.X, b.X) <= foot.X && foot.X <= Math.Max(a.X, b.X) && Math.Min(a.Y, b.Y) <= foot.Y && foot.Y <= Math.Max(a.Y, b.Y);
        }

转载于:https://www.cnblogs.com/94cool/p/4654287.html

你可能感兴趣的文章
洛谷——P1596 [USACO10OCT]湖计数Lake Counting
查看>>
智力大冲浪
查看>>
JSONP实现跨域
查看>>
Python基础班---第一部分(基础)---Python基础知识---计算机组成原理
查看>>
虚拟机VMware 9安装苹果MAC OSX 10.8图文教程
查看>>
POJ3694 Network
查看>>
微信小程序开发-框架
查看>>
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>