HSP | 線分ではなく直線を描画
HSP | 線分ではなく直線を描画
// モジュール
#module "kerupanium"
#deffunc line2 int _p1,int _p2,double _p3
/*
line2命令 : 線分ではなく直線を描画
_p1 : X座標 、_p2 : Y座標 、_p3 : 角度値(ラジアン)
指定したX,Y座標を通る角度_p3の直線を描画
*/
switch tan(_p3)
case 0.0
x1=0
y1=_p2
x2=640
y2=_p2
swbreak
default
if _p3<atan(_p1,_p2) {
x1=double(_p1)-double(_p2)/tan(_p3)
y1=0
} else {
x1=0
y1=double(_p2)-double(_p1)*tan(_p3)
}
if _p3<atan(640-_p1,480-_p2) {
x2=double(_p1)+(480.0-double(_p2))/tan(_p3)
y2=480
} else {
x2=640
y2=double(_p2)+(640.0-double(_p1))*tan(_p3)
}
swbreak
swend
line x1,y1,x2,y2
return
#global
// サンプル
s2=0.0
*main
redraw 0
color : boxf
a1=191
a2+ : a2\191
b1=255
s1=0.0
s2+0.02
x1=320
y1=240
repeat 50
hsvcolor a1+a2,255,b1 : line2 x1,y1,s1+s2
s1-0.05
a1- : a1\382
b1-10 : if b1<0 : b1=0
x1-8
y1+6
loop
redraw
await 15
goto *main
- 補足 -
#deffunc line3 int _p1,int _p2,int _p3,int _p4
line2 _p1,_p2,atan(_p3,_p4)
return
を追加 (「#deffunc line2」~「return」の後に) して、line3命令を使ってください。