簡體   English   中英

在C ++ / Excel中連接圓

[英]Connecting Circles in C++/Excel

這很難解釋,因此我會盡力而為,如果有任何遺漏的地方,對不起,請告訴我,我將予以糾正。

我的問題是,我受命繪制這種形狀,

新月
(來源: studentsdictionary.com

這是使用C ++編寫代碼來計算此形狀上的點來完成的。

重要細節。

用戶輸入-中心點(X,Y),要顯示的點數,字體大小(影響半徑)

輸出-形狀上的坐標列表。

一旦掌握了所有要點,總體目標就是將其放入Excel中的圖形中,並希望以用戶輸入的大小為我繪制圖形!

我知道最大半徑為165mm,最小為35mm。 我決定將[Font Size] [1]設為20。然后我做了一些思考,得出了等式。

半徑=(選擇的字體大小/ 20)* 130。 這只是一個估計,我意識到這可能不正確,但是我認為它至少可以作為模板。

然后,我決定應該創建兩個具有兩個不同中心點的不同圓,然后將它們鏈接在一起以創建形狀。 我認為INSIDE線必須具有更大的半徑和沿X軸更遠的中心點(Y保持不變),這樣才可以切入外線。*

*(我知道這不是圖片上的樣子,只是我的想法,因為它仍然會呈現相同的形狀)

因此,我將第二個中心點定義為(X + 4,Y)。 (再次,只是估計,認為它們之間的距離並不重要)。

然后我決定半徑2 =(選擇的字體大小/ 20)* 165(最大半徑)

因此,我有2個Radii和兩個中心點。

到目前為止,這是我的代碼(有效,並且上面已經聲明/輸入了所有內容)

for(int i=0; i<=n; i++) //output displayed to user
{                                          
Xnew = -i*(Y+R1)/n; //calculate x coordinate
Ynew = pow((((Y+R1)*(Y+R1)) - (Xnew*Xnew)), 0.5); //calculate y coordinate

 for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
{
Xnew2 = -j*(Y+R2)/((n)+((0.00001)*(n==0))); //calculate x coordinate
Ynew2 = Y*(pow(abs(1-(pow((Xnew2/X),2))),0.5));
if(abs(Ynew2) <= R1)
    cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;

我在繪制新月時遇到問題,無法使兩個圓具有相同的起點?

我設法將結果獲取到Excel。 在這方面的一切工作。 但是當我在Excel上的圖形上繪制點時,它們沒有相同的起點。 它實際上只有兩個半圓,一個小於另一個半圓(在Y軸處停止,給出半甜甜圈形狀)。

如果這有道理,我嘗試使圓的兩個部分繪制形狀,使它們具有相同的起點和終點。

如果有人對如何操作有任何建議,那就太好了,由於圓形之間沒有連接,我目前正變得更加“半甜甜圈”形狀。

所以。 任何人都沒有任何提示/技巧/鏈接,可以與我分享如何解決此問題?

再次感謝您,如果有任何問題,對不起,如果您讓我知道,我們將盡力糾正。

干杯

圓點公式:

(x-h)^2+(y-k)^2=r^2

The center of the circle is at (h/k)

解y

 2y1 = k +/- sqrt( -x^2 + 2hx +r^2 - h^2)

因此,現在如果內圓的中心為@ h/k ,則半月將開始於h並延伸至h - r2

現在,您需要求解內圓和外圓的端點公式並對其進行繪制。 每x您應獲得4分(兩次求解方程式,每一次有兩個解)

我沒有實現它,但這是我的思路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM