我正在用C語言編寫一個程序(使用allegro lib),它顯示txt文件中的點(我可以說一些序列)(兩列X & Y)。這些是浮點,它們可以小於零。窗口大小爲800x600。由於我們知道x的值從左到右增加,但y從上到下增加。我在聲明變量和縮放時遇到了很大的問題。以下是我遇到的一段代碼:如何聲明x和y的值以正確顯示它(也可以縮放)?
數組col1由X值組成,col2由Y值組成。我用qsort對它們進行排序,然後得到最小值和最大值。然後我宣佈高度和窗口和規模的寬度..
float x_max, x_min, y_max, y_min;
x_max=(col1[(n-1)]);
x_min=(col1[0]);
y_max=(col2[(n-1)]);
y_min=(col2[0]);
int height, width;
height=600;
width=800;
float x_scale, y_scale;
y_scale = height/(fabsf(y_max)+ fabsf(y_min));
x_scale = width/(fabsf(x_max)+ fabsf(x_min));
現在我重新打開txt文件,並創建不排序列col1和COL2陣列。現在我聲明xpn和ypn從數組中獲取x或y的值,然後我按比例將其更改並最終我想要顯示它,但是..並非所有都顯示,並且它們都顯示爲錯誤。我使用abs和fabsf,其糟糕的我知道..
你能幫我這個代碼,宣言的X和Y的價值觀和縮放它們?我已經試過幾乎所有的東西,它不工作提前... THX :)
float xpn, ypn;
int xpoint, ypoint;
hline(screen, 5, 300, 795, makecol(0, 0, 0));
vline(screen, 400, 5, 595, makecol(0, 0, 0));
for(i=0;i<n;i++)
{
float xpn, ypn;
xpn=fabsf(col1[i]);
ypn=fabsf(col2[i]);
int xpoint, ypoint;
xpoint=abs(xpn*x_scale);
ypoint=abs(ypn*y_scale);
putpixel(screen,xpoint,ypoint,makecol(0,0,0));
實際的問題是什麼?你得到了什麼,它是如何錯誤的? – RustyH
我有小於零的點數,所以我必須將我的窗口分成4個部分。 – user3233915
我仍然真的不明白這個問題,但如果你有任何理由小於零的點,如果他們只負面下降到一半的屏幕尺寸(即時猜測,因爲你說4部分),你可以在技術上增加一半屏幕寬度x和屏幕高度y的一半。仍然真的不明白的問題或爲什麼你會有負數開始 – RustyH