質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • C

    4006questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

画像の出力方法がわかりません

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 128

nishimuu

score 2

![イメージ説明](c9445ed2fcf66d69337b8c0343b0a864.png)!
これが出力された画像です。
[イメージ説明](eae5684bd3313bd8a8c504eb6df6b909.png)

上記の画像を出力するプログラムをcで書きたいです。

該当のソースコード

#include <stdio.h>
#include <math.h>
#include <chinougl.h>
int main(){
double x,xx,r=0.01;
double y,yy,pi=3.1415926;
int i,j;

LINEwidth=1.5;
   printf("\n start\n");
   for(j=30;j<100;j+=2){

   for(i=0;i<360;i+=2){

      x=j*r*cos((double)i/180.0*pi);
      y=j*r*sin((double)i/180.0*pi);
      xx=j*r*cos((double)(i+2)/180.0*pi);
      yy=j*r*sin((double)(i+2)/180.0*pi);

   line(x,y,xx,yy);
     color(0.5f,1.0f-0.01f*j,0.01*(double)j);
   }
   }

  line(-0.0018f,0,0.0018f,0);color(1.0,1.0,0.0);
   texts(0,0,"center");
   texts(0.2,0.2,"off-center");

   gotogl();
   printf("\nend\n");

  return 0;
 }
#include <windows.h>
// #include <glu.h>
#include <glut.h>
#include <stdlib.h>
#include <stdio.h>
#define DMAX 5000000
#define TMAX 1000

struct {
    GLfloat dwx;
    GLfloat dwy;
    GLfloat twx;
    GLfloat twy;
    GLfloat colr;
    GLfloat colg;
    GLfloat colb;
}  drwM[DMAX];

struct {
    GLfloat tx;
    GLfloat ty;
    char *str;
}  trwM[TMAX];

 int dmaX=0, tmaX=0;
double LINEwidth=1.0;
double LINEorder=0;
//char *V[]={"Chinow Window"};
//int A;

void init(void)
{

   glEnable (GL_LINE_SMOOTH);
   glEnable (GL_BLEND);
   glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
   glLineWidth (LINEwidth);

   glClearColor(0.0, 0.0, 0.0, 0.0);
}

void drawBitmapString(GLfloat x, GLfloat y, void *font, char *string)
{

//glPushAttrib(GL_CURRENT_BIT);

//glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f);
glRasterPos2f(x, y);


while (*string)
glutBitmapCharacter(font, *string++);


//glPopAttrib();
}




void display(void)
{
 int i;
   glClear(GL_COLOR_BUFFER_BIT);

if (LINEorder==0){
  for(i=1;i<=dmaX;i++){
   glColor3f (drwM[i].colr,drwM[i].colg, drwM[i].colb);
   glBegin (GL_LINES);
      glVertex2f (drwM[i].dwx, drwM[i].dwy);
      glVertex2f (drwM[i].twx, drwM[i].twy);
   glEnd ();
}}
 else {
  for(i=dmaX;i>=1;i--){
   glColor3f (drwM[i].colr,drwM[i].colg, drwM[i].colb);
   glBegin (GL_LINES);
      glVertex2f (drwM[i].dwx, drwM[i].dwy);
      glVertex2f (drwM[i].twx, drwM[i].twy);
   glEnd ();
}}

for(i=1;i<=tmaX;i++){
drawBitmapString(trwM[i].tx, trwM[i].ty,GLUT_BITMAP_TIMES_ROMAN_24,trwM[i].str);
}
   glFlush();
}

void reshape(int w, int h)
{
   glViewport(0, 0, w, h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   if (w <= h)
      gluOrtho2D (-1.0, 1.0,
         -1.0*(GLfloat)h/(GLfloat)w, 1.0*(GLfloat)h/(GLfloat)w);
   else
      gluOrtho2D (-1.0*(GLfloat)w/(GLfloat)h,
         1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)
{
static int nn=0;

   switch (key) {

      case ' ':
         if (nn%2==0) glDisable (GL_LINE_SMOOTH);
         else{
             glEnable (GL_LINE_SMOOTH);}
             nn=nn+1;
         glutPostRedisplay();
         break;
      case 27:
         exit(0);
         break;
      default:
         break;
    }
}


int gllmain(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
   glutInitWindowSize (1000, 1000);
   glutInitWindowPosition(0,0);
   glutCreateWindow (argv[0]);
   init();
   glutReshapeFunc (reshape);
   glutKeyboardFunc (keyboard);
   glutDisplayFunc (display);
   glutMainLoop();
   return 0;
}




void line(GLfloat x0,GLfloat y0,GLfloat x1,GLfloat y1){
    dmaX=dmaX+1;
    drwM[dmaX].dwx=x0;
    drwM[dmaX].dwy=y0;
    drwM[dmaX].twx=x1;
    drwM[dmaX].twy=y1;
    return;
}


void color(GLfloat r,GLfloat g,GLfloat b){
    drwM[dmaX].colr=r;
    drwM[dmaX].colg=g;
    drwM[dmaX].colb=b;
return;
}

void texts(GLfloat x,GLfloat y,char *str){
    tmaX=tmaX+1;
    trwM[tmaX].tx=x;
    trwM[tmaX].ty=y;
    trwM[tmaX].str=str;
    return;
}

上から二番目の画像を出力するソースコードを教えていただけないでしょうか。

補足情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takabosoft

    2018/12/05 16:55

    「上記のように同心円状の画像を出力するプログラム」で出力した画像のスクショも載せてもらえますか??

    キャンセル

回答 2

0

7個の円のうちのどれか1つの中心座標と円の半径が決まれば他の6個の円の位置は自動的に決まるからそれをコード化すればいいと思います。
規準にする円はどれもいいけど、やりやすいのは中心にある円でしょうね。(そうすれば、他の6個の円は正6角系の各頂点に円の中心があることになるから。)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

中心と半径を渡して円を描画する関数を作って、まずは円(白塗りつぶし)を一つ描画してみてください。

たしかOpenGLで円を描くのは三角形を繋げて正多角形にするしかなかったと思いますが、
考え方としてはこの辺が参考になるでしょうか。
https://ameblo.jp/nishi-u6fa4/entry-11337620073.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C

    4006questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。