トップページ > 記事閲覧
DrawPolygon2Dで回転ができません
名前:焼肉 日時: 2021/06/23 00:15

お世話になっております。 DrawPolygon2Dを使用し、回転しようと思ったのですが、うまく行きません。 DrawPolygon2DではVertexのポジションの値を回転しても回転はできないのでしょうか? 回転しないとこうなるのですが、 ttps://file6-d.kuku.lu/files_file2/20210623-0010_0ad794c3d395bd27e357eeb4f2943714.png ポジションを回転させるとY軸回転のような形になってしまいます。 ttps://file1-d.kuku.lu/files_file19/20210623-0011_8d64f19c997463831a974cd2c7a295c5.png [code] sx=100; sy=100; gx=130; gy=130; // 回転ダミー sx+=50; sy+=10; gx-=10; gy-=10; // 回転ダミーここまで VERTEX2D Vert[ 6 ] ; // 2ポリゴン分の頂点のデータをセットアップ Vert[ 0 ].pos = VGet( sx, sy, 0.0f ) ; Vert[ 0 ].rhw = 1.0f ; Vert[ 0 ].dif = color ; Vert[ 0 ].u = su ; Vert[ 0 ].v = sv ; Vert[ 1 ].pos = VGet( gx, sy, 0.0f ) ; Vert[ 1 ].rhw = 1.0f ; Vert[ 1 ].dif = color ; Vert[ 1 ].u = gu ; Vert[ 1 ].v = sv ; Vert[ 2 ].pos = VGet( sx, gy, 0.0f ) ; Vert[ 2 ].rhw = 1.0f ; Vert[ 2 ].dif = color ; Vert[ 2 ].u = su ; Vert[ 2 ].v = gv ; Vert[ 3 ].pos = VGet( gx, gy, 0.0f ) ; Vert[ 3 ].rhw = 1.0f ; Vert[ 3 ].dif = color ; Vert[ 3 ].u = gu ; Vert[ 3 ].v = gv ; Vert[ 4 ].pos = VGet( sx, gy, 0.0f ) ; Vert[ 4 ].rhw = 1.0f ; Vert[ 4 ].dif = color ; Vert[ 4 ].u = su ; Vert[ 4 ].v = gv ; Vert[ 5 ].pos = VGet( gx, sy, 0.0f ) ; Vert[ 5 ].rhw = 1.0f ; Vert[ 5 ].dif = color ; Vert[ 5 ].u = gu ; Vert[ 5 ].v = sv ; // 2Dの2ポリゴンの描画 DrawPolygon2D( Vert, 2, bm.graphHandle, TRUE, GlobalPos ) ; [/code]
メンテ

Page: 1 |

Re: DrawPolygon2Dで回転ができません ( No.1 )
名前:名無三 日時:2021/06/23 00:53

そもそもそれは回転なんですか?単に矩形を縮めてるだけに見えるんですが…
メンテ
Re: DrawPolygon2Dで回転ができません ( No.2 )
名前:名無三 日時:2021/06/23 01:11

これでいいんじゃないかなたぶん(確認してないけど) sx = 100; sy = 100; gx = 130; gy = 130; mx = sx + (gx - sx) / 2; mx = sy + (gy - sy) / 2; rad = DX_PI_F / 4; x1 = mx + (-(gx - sx) / 2) * cos(rad) + (-(gy - sy) / 2) * sin(rad); y1 = my + (-(gy - sy) / 2) * cos(rad) - (-(gx - sx) / 2) * sin(rad); x2 = mx + ((gx - sx) / 2) * cos(rad) + (-(gy - sy) / 2) * sin(rad); y2 = my + (-(gy - sy) / 2) * cos(rad) - ((gx - sx) / 2) * sin(rad); x3 = mx + (-(gx - sx) / 2) * cos(rad) + ((gy - sy) / 2) * sin(rad); y3 = my + ((gy - sy) / 2) * cos(rad) - (-(gx - sx) / 2) * sin(rad); x4 = mx + ((gx - sx) / 2) * cos(rad) + ((gy - sy) / 2) * sin(rad); y4 = my + ((gy - sy) / 2) * cos(rad) - ((gx - sx) / 2) * sin(rad); こことかで頂点の座標の計算を勉強してもらったうえで上を修正して使ってもらったら動くと思います www.geisya.or.jp/~mwm48961/kou2/linear_image3.html
メンテ
Re: DrawPolygon2Dで回転ができません ( No.3 )
名前:焼肉 日時:2021/06/23 07:37

すいません。実際のコードは下記の方法やっていました。 これでできないので、回転は多分できないと思います。 // 回転の原点座標取得 float ox = 0;//sx + (gx * 2) * radU; float oy = 0;//sy + (gy * 2) * radV; float distance, rad, radX, radY; // 左上 distance = (sqrt((oy-ox)*(oy-ox)+(sy-sx)*(sy-sx))); rad = atan2(sy - oy,sx - ox); radX = distance * cos(rad + angle); radY = distance * sin(rad + angle); sx = radX; sy = radY; // 右下 distance = (sqrt((oy-ox)*(oy-ox)+(gy-gx)*(gy-gx))); rad = atan2(gy - oy,gx - ox); radX = distance * cos(rad + angle); radY = distance * sin(rad + angle); gx = radX; gy = radY; ※追記。 4点で計算していませんでした。 もう一度計算しなおします。
メンテ
Re: DrawPolygon2Dで回転ができません ( No.4 )
名前:名無三 日時:2021/06/23 08:18

いやそれでは右上(誤記:左上)と左下(誤記:右下)しか指定して無いじゃ無いですか、提示したやつみたいに4辺全部計算しましたか?
メンテ
Re: DrawPolygon2Dで回転ができません ( No.5 )
名前:焼肉(解決済み) 日時:2021/06/23 07:46

すいません。できました。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存