|
!'方程式 (x/a)^n+(y/b)^n=1 を使用して楕円形変換します(n=2の時)
FILE GETNAME F$,"BMP,JPG,GIF,PNGファイル|*.BMP;*.JPG;*.GIF;*.PNG"
CALL PICTURELOAD(F$,XSIZE,YSIZE)
DIM M(0 TO XSIZE-1,0 TO YSIZE-1)
ASK PIXEL ARRAY (0,0) M
CLEAR
LET HX=XSIZE/2
LET HY=YSIZE/2
LET MODE=0
LET N=.5 !'N=2の時、楕円形変換
FOR YS=0 TO YSIZE-1
LET Y=YS-HY
LET RY=(1-ABS(Y/HY)^N)^(1/N)
FOR XS=0 TO XSIZE-1
LET X=XS-HX
LET RX=(1-ABS(X/HX)^N)^(1/N)
IF MODE=0 THEN
LET XX=-RY*HX+XS*RY
LET YY=Y
ELSE
LET XX=X
LET YY=-RX*HY+YS*RX
END IF
LET C=M(XS,YS)
CALL RGB(C,RR,GG,BB)
CALL PSET(XX+HX,YY+HY,RR,GG,BB)
NEXT XS
NEXT YS
END
EXTERNAL SUB RGB(X,R,G,B)
LET B=MOD(INT(X/65536),256)
LET G=MOD(INT(X/256),256)
LET R=MOD(X,256)
END SUB
EXTERNAL SUB GETPOINT(X,Y,R,G,B)
ASK PIXEL VALUE(X,Y) C
CALL RGB(C,R,G,B)
END SUB
EXTERNAL SUB GINIT(XSIZE,YSIZE)
SET BITMAP SIZE XSIZE,YSIZE
SET COLOR MODE "NATIVE"
CLEAR
SET POINT STYLE 1
SET WINDOW 0,XSIZE-1,YSIZE-1,0
END SUB
EXTERNAL SUB PSET(X,Y,R,G,B)
SET COLOR COLORINDEX(R/255,G/255,B/255)
PLOT POINTS:X,Y
END SUB
EXTERNAL SUB PICTURELOAD(N$,XSIZE,YSIZE)
SET COLOR MODE "NATIVE"
CLEAR
SET POINT STYLE 1
IF N$="" THEN STOP
GLOAD N$
LET XSIZE=PIXELX(1)+1
LET YSIZE=PIXELY(1)+1
SET BITMAP SIZE XSIZE,YSIZE
SET WINDOW 0,XSIZE-1,YSIZE-1,0
END SUB
|
|