这解释起来很复杂,所以我会尽力而为,如果有什么遗漏的地方,请告诉我,我会改正的。
我的问题是,我的任务是画出这个形状,
这将使用 C++ 编写代码来计算此形状上的点。
重要细节。
用户输入 - 中心点 (X, Y)、要显示的点数、字体大小(影响半径)
输出 - 形状上的坐标列表。
一旦我有了这些点,总体目标就是将它们放入 Excel 上的图表中,并希望它会以用户输入的大小为我绘制它!
我知道最大半径为 165 毫米,最小为 35 毫米。我已经决定我的基础 [Font Size][1] 应该是 20。然后我做了一些思考并想出了这个等式。
半径 =(选择的字体大小/20)*130。这只是一个估计,我意识到它可能不对,但我认为它至少可以作为一个模板。
然后我决定我应该创建两个不同的圆,两个不同的中心点,然后将它们连接在一起以创建形状。我认为 INSIDE 线必须有一个更大的半径和一个沿 X 轴更远的中心点(Y 保持不变),因为它可以切入外线。*
*(我知道这不是图片上的样子,只是我的思路,因为它仍然会给出相同的形状)
所以我将第二个中心点定义为 (X+4, Y)。(再次,只是估计,认为它们相距多远并不重要)。
然后我决定 Radius 2 = (Chosen Font Size/20)*165 (max radius)
所以,我有我的 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 轴上,形成半个甜甜圈形状)。
如果这是有道理的,我试图让两个部分的圆来绘制形状,使它们具有相同的起点和终点。
如果有人对如何做到这一点有任何建议,那就太好了,由于圆圈没有连接,目前我正在获得更多的“半甜甜圈”形状。
所以。有没有人可以与我分享有关如何准确解决此问题的任何提示/提示/链接?
再次感谢,问题有任何问题,如果你让我知道,对不起,我会尽力纠正。
干杯