博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几何之美(二)
阅读量:7144 次
发布时间:2019-06-29

本文共 1784 字,大约阅读时间需要 5 分钟。

hot3.png

       在Processing中,最常用也是最常见的当属点,线,圆等的坐标了,那么先从坐标讲起。目前使用最广泛的度量体系就属笛卡尔坐标系统了。笛卡尔数学由著名的法国哲学家、物理学家、生理学家、数学家勒奈·笛卡尔(1596-1650)发明,并以他的名字命名。笛卡尔不仅创立了解析几何,将当时完全分离的代数学和几何学联系到了一起,还在回答“怎样判断某件事物是真的?”这个哲学问题上迈出了一大步。

       大家看下图:

143938_QZUe_216330.png

void setup() {  size(640, 360);  noStroke();  noLoop();}void draw() {  drawCircle(width/2, 280, 6);}void drawCircle(int x, int radius, int level) {                      float tt = 126 * level/4.0;  fill(tt);  ellipse(x, height/2, radius*2, radius*2);        if(level > 1) {    level = level - 1;    drawCircle(x - radius/2, radius/2, level);    drawCircle(x + radius/2, radius/2, level);  }}

       通过了简短的代码,绘制了很多对称呈灰度显示的大圆和小圆。通过在draw()方法中调用drawCircle()这个画圆的工具,我们轻松地生产出他们。不知道大家有没有发现,我可以将两个同级对称的圆用坐标轴进行分割,那么两个圆就是相对于y轴镜面对称,每两个同级圆其实就是共享一个坐标系统。那么其实我这里就是绘制了31个嵌套的坐标系统(除最外面的大圆)。

再如下图:

145045_1SBt_216330.png

       一上来大家可能看的不是太明白。这是什么呀?可能有些人会发问。其实这是三张频谱图。用来分别映射我们鼠标的动作:最上面那张是表示鼠标在x轴上的运动情况,中间那幅表示鼠标在y轴上的运动情况,而最下面那张表示鼠标点击这个动作的发生和延迟情况。

       下面是他的代码实现:

int[] xvals;int[] yvals;int[] bvals;void setup() {  size(640, 360);  noSmooth();  xvals = new int[width];  yvals = new int[width];  bvals = new int[width];}int arrayindex = 0;void draw(){  background(102);    for(int i = 1; i < width; i++) {     xvals[i-1] = xvals[i];     yvals[i-1] = yvals[i];    bvals[i-1] = bvals[i];  }   // Add the new values to the end of the array   xvals[width-1] = mouseX;   yvals[width-1] = mouseY;  if(mousePressed) {    bvals[width-1] = 0;  } else {    bvals[width-1] = 255;  }    fill(255);  noStroke();  rect(0, height/3, width, height/3+1);  for(int i=1; i

       不知道大家有没有发现,前面两张图很像我们中学时代学的正弦与余弦曲线。上面的白色平行线和中间那条黑色平行线就是他们分别对应的x轴,神奇吧。如果你鼠标移动的越快,这些曲线的幅宽则越小。同样道理,如果你停留在鼠标上的时间越长,那么当你点击之后移开鼠标之前产生的直方图的跨度则越大。

       这些都是几何学中坐标轴的妙用,通过坐标轴的变换我们还可以得出很多很多有趣的2D和3D图形。大家还不赶快开动脑筋和双手来创造他们吧。

       这一节就先讲到这里,欢迎关注本连载博文《几何之美》的下一篇。谢谢大家!

转载于:https://my.oschina.net/u/216330/blog/210326

你可能感兴趣的文章
saltstack之SLS文件
查看>>
JAVA构建缓存
查看>>
解决:Loading kernel module CAP_SYS_MODULE CAP_NET_ADMIN alias netdev-eth0 instead
查看>>
wav2letter-基于深度学习的语音识别
查看>>
Java class.forname()和newinstance
查看>>
学习计划书
查看>>
[iOS Animation]-CALayer 视觉效果
查看>>
wps的ppt放映时不能完全全屏的解决方法
查看>>
我的友情链接
查看>>
本地存储
查看>>
react-native环境配置入坑指南.
查看>>
使用qemu
查看>>
小试下新博客,一个列传行的SQL
查看>>
带你一分钟理解闭包--js面向对象编程
查看>>
MySql基本使用方法
查看>>
LAME的“命令行”
查看>>
PyQt5学习-day1 -4 退出按钮
查看>>
使用Parallel.Invoke并行你的代码
查看>>
口袋笔记VS松鼠笔记
查看>>
silverlight 将chart图倒入到excel
查看>>