数値をコメント文字列”XXX="の直後に記載 g_printするには?

解決


はんにゃ  URL  2011-02-04 01:28:53  No: 72302

数値をコメント文字列”XXXXX="の直後に記載  g_printするには
どうしたらよいでしょうか?
具体てきには  
static char s[100];
static double ep,elr,el,ne; 

    g_print(185,970,"[mm]:");//コメント文字列
    g_print(-1,-1," pix.pitch="); g_print(-1,-1, gcvt(ep,5,s));

pix.pitch= とepの数値0.312の間は8字分あり、

ところが
    g_print(200,60,"Cyan-line:dis.matched to lens pitch[thick/ni/(1-lp/(ne*ep))]=");
    g_print(-1,-1, gcvt(pitxme,3,s));
    あるいは
    gcvt(pitxme,3,s); g_print(-1,-1,("%5f",s));  
で  
/(1-lp/(ne*ep))]=  とsの数値602の間は14字分あり、

コメント文字列と数値の間を任意に縮めたいのですが  
どのようにしたらよいでしょうか?
g_print(200,60  のように位置指定をするのは避けて、文字列を継続して記載する  g_print(-1,-1,  を使いたい。


はんにゃ  URL  2011-02-04 01:33:05  No: 72303

先の環境はWindowsXP  VC6.0  でglut32.dllを使用しています


はんにゃ  URL  2011-02-04 01:43:49  No: 72304

失礼しました。g_print( )の関数を以下のようになっていました。
すごく  入り組んでいます

void g_print( int xc, int yc, char *str)
{
  static   int oxc, ycc;
           int xcc;
  if(xc!= -1){ xcc=oxc=xc; ycc=yc;
  }
  else if(xc== -1){ xcc=oxc; }
  cmov2( xcc, ycc);  charstr(str);
  oxc=oxc+ strlen(str)*13.2;  //ここで長さが決まっているのかな?
}

#define cmov2(x, y) glRasterPos2f(x, y)

void charstr(char *str)
{
  int len = strlen(str);
  int i;

  for (i=0; i<len; i++)
    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str[i]);
}


はんにゃ  URL  2011-02-05 00:22:44  No: 72305

void g_print( int xc, int yc, char *str)
{  の中の

oxc=oxc+ strlen(str)*13.2;  //ここで長さが決まっているのかな?
}
の乗数で決めているのですが、これはScreen pixel解像度によって、最適値(一文字あたりのpixel値)がことなるために、すこし余裕があると  事前のコメント文字列が長い場合には空白が長くなる。
今1280x1024  SXGAとするとして  12.3としておきました。
そして、長いコメント文字列を避けるように、分割した表示にしました
  g_print(200,60,"Cyan line:");//2011 correct
  g_print(-1,-1, gcvt(pitxme,3,s));
  g_print(-1,-1,"=dis.matched to lens pitch[thick/ni/(1-lp/(ne*ep))]");//2011 correct

もっとスマートなコードがあるかもしれませんが、原因と処理がわかりました
関心持っていただいた方には感謝します


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加