自己寫的,可能還有很多不足,看著**不對的求提出,我改~
先上**,然後解釋我的想法
1主要就是函式point threepointorientation(point a, point b, point c, int lenaz, int lenbz, int lencz);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 }
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點座標。不過事與願違,現實情況並不總是如人意,而是這樣 甚...