最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

objective-c實(shí)現(xiàn)點(diǎn)到直線的距離及與垂足的交點(diǎn)

 更新時(shí)間:2017年04月04日 10:08:46   作者:YoYong  
這篇文章主要給大家介紹了利用objective-c實(shí)現(xiàn)點(diǎn)到直線的距離及與垂足的交點(diǎn)的相關(guān)資料,文中給出了詳細(xì)的實(shí)現(xiàn)思路和實(shí)現(xiàn)代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。

問題描述

點(diǎn)到直線或者線段的距離

實(shí)現(xiàn)思路

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

這需要復(fù)習(xí)一下高中的數(shù)學(xué)知識(shí)。

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

參數(shù)計(jì)算:

A=y2-y1;

B=x1-x2;

C=x2*y1-x1*y2;

1、點(diǎn)到直線的距離公式:

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

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

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 );

程序的實(shí)現(xiàn):

-(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);

//點(diǎn)到直線距離
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;
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

德江县| 南昌市| 饶河县| 平湖市| 平山县| 广安市| 呼和浩特市| 平南县| 武汉市| 洪湖市| 天等县| 江安县| 苍溪县| 新竹县| 虎林市| 克东县| 寿阳县| 鸡泽县| 桃园市| 遂宁市| 绵阳市| 延津县| 田阳县| 白玉县| 富锦市| 方山县| 那坡县| 黑龙江省| 平度市| 鄂伦春自治旗| 闽清县| 育儿| 桃园县| 栾川县| 靖西县| 东港市| 万盛区| 武陟县| 新兴县| 新建县| 修水县|