代码:
;在下面的代码中调用检查
to-report calculate-line[x y angle]
let m tan angle
let A m
let B -1
let C (- m * x + y)
report (list A B C)
end
to make-line[a]; a is list containing A, B and C and in that order.
let x 0
let y((- item 2 a) / item 1 a)
let y1 0
let x1((- item 2 a) / item 0 a)
hatch 1[
set size 0.15 setxy x y
pendown
facexy x1 y1
fd 7
]
end
to check
clear-all
crt 1[
set size 2
set shape "arrow"
setxy -3 3
set heading 268
make-line calculate-line xcor ycor heading-to-angle heading
]
end
to-report heading-to-angle [ h ]
report (90 - h) mod 360
end
输出:
问题:
为什么箭头标题和方向不同?我只是从龟的坐标和头部计算一条线并绘制它。我错过了btw代码中发生的一些近似值吗?
答案 0 :(得分:2)
如果箭头居中于(0,0),它可以正常工作。从您的代码中查看此版本的检查程序:
to check
clear-all
crt 1
[ set size 2
set shape "arrow"
setxy 0 0
set heading random 360
make-line calculate-line xcor ycor heading
]
end
但如果您将setxy 0 0
更改为其他位置(例如setxy 3 2
),则整个事物会分开。这表明没有近似值,问题是你的线坐标计算。可能在计算A,B和C的列表时,但我实际上无法确定它们应该是什么,变量名称也无济于事。