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

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

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

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

187閲覧

接戦ベクトルについて

windowsaa

総合スコア16

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/10/16 09:34

個のコードはx,yの位置ベクトルを微分して位置ベクトルの描画に接戦ベクトルを書き込みたいと考えています。

が傾きがおかしくなってしまいます。

どこを訂正したら正しく描画できますか?

C++

1 2#include<iostream> //C言語標準ライブラリのインクルード 3#include<GL/glut.h> //GLUTヘッダファイルのインクルード 4#include<GL/gl.h> //GLヘッダファイルのインクルード 5#include<math.h> 6 7 8double clt[4][3] = 9{ 10 { 1,2,0 }, 11 { 2,3,0 }, 12 { 3,1,0 }, 13 { 5,1,0 }, 14}; 15 16//プロトタイプ宣言 17 18void init(void); 19void keyboard(unsigned char key, int x, int y); 20void display(void); 21void resize(int w, int h); 22 23 24int main(int argc, char **argv) 25{ 26 glutInit(&argc, argv); 27 /* ウィンドウの生成 */ 28 glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); 29 glutInitWindowPosition(200, 50); 30 glutInitWindowSize(400, 400); 31 glutCreateWindow(argv[0]); 32 init(); 33 glutReshapeFunc(resize); 34 glutDisplayFunc(display); 35 glutKeyboardFunc(keyboard); 36 glutMainLoop(); 37 38 return 0; 39} 40 41void keyboard(unsigned char key, int x, int y) 42{ 43 switch (key) { 44 case '\33': 45 case 'q': 46 case 'Q': 47 exit(0); 48 break; 49 default: 50 break; 51 } 52} 53 54 55void display(void) 56{ 57 58 float x, y, x1, y1, x2, y2, t, s; 59 60 float length = 0; 61 62 for (s = 0.0; s<1.1; s += 0.1) 63 { 64 65 glLineWidth(1.0f); 66 glBegin(GL_LINE_STRIP); 67 glColor3f(0.0, 1.0, 0.0); 68 69 x = pow((1 - s), 3) * clt[0][0] + 3 * pow((1 - s), 2)*s * clt[1][0] + 3 * (1 - s)*pow(s, 2) * clt[2][0] + pow(s, 3) * clt[3][0]; 70 y = pow((1 - s), 3) * clt[0][1] + 3 * pow((1 - s), 2)*s * clt[1][1] + 3 * (1 - s)*pow(s, 2) * clt[2][1] + pow(s, 3) * clt[3][1]; 71 72 x1 = -3 * pow((1 - s) ,2) * clt[0][0]+ 3 * s * (1 - s) * (1 - 3 * s) * clt[1][0] + 3 * s * (2 - 3 * s) * clt[2][0] + 3 * pow(s,2)* clt[3][0]; 73 y1 = 3 * pow((1 - s), 2) * clt[0][1] + 3 * s * (1 - s) * (1 - 3 * s) * clt[1][1] + 3 * s * (2 - 3 * s) * clt[2][1] + 3 * pow(s, 2) * clt[3][1]; 74 75 length = sqrt(x1*x1 + y1*y1); 76 77 std::cout << length << std::endl; 78 79 80 for (x2 = x; x2 <= x + x1; x2 += 0.01) 81 { 82 if (x1 == 0) 83 { 84 glVertex2f(x, y); 85 glVertex2f(x, y1); 86 } 87 else 88 { 89 y2 = (y1 / x1)*(x2 - x) + y; 90 glVertex2f(x2, y2); 91 } 92 } 93 glEnd(); 94 } 95 96 97 glColor3f(1.0, 0.0, 0.0); 98 99 glBegin(GL_LINE_STRIP); 100 101 for (t = 0; t<1.1; t += 0.1) 102 { 103 104 x = pow((1 - t), 3) * clt[0][0] + 3 * pow((1 - t), 2)*t * clt[1][0] + 3 * (1 - t)*pow(t, 2) * clt[2][0] + pow(t, 3) * clt[3][0]; 105 y = pow((1 - t), 3) * clt[0][1] + 3 * pow((1 - t), 2)*t * clt[1][1] + 3 * (1 - t)*pow(t, 2) * clt[2][1] + pow(t, 3) * clt[3][1]; 106 107 glVertex2f(x, y); 108 }; 109 110 glEnd(); 111 112 glFlush(); 113 114} 115 116 117void resize(int w, int h) 118{ 119 120 121 glMatrixMode(GL_MODELVIEW); 122 glLoadIdentity(); 123 124 if (w <= h) 125 glOrtho(-5.0, 20.0, -5.0*(GLfloat)h / (GLfloat)w, 126 12.5*(GLfloat)h / (GLfloat)w, -10.0, 5.0); 127 else 128 glOrtho(-5.0*(GLfloat)w / (GLfloat)h, 129 5.0*(GLfloat)w / (GLfloat)h, -5.0, 5.0, -5.0, 5.0); 130 glScalef(3, 3, 3); 131} 132 133 134void init(void) 135{ 136 glClearColor(0.0, 0.0, 0.0, 0.0); 137} 138

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問