提示画像ですが引数でstart,endを設定してその真ん中の座標を中心に線を回転させたいのですがこれどうやればいいのでしょうか?コメント部のコードの実装方法がわかりません。他が違う可能性もありますが一番怪しいのはここなのですがどうやって回転させるのでしょうか?
cpp
1 2 // ##################################### 線 描画 ##################################### 3 void DrawLine(glm::vec2 start,glm::vec2 end, GLfloat size,float r, glm::vec4 color) 4 { 5 float dx = 1.0f / (FrameWork::getWindowContext()->getSize().x / 2); 6 float dy = 1.0f / (FrameWork::getWindowContext()->getSize().y / 2); 7 float c = 1.0f / 255.0f; 8 glColor4f(color.x * c, color.y * c, color.z * c, color.w * c); //カラー 9 10 glLineWidth(size); //サイズ 11 12 //////////////////////////////////////////////////////////////// 13 glm::vec2 p; 14 p.x = (1.0f - (end.y * dy)) - ((start.x * dx) - 1.0f); 15 p.y = ((end.x * dx) - 1.0f) - ((start.x * dx) - 1.0f); 16 /// /////////////////////////////////////////////////////////// 17 18 glPushMatrix(); 19 glTranslated(p.x,p.y, 0); 20 glRotated(r, 0, 0, -1); 21 22 23 24 glBegin(GL_LINE_LOOP); 25 26 27 //始点 28 glm::vec2 posA; 29 posA.x = (start.x * dx) - 1.0f; 30 posA.y = 1.0f - (start.y * dy); 31 32 //終点 33 glm::vec2 posB; 34 posB.x = (end.x * dx) - 1.0f; 35 posB.y = 1.0f - (end.y * dy); 36 37 glVertex2f(posA.x, posA.y); //始点 38 glVertex2f(posB.x, posB.y); //終点 39 40 glEnd(); 41 glFinish(); 42 glPopMatrix(); 43 44 45 } 46
どれほどあなたの作ったフレームワークが優秀なのかわかりませんが、
もっと最小の実装から試したほうがいいですよ、問題の切り分けが難しくなるので。
回転させるものが線だろうが楕円だろうが,やることの理屈は一緒なわけで.
https://teratail.com/questions/345582
理屈が分かっていて,それを実装したつもりだけども動作が怪しいのなら「デバッグしましょう」だけの話.
あなたの回答
tips
プレビュー