graphics - 如何在不使用数据和函数的情况下绘制一些图形?(乌龟模拟)
问题描述
有什么方法可以制作如下图所示的图表吗?在 Gnuplot 中,是否有类似“lineTo、moveTo、arc、...等”的命令?如果我想制作这样的图片
我应该怎么做才能制作这张照片?在海龟图形中,只需要一些代码
repeat 36 [rt 10 repeat 2 [fd 100 rt 90]]
解决方案
你可以用 gnuplot 做类似的事情。当然,gnuplot 需要知道线条起点和终点的坐标,因此您必须以某种方式计算它们。类似于下面的代码:您将坐标写入数据块并绘制它with vectors
,还要检查help vectors
. 使用 gnuplot 5.2.8 创建的图表。
代码:
### vector plot similar to turtle graphics
reset session
set size square
set angle degrees
x0 = 0
y0 = 0
a0 = 0
r0 = 10
set print $Data
do for [i=1:36] {
a0 = a0 - 10
do for [j=1:2] {
print sprintf("%g %g %g %g",x0,y0,x0=x0+r0*cos(a0),y0=y0+r0*sin(a0))
a0 = a0 - 90
}
}
set print
plot $Data u 1:2:($3-$1):($4-$2) w vectors nohead notitle
### end of code
结果:
添加:
顺便说一句:这个海龟图形命令实际上不能简化为吗?
repeat 36 [fd 100 rt 110]
是的,正如@Friedrich 所示,它可以在没有数据块的情况下完成。这是我第一次拍摄的修改版本,没有模数%
。第五列,即(x0=x0+r*cos(a),y0=y0+r*sin(a),a=a-110)
不用于绘图,仅用于计算。
代码:
### vector plot similar to turtle graphics
reset session
set size square
set angle degrees
set xrange[-2:12]
set yrange[-10:4]
r = 10
set samples 36
plot a=x0=y0=0 '+' u (x0):(y0):(r*cos(a)):(r*sin(a)): \
(x0=x0+r*cos(a),y0=y0+r*sin(a),a=a-110) w vec nohead not
### end of code
结果:(类似于上图)
推荐阅读
- c++ - 多个继承变量正确返回
- javascript - 如何使用本机反应在平面列表中显示对象数组中的数组列表?
- svg - 如何沿椭圆均匀分布点?
- android - Android Wear 模拟器自动进入环境模式
- java - 运行 groovy 程序后发生非法反射访问操作
- python - 当我尝试使用 csv.writer 写入数据时出现问题
- mysql - MySQL - 尝试为每个不同的 DATE 返回一行;显示 CASH、CREDIT 和总计
- r - 如何在ggplot中添加具有短垂直端的水平注释线?
- excel - 用于根据命名范围过滤数据透视表字段的 VBA
- java - 设置类字段,然后在方法中修改它们