簡體   English   中英

需要一些指針

[英]Need some pointers

我正在嘗試找出c中的程序來計算螺栓圓圈圖案中的x,y坐標。 我的數學部分正確,但無法弄清楚如何列出起始角度和坐標而不是最后列出起始角度和坐標,並且度數不能超過360。這是代碼:

#include <stdio.h>
#include <math.h>

int main()
{
    float x;        //x location
    float y;        //y location
    float h;        //# of holes
    float d;        //diameter of bc
    float a;        //starting angle
    int n;          //hole count

    printf("enter dia of circle\n");
    scanf("%f", &d);
    printf("enter number of holes\n");
    scanf("%f", &h);
    printf("enter starting angle, counter clockwise from 3:00\n");
    scanf("%f", &a);

    float r = d / 2;    //radius
    float k = 360 / h;  //degrees between holes 

    for (n = 0; n < h; n++) {
        a = a + k;

        x = r * (cos(a * M_PI / 180));
        y = r * (sin(a * M_PI / 180));

        printf("%.3f, %.3f, %.2f\n", x, y, a);
    }

    return 0;
}

我在c中執行此操作以使代碼正確,然后將其放入iPhone的目標c中,哪種是列出每個x&y坐標和角度的輸出的最佳方法? 例如,我將使用表格視圖嗎? 感謝您的任何建議。

我建議將a = a + k替換a = a + k以下形式:

float base_a;
printf("enter starting angle, counter clockwise from 3:00\n");
scanf("%f", &base_a);

for (n = 0; n < h; n++) {
    a = base_a + n*k;

重復添加浮點數會導致錯誤增加。 也許這不會不管這個(畢竟,你只使用float真是讓人不是double秒-但誤差累積“快”與float總比double S,所以它是一個更加緊迫的問題),但解決方法是足夠容易:將差值與計數相乘,然后將其加到恆定的基數中。

我也有點擔心比較n < h - ninthfloat 雖然我通常擔心浮點循環變量,但我擔心將浮點數用於孔數。 那是問題所指明的嗎?

暫無
暫無

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

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