C 學習筆記 三點定位演算法

2022-02-14 01:22:56 字數 2778 閱讀 8545

自己寫的,可能還有很多不足,看著**不對的求提出,我改~

先上**,然後解釋我的想法

1

namespace

threepointorientation210

static point threepointorientation(point a, point b, point c, int lenaz, int lenbz, int

lencz)

1117

else

if (b.x <= a.x && b.x <=c.x)

18

19else

20

21 min =a1;

22//

223 a1.x = 0; a1.y = 0

;24 b1.x -= min.x; b1.y -=min.y;

25 c1.x -= min.x; c1.y -=min.y;

26//327

int lenab = (int)system.math.sqrt(b1.x*b1.x + b1.y*b1.y);

32 b2.x = lenab; b2.y = 0;33

//434 z2.x = (lenaz * lenaz + lenab * lenab - lenbz * lenbz) / (2 *lenab);

35 z2.y = (int)system.math.sqrt(lenaz*lenaz-z2.x*z2.x);

36//537

float tanbab = (float)b1.y / (float

)b1.x;

38float tancac = (float)z2.y / (float

)z2.x;

39float

tancab2;

40if (b1.y >= 0)

41 tancab2 = (tanbab+tancac)/(1-tanbab*tancac);

42else

43 tancab2 = (tancac-tanbab)/(1+tancac*tanbab);

44//

645 z1.x = (int)((float)lenaz / (system.math.sqrt(tancab2 * tancab2 + 1

)));

46 z1.y = (int)(tancab2 *z1.x);

47//

748 ina1b1.x = (a1.x + b1.x) / 2

;49 ina1b1.y = (a1.y + b1.y) / 2;50

//851 zz1.x = ina1b1.x * 2 -z1.x;

52 zz1.y = ina1b1.y * 2 -z1.y;

53//954

int lenzz1c1 = (int)system.math.sqrt(system.math.pow(zz1.x - c1.x, 2) + system.math.pow(zz1.y - c1.y, 2

));55

int lenz1c1 = (int)system.math.sqrt(system.math.pow(z1.x - c1.x, 2) + system.math.pow(z1.y - c1.y, 2

));56

if((lenzz1c1-lencz)

57 z1 =zz1;

58//

1059 z1.x +=min.x;

60 z1.y +=min.y;

6162

return

z1;63}64

static

void main(string

args)

65, y = \n

", z.x, z.y);

79console.readkey();80}

81}82 }

主要就是函式point threepointorientation(point a, point b, point c, int lenaz, int lenbz, int lencz);

a,b,c是已知的三點,lenaz,lenbz,lencz分別是三點到要求的點的距離,函式返回要求的點的座標。

我的想法......

1.把abc三點中x值最小的賦值給a1,另外兩點分別給b1和c1,並記錄a1的值給min

2.把a1b1c1這個三角形平移至a1在原點處(即三個點分別減去min)

3.計算a1b1距離lenab,記b2(lenab, 0)。(相當於把邊a1b1旋轉到與x軸重合,得到a1b2)

4.根據a1b2的座標和lenaz、lenbz的值可以很容易算出z2的座標(z2為經過平移和旋轉之後的要求的點)

5.6.利用公式求得z1(其實通過a1、b1兩點及az、bz兩條邊能確定的點有兩個,如圖的z1和zz1

)7.8.9.求出另乙個點zz1,判斷c1z1、c1zz1哪個與cz更相近,把相近的點賦值給z1

10.把z1點平移回去(加上min)即得z

三點定位的演算法

三點定位,已知a,b,c三個頂點的x,y座標 和三個點都z座標的距離,la,lb,lc 求z點的座標 原理就是圍繞a,b,c 三個點畫圓,三個圓焦點的部分就是所求 但是,由於三個點的距離可能不准,不一定會有結果,所以是三個圓環的焦點,環的寬度開始為0,沒有取到則加1 執行gcc lm test.c ...

三點定位 企業展廳設計怎麼定位,從這三點入手

企業展廳是一項系統工程,涉及環節比較複雜比較多。要在綜合考慮空間面積大小 造型和所處位置等客觀因素上對整個展廳進行設計布局。力求展廳落地呈現出效果最大化。要做到這樣,企業展廳設計怎麼精準定位,重慶數位化展廳設計公司曼斯特科技給大家甩乾貨 從這三點入手。1 突出企業的時代感和特色感 企業展廳是展示企業...

三點定位法原理及實現 藍芽定位

實現 最近在做藍芽室內定位,藍芽定位用到的乙個非常經典的演算法就是三點定位法。三點定位法,顧名思義首先有三個圓點,同時我們也知道這三個圓的半徑,最終求得三圓的交點,達到定位效果。如圖 我們的目的是求得o點,利用畢達哥拉斯定理我們可以快速求得o點座標。不過事與願違,現實情況並不總是如人意,而是這樣 甚...