回答編集履歴

3

.

2022/12/08 02:27

投稿

int32_t
int32_t

スコア20659

test CHANGED
@@ -16,7 +16,7 @@
16
16
  ```
17
17
  のような計算になります。
18
18
 
19
- ちなみに、元画像をループして各ピクセルの変換後の座標を求めて描画するより、変換後の座標をループして対応する元画像のピクセルを読み込んだほうが綺麗な描画結果になることが多いです。
19
+ ちなみに、元画像をループして各ピクセルの変換後の座標を求めて描画するより、変換後の座標をループして対応する元画像のピクセルを読み込んだほうが綺麗な描画結果になることが多いです。
20
20
 
21
21
  ----
22
22
 

2

SetWorldTransform()

2022/12/08 02:27

投稿

int32_t
int32_t

スコア20659

test CHANGED
@@ -18,4 +18,8 @@
18
18
 
19
19
  ちなみに、元画像をループしての各ピクセルの変換後の座標を求めて描画するより、変換後の座標をループして対応する元画像のピクセルを読み込んだほうが綺麗な描画結果になることが多いです。
20
20
 
21
+ ----
21
22
 
23
+ Windows だったらメモリDCに `SetWorldTransform()` を設定して `BitBlt()` すれば簡単にできそうな気がします。
24
+
25
+

1

.

2022/12/08 01:59

投稿

int32_t
int32_t

スコア20659

test CHANGED
@@ -7,11 +7,11 @@
7
7
  int rot_x = (int)(src_x * cos(45 * M_PI / 180) - src_y * sin(45 * M_PI / 180));
8
8
  int rot_y = (int)(src_x * sin(45 * M_PI / 180) + src_y * cos(45 * M_PI / 180));
9
9
  ```
10
- `rot_x` `rot_y` の計算に `x` `y` がまったく使われていません。おそらくすべてのピクセルがある1点に描画されているはずです。
10
+ `rot_x` `rot_y` の計算に `x` `y` がまったく使われていません。おそらくすべてのピクセルがある1点に描画されていす。
11
11
 
12
12
  「回転行列 中心」などで検索するといくらでも解説が出てくると思いますが、ここでは
13
13
  ```擬似コード
14
- rot_x = x * cos - y * sin + srcx - src_x * cos + src_y * sin;
14
+ rot_x = x * cos - y * sin + src_x - src_x * cos + src_y * sin;
15
15
  rot_y = x * sin + y * cos + src_y - src_x * sin - src_y * cos;
16
16
  ```
17
17
  のような計算になります。