這個解釋很複雜,所以我會盡我所能,抱歉如果有什麼我錯過了,讓我知道,我會糾正它。用C++/Excel連接圓圈
我的問題是,我一直負責繪製這種形狀,
Crescent Moon http://www.learnersdictionary.com/art/ld/crescent.gif
這是用C++編寫的代碼,將計算在該形狀的點來完成。
重要細節。
用戶輸入 - 中心點(X,Y),要顯示的點數,字體大小(影響半徑)
輸出 - 的形狀座標列表。
一旦我有了要點,總體目標就是將它們放入Excel中的圖表上,並希望以用戶輸入的大小爲我繪製它!
我知道最大半徑是165mm,最小值是35mm。我決定我的基礎[字體大小] [1]應爲20.然後我做了一些思考並提出了方程式。
半徑=(選擇的字體大小/ 20)* 130。這只是一個估計,我意識到它可能不對,但我認爲它至少可以作爲一個模板。
然後我決定創建兩個不同的圓,有兩個不同的中心點,然後將它們連接在一起創建形狀。我認爲INSIDE線必須具有更大的半徑和沿着X軸(Y保持不變)的更遠的中心點,因爲那樣它可以切入外線。*
*(我知道這是不是它在圖片上看起來像什麼,只是我的思路,因爲它仍然會給出相同的形狀)所以我將第二中心點定義爲(X + 4,Y)。 (再次,只是估計,認爲它們之間的距離並不重要)。
我再決定半徑2 =(所選擇的字體大小/ 20)* 165(最大半徑)
所以,我有我的2半徑,和兩個中心點。
這是到目前爲止我的代碼(它的工作原理,一切都宣告/上面輸入)
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軸,給半圓環形狀)。
如果這是有道理的,我試圖讓兩個圓的部分繪製形狀,使他們有相同的開始和結束點。
如果任何人有任何關於如何做到這一點的建議,這將是很好的,目前我正在變得更'半油炸圈餅'的形狀,由於沒有連接的圈子。
所以。有沒有人有任何提示/技巧/鏈接,他們可以與我分享如何解決這個問題?
再次感謝,任何問題,對不起,如果你讓我知道,我會盡力糾正。
乾杯