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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Q&A

2回答

1704閲覧

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

nishimuu

総合スコア18

C

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

0グッド

0クリップ

投稿2018/12/05 01:55

編集2018/12/05 10:38

イメージ説明!
これが出力された画像です。
イメージ説明

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

該当のソースコード

c

1#include <stdio.h> 2#include <math.h> 3#include <chinougl.h> 4int main(){ 5double x,xx,r=0.01; 6double y,yy,pi=3.1415926; 7int i,j; 8 9LINEwidth=1.5; 10 printf("\n start\n"); 11 for(j=30;j<100;j+=2){ 12 13 for(i=0;i<360;i+=2){ 14 15 x=j*r*cos((double)i/180.0*pi); 16 y=j*r*sin((double)i/180.0*pi); 17 xx=j*r*cos((double)(i+2)/180.0*pi); 18 yy=j*r*sin((double)(i+2)/180.0*pi); 19 20 line(x,y,xx,yy); 21 color(0.5f,1.0f-0.01f*j,0.01*(double)j); 22 } 23 } 24 25 line(-0.0018f,0,0.0018f,0);color(1.0,1.0,0.0); 26 texts(0,0,"center"); 27 texts(0.2,0.2,"off-center"); 28 29 gotogl(); 30 printf("\nend\n"); 31 32 return 0; 33 } 34

c

1#include <windows.h> 2// #include <glu.h> 3#include <glut.h> 4#include <stdlib.h> 5#include <stdio.h> 6#define DMAX 5000000 7#define TMAX 1000 8 9struct { 10 GLfloat dwx; 11 GLfloat dwy; 12 GLfloat twx; 13 GLfloat twy; 14 GLfloat colr; 15 GLfloat colg; 16 GLfloat colb; 17} drwM[DMAX]; 18 19struct { 20 GLfloat tx; 21 GLfloat ty; 22 char *str; 23} trwM[TMAX]; 24 25 int dmaX=0, tmaX=0; 26double LINEwidth=1.0; 27double LINEorder=0; 28//char *V[]={"Chinow Window"}; 29//int A; 30 31void init(void) 32{ 33 34 glEnable (GL_LINE_SMOOTH); 35 glEnable (GL_BLEND); 36 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 37 glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE); 38 glLineWidth (LINEwidth); 39 40 glClearColor(0.0, 0.0, 0.0, 0.0); 41} 42 43void drawBitmapString(GLfloat x, GLfloat y, void *font, char *string) 44{ 45 46//glPushAttrib(GL_CURRENT_BIT); 47 48//glClear(GL_COLOR_BUFFER_BIT); 49glColor3f(1.0f, 1.0f, 1.0f); 50glRasterPos2f(x, y); 51 52 53while (*string) 54glutBitmapCharacter(font, *string++); 55 56 57//glPopAttrib(); 58} 59 60 61 62 63void display(void) 64{ 65 int i; 66 glClear(GL_COLOR_BUFFER_BIT); 67 68if (LINEorder==0){ 69 for(i=1;i<=dmaX;i++){ 70 glColor3f (drwM[i].colr,drwM[i].colg, drwM[i].colb); 71 glBegin (GL_LINES); 72 glVertex2f (drwM[i].dwx, drwM[i].dwy); 73 glVertex2f (drwM[i].twx, drwM[i].twy); 74 glEnd (); 75}} 76 else { 77 for(i=dmaX;i>=1;i--){ 78 glColor3f (drwM[i].colr,drwM[i].colg, drwM[i].colb); 79 glBegin (GL_LINES); 80 glVertex2f (drwM[i].dwx, drwM[i].dwy); 81 glVertex2f (drwM[i].twx, drwM[i].twy); 82 glEnd (); 83}} 84 85for(i=1;i<=tmaX;i++){ 86drawBitmapString(trwM[i].tx, trwM[i].ty,GLUT_BITMAP_TIMES_ROMAN_24,trwM[i].str); 87} 88 glFlush(); 89} 90 91void reshape(int w, int h) 92{ 93 glViewport(0, 0, w, h); 94 glMatrixMode(GL_PROJECTION); 95 glLoadIdentity(); 96 if (w <= h) 97 gluOrtho2D (-1.0, 1.0, 98 -1.0*(GLfloat)h/(GLfloat)w, 1.0*(GLfloat)h/(GLfloat)w); 99 else 100 gluOrtho2D (-1.0*(GLfloat)w/(GLfloat)h, 101 1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0); 102 glMatrixMode(GL_MODELVIEW); 103 glLoadIdentity(); 104} 105 106void keyboard(unsigned char key, int x, int y) 107{ 108static int nn=0; 109 110 switch (key) { 111 112 case ' ': 113 if (nn%2==0) glDisable (GL_LINE_SMOOTH); 114 else{ 115 glEnable (GL_LINE_SMOOTH);} 116 nn=nn+1; 117 glutPostRedisplay(); 118 break; 119 case 27: 120 exit(0); 121 break; 122 default: 123 break; 124 } 125} 126 127 128int gllmain(int argc, char** argv) 129{ 130 glutInit(&argc, argv); 131 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 132 glutInitWindowSize (1000, 1000); 133 glutInitWindowPosition(0,0); 134 glutCreateWindow (argv[0]); 135 init(); 136 glutReshapeFunc (reshape); 137 glutKeyboardFunc (keyboard); 138 glutDisplayFunc (display); 139 glutMainLoop(); 140 return 0; 141} 142 143 144 145 146void line(GLfloat x0,GLfloat y0,GLfloat x1,GLfloat y1){ 147 dmaX=dmaX+1; 148 drwM[dmaX].dwx=x0; 149 drwM[dmaX].dwy=y0; 150 drwM[dmaX].twx=x1; 151 drwM[dmaX].twy=y1; 152 return; 153} 154 155 156void color(GLfloat r,GLfloat g,GLfloat b){ 157 drwM[dmaX].colr=r; 158 drwM[dmaX].colg=g; 159 drwM[dmaX].colb=b; 160return; 161} 162 163void texts(GLfloat x,GLfloat y,char *str){ 164 tmaX=tmaX+1; 165 trwM[tmaX].tx=x; 166 trwM[tmaX].ty=y; 167 trwM[tmaX].str=str; 168 return; 169} 170

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

補足情報

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2018/12/05 07:55

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

回答2

0

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

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

投稿2018/12/06 00:12

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2018/12/05 08:06

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問