
d3moduleを利用した
波紋のエフェクトの3次元版。波の高さによって明るさが変わるようにもなっています。
#include "d3m.hsp"
#define ctype round(%1) double(strf("%%0.0f", %1))
#const CONST_A 0.1
#const CONST_B 7
buffer 1
onclick goto *start
*start
onclick 0
dialog "jpg;*.gif;*.bmp", 16
if stat == 0 : end
gsel 1 : picload refstr
sizeX = ginfo_winx
sizeY = ginfo_winy
centerX = ginfo_winx / 2
centerY = ginfo_winy / 2
screen 0, sizeX, sizeY, SCREEN_NORMAL
gmode GMODE_GDI, sizeX, sizeY
gcopy 1, 0, 0
d3setcam sizeX/2, -300, sizeY/4, sizeX/2, 0, sizeY/2
redraw 0
boxf
gmode GMODE_MEM, 1, 1
repeat sizeY : targetY = cnt
title "変換中…" + str(100 * cnt / sizeY) + "%"
repeat sizeX : targetX = cnt
d3getpos vx, vy, targetX, 0, targetY
dx = vx - centerX
dy = centerY -vy
theta = atan(dy, dx)
dist = sqrt(dx * dx + dy * dy)
copyX = centerX + round(cos(theta) * (dist + sin(dist * CONST_A) * CONST_B))
copyY = centerY + round(sin(theta) * (dist + sin(dist * CONST_A) * CONST_B))
pos targetX, targetY
gmode GMODE_ALPHA, 1, 1, absf(sin(dist * CONST_A)) * 64 + 192
gcopy 1, copyX, copyY
loop
await 10
loop
redraw 1
title "変換終了 - クリックで再開"
onclick 1
stop
0 件のコメント:
コメントを投稿