c#求點(diǎn)到直線的投影點(diǎn)坐標(biāo)
點(diǎn)在指定直線的投影點(diǎn),即過(guò)點(diǎn)作一垂直于指定直線的直線,與指定直線的交點(diǎn)即為所求。這個(gè)問(wèn)題其實(shí)回歸到兩條垂直直線的交點(diǎn)問(wèn)題,回到最原始的初中幾何知識(shí),復(fù)習(xí)下
如圖示
首先我們明確下已知條件,指定直線上任一點(diǎn)A,直線斜率k,點(diǎn)C,求點(diǎn)B
說(shuō)到斜率,就有不存在的情況,如圖(2),顯然這種情況B的橫坐標(biāo)=A的橫坐標(biāo),B的縱坐標(biāo)=C的縱坐標(biāo)
本文重點(diǎn)討論第一種情況,其實(shí)也很簡(jiǎn)單,聯(lián)立兩條直線求解即可
直線AB方程式即y-yA=k*(x-xA)
∵兩條垂直直線的斜率乘積 = -1
∴由AB線斜率為k可知BC線斜率為-1/k,可知直線BC方程式為
y-yC=-1/k*(x-xC)
聯(lián)立方程組解得
xB = (k * xA+ xC / k + yC - yA) / (1 / k + k)
由xB代入BC方程即可得yB
/// <summary>
/// 求直線外一點(diǎn)到該直線的投影點(diǎn)
/// </summary>
/// <param name="pLine">線上任一點(diǎn)</param>
/// <param name="k">直線斜率</param>
/// <param name="pOut">線外指定點(diǎn)</param>
/// <param name="pProject">投影點(diǎn)</param>
protected void GetProjectivePoint(PointF pLine, double k, PointF pOut, ref PointF pProject)
{
if (k == 0) //垂線斜率不存在情況
{
pProject.X = pOut.X;
pProject.Y = pLine.Y;
}
else
{
pProject.X = (float)((k * pLine.X + pOut.X / k + pOut.Y - pLine.Y) / (1 / k + k));
pProject.Y = (float)(-1 / k * (pProject.X - pOut.X) + pOut.Y);
}
}
- 淺析c#中如何在form的webbrowser控件中獲得鼠標(biāo)坐標(biāo)
- 解決C#獲取鼠標(biāo)相對(duì)當(dāng)前窗口坐標(biāo)的實(shí)現(xiàn)方法
- C#簡(jiǎn)單獲取屏幕鼠標(biāo)坐標(biāo)點(diǎn)顏色方法介紹
- C#實(shí)現(xiàn)計(jì)算一個(gè)點(diǎn)圍繞另一個(gè)點(diǎn)旋轉(zhuǎn)指定弧度后坐標(biāo)值的方法
- c#封裝百度web服務(wù)geocoding api 、百度坐標(biāo)轉(zhuǎn)換示例
- C#中winform實(shí)現(xiàn)自動(dòng)觸發(fā)鼠標(biāo)、鍵盤(pán)事件的方法
- C# WinForm中Panel實(shí)現(xiàn)用鼠標(biāo)操作滾動(dòng)條的實(shí)例方法
- C#實(shí)現(xiàn)鼠標(biāo)移動(dòng)到曲線圖上顯示值的方法
- C#實(shí)現(xiàn)隨鼠標(biāo)移動(dòng)窗體實(shí)例
- C#實(shí)現(xiàn)的鼠標(biāo)鉤子
- C#簡(jiǎn)單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法示例
相關(guān)文章
C#導(dǎo)出數(shù)據(jù)到excel如何提升性能
這篇文章主要介紹了C#導(dǎo)出數(shù)據(jù)到excel如何提升性能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07基于C#實(shí)現(xiàn)獲取Windows所有窗口句柄
在做錄屏或截屏操作時(shí),需要獲取當(dāng)前正在運(yùn)行中的桌面程序句柄,所以這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)獲取Windows所有窗口句柄,需要的可以參考下2023-12-12c#讀寫(xiě)App.config,ConfigurationManager.AppSettings 不生效的解決方法
這篇文章主要介紹了c#讀寫(xiě)App.config,ConfigurationManager.AppSettings 不生效的解決方法,需要的朋友可以參考下2015-10-10C# 命名空間(Namespace)相關(guān)知識(shí)總結(jié)
這篇文章主要介紹了C# 命名空間(Namespace)的相關(guān)知識(shí),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以參考下2020-06-06C#中Hashtable和Dictionary的區(qū)別與用法示例
由于 Hashtable 和 Dictionary 同時(shí)存在, 在使用場(chǎng)景上必然存在選擇性, 并不任何時(shí)刻都能相互替代。所以這篇文章主要給大家介紹了關(guān)于C#中Hashtable和Dictionary區(qū)別的相關(guān)資料,需要的朋友可以參考下2021-05-05C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放
在WPF里用MediaElement控件,實(shí)現(xiàn)一個(gè)循環(huán)播放單一視頻的程序,同時(shí)可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧2018-04-04解析C#中用Process類殺死進(jìn)程,執(zhí)行命令的深入分析
本篇文章是對(duì)C#中用Process類殺死進(jìn)程,執(zhí)行命令進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05