91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

objective-c如何實現點到直線的距離及與垂足的交點

發布時間:2021-08-06 13:42:16 來源:億速云 閱讀:101 作者:小新 欄目:移動開發

小編給大家分享一下objective-c如何實現點到直線的距離及與垂足的交點,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

問題描述

點到直線或者線段的距離

實現思路

假設有一點坐標P(x0,y0),有一線段AB,A坐標(x1,y1),B坐標(x2,y2),求P點到AB線段或所在直線的距離d以及P點在直線上的垂足C(x,y)。

這需要復習一下高中的數學知識。

首先需要將A,B兩點坐標轉換為直線方程的一般式Ax+By+C = 0,過程就不推演了。

參數計算:

A=y2-y1;

B=x1-x2;

C=x2*y1-x1*y2;

1、點到直線的距離公式:

d= ( Ax0 + By0 + C ) / sqrt ( A*A + B*B );

2、垂足C(x,y)計算公式:

x = (  B*B*x0  -  A*B*y0  -  A*C  ) / ( A*A + B*B );

y  =  ( -A*B*x0 + A*A*y0 – B*C  ) / ( A*A + B*B );

程序的實現:

//垂足交點
-(CGPoint)pedalPoint: (CGPoint)p1 : (CGPoint )p2: (CGPoint)x0{

float A=p2.y-p1.y;
float B=p1.x-p2.x;
float C=p2.x*p1.y-p1.x*p2.y;

float x=(B*B*x0.x-A*B*x0.y-A*C)/(A*A+B*B);
float y=(-A*B*x0.x+A*A*x0.y-B*C)/(A*A+B*B);

//點到直線距離
float d=(A*x0.x+B*x0.y+C)/sqrt(A*A+B*B);

CGPoint ptCross=ccp(x,y);
NSLog(@”d======%f”,d);
NSLog(@”A=======%f,B=======%f,C=======%f”,A,B,C);
NSLog(@”垂足======x=%f,y=%f”,x,y);
return ptCross;
}

看完了這篇文章,相信你對“objective-c如何實現點到直線的距離及與垂足的交點”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临泽县| 安塞县| 康马县| 乐至县| 上饶市| 淳安县| 平顺县| 临潭县| 蒙自县| 谷城县| 大安市| 呼玛县| 白朗县| 松阳县| 和平县| 崇明县| 柳州市| 达拉特旗| 凭祥市| 望城县| 青铜峡市| 荣成市| 隆德县| 高雄县| 准格尔旗| 唐河县| 永福县| 罗平县| 都江堰市| 宁陵县| 胶南市| 常山县| 定西市| 兴业县| 阜宁县| 高青县| 昌吉市| 龙州县| 武乡县| 大悟县| 隆昌县|