vb中,已知圓上兩點和半徑值,求圓心座標的程式

2021-07-30 05:48:46 字數 3690 閱讀 7788

1樓:匿名使用者

問題:已知圓上的兩點座標和半徑,求圓心。

數學分析:這個題目,涉及到簡單的數學問題,但是計算比較繁瑣。

假設已知圓上的兩點座標分別為n(x1,y1)和m(x2,y2),半徑為r,圓心座標為o(a,b),根據數學知識可得到:

(x1-a)^2 + (y1-b)^2 = r^2----(1)式

(x2-a)^2 + (y2-b)^2 = r^2----(2)式

分別上述兩個式子得到

(x1)^2 - 2*x1*a + a^2 + (y1)^2 - 2*y1*b + b^2 = r^2 ----(3)式

(x2)^2 - 2*x2*a + a^2 + (y2)^2 - 2*y2*b + b^2 = r^2 ----(4)式

(3)式 - (4)式

得到:x1^2 - x2^2 + 2*(x2-x1)*a + y1^2 - y2^2 + 2*(y2-y1)*b = 0

變形得到:

a = (x2^2 - x1^2 + y2^2 - y1^2)/2/(x2-x1) - (y2-y1)/(x2-x2) * b

設:c1 = (x2^2 - x1^2 + y2^2 - y1^2)/2/(x2-x1)

設:c2 = (y2-y1)/(x2-x2)

a = c1 - c2 * b ----(5)式

把(5)式代入(1)式,得到;

x1^2 - 2*x1*(c1-c2*b) + (c1-c2*b)^2 + y1^2 -2*y1*b + b^2 = r^2

簡化為關於b的一元二次方程一般形式;

(c2^2+1)*b^2 + (2*x1*c1-2*c1*c2-2*y1)*b + x1^2-2*x1*c1+c1^2+y1^2-r^2 = 0

二次項係數:a = (c2^2+1)

一次項係數:b = (2*x1*c1-2*c1*c2-2*y1)

常數項: c = x1^2-2*x1*c1+c1^2+y1^2-r^2

根的判別式:derta = b^2 - 4*a*c

如果:derta < 0 則無解

derta >0 有兩個不同的解

derta =0 有兩個相同的解

**:在窗體上新增7個文字框:

text1 --輸入已知圓上點第1個的x座標

text2 --輸入已知圓上點第1個的y座標

text3 --輸入已知圓上點第2個的x座標

text4 --輸入已知圓上點第2個的y座標

text5 --輸入已知圓的半徑

text6 --輸出圓心的x座標

text7 --輸出圓心的y座標

新增一個按鈕;

**如下:

private sub command1_click()

dim x1, y1, x2, y2, r as single

dim x01, y01, x02, y02 as single

dim a, b, c as single

dim derta as single

dim c1, c2 as single

x1 = val(text1.text)

y1 = val(text2.text)

x2 = val(text3.text)

y2 = val(text4.text)

r = val(text5.text)

c1 = (x2 ^ 2 - x1 ^ 2 + y2 ^ 2 - y1 ^ 2) / 2 / (x2 - x1)

c2 = (y2 - y1) / (x2 - x1)

a = (c2 ^ 2 + 1)

b = 2 * x1 * c2 - 2 * c1 * c2 - 2 * y1

c = x1 ^ 2 - 2 * x1 * c1 + c1 ^ 2 + y1 ^ 2 - r ^ 2

derta = b ^ 2 - 4 * a * c

if derta >= 0 then

derta = derta ^ (0.5)

y01 = (-b + derta) / 2 / a

y02 = (-b - derta) / 2 / a

x01 = c1 - c2 * y01

x02 = c1 - c2 * y02

'因為是一元二次方程,得到2個實數根,需要略去一個增根

if abs((x1 - x01) ^ 2 + (y1 - y01) ^ 2 - r ^ 2) < abs((x1 - x02) ^ 2 + (y1 - y02) ^ 2 - r ^ 2) then

text6.text = x01

text7.text = y01

else

text6.text = x02

text7.text = y02

end if

else

msgbox("無解!")

text6.text = derta

end if

end sub

2樓:前沿建築技術

圓弧座標計算,仔細看圖。c點圓心是計算出來的吧。

已知起點終點和半徑就行了。

3樓:匿名使用者

有數學公式的話 就可以做的

好久沒接觸這個公式了

應該求出來的圓心有兩個的。

知道圓上兩個點座標和半徑,怎麼求圓心

4樓:莪要狠幸福

連線圓上兩點,找到中心做垂線,然後在這兩點任意一點以此點為圓心,半徑相同做願,那麼垂線和圓的焦點就是圓心了

5樓:咫尺天涯_死神

假設已知p(x1,y1)抄,q(x2,y2),半徑為r,求襲圓心座標o(m,n)

求得經過pq兩點所在

直線l1的函式為:y=kx+a, kx-y+a=0

則與pq垂直的直線l2函式為:y=-x/k+b, x/k+y-b=0

利用點到直線的距離公式:pq兩點到l2直線的距離相等得到:│ x1/k+y1-b│=│ x2/k+y2-b│……式1; r²-(x2/k+y2-b)²/(1/k²+1)=(km-n+a)/(k²+1)……式2;同時圓心還在l2直線上,就有m/k+n-b=0 ……式3;

式子1求得l2函式的b,式子2,3的互相關係,求得m,n 有2個點,關於l1對稱的,除非圓心過l1,如果是就一個點,表示圓心是經過l1的。

已知2點座標和半徑 怎麼求圓心座標

6樓:明哥歸來

設圓方bai

程為(x-a)^2+(y-b)^2=r^2將兩點座標

du及圓半徑代入可zhi解方程組得圓心dao座標(a,b)比如的給的a(0,15),b(40,0),r=160,代入可得(0-a)^2+(15-b)^2=160^2(40-a)^2+(0-b)^2=160^2解之可得

另外,也可按求出兩點間距l及中點座標((x1+x2)/2,(y1+y2)/2)及斜率k=(y1-y2)/(x1-x2),則有過圓心座標的直線方程為l=y,再求得直線到兩點距離為半徑r的點的座標就是所求圓心座標.

一般只要已知兩點距離小於2r,則有兩個圓心座標,一般兩點間距離等於2r,則圓心座標只有兩點中點,如果兩點間距離大於2r,則實數範圍內無解.

7樓:從龍山南

以已知座標為圓心,已知半徑為半徑畫圓,交點為所求圓心。可以列兩個圓的方程求解

已知兩點位置,以及需要建立的圓的半徑,並且兩點在圓上。如何確定圓心

圓的半徑為r,pq為園的直徑,r 2r,pq 2r,aq ap,所以以a為圓心,無論p.q相交於圓上哪一點,它們的積為一定值。把圖畫出來就知道 分別以兩點為圓心,以已知半徑為半徑畫兩道弧,兩弧的交點即為所求。條件,已知的半徑必須要大於或等於已知兩點的距離之半,1連線已知的兩點,得出一條線段,2作這條...

已知圓的解析式,如何求圓心座標已知兩點座標和半徑,求圓的方程

你的這個不是圓的方程,是橢圓的方程 圓的方程必須是 x a m 2 y b m 2 1這裡的圓心是 a,b 記住必須是除以同樣的一個數,或者說轉換一個形式就是 x a 2 y b 2 m 2圓心是 a,b 半徑是m 1,首先把圓的解析式化成標準方程 x a y b r 2,由此判斷,圓的圓心為 a,...

已知圓c經過P(4, 2)Q( 1,3)兩點,且在y軸上截得的線段長為4根號3,半徑小於

設圓心 m,n 則 m 4 2 n 2 2 m 1 2 n 3 2 有 16 8m 4 4n 2m 1 9 6nso m n 1 圓c x n 1 2 y n 2 n 3 2 n 2 2 在y軸上截得的線段長為4根號3 n 1 2 y n 2 n 3 2 n 2 2y 2 2ny 12 4n 0 s...