编程中使用的数学

不知道逻辑算不算数学, 权当不算, 只有加减乘除才算吧, 罗列一下看看到到能碰到那些东西.

网页斑马纹问题

记得自己最找碰到的数学问题就是网页新闻列表上实现斑马纹的问题. 大概的效果如下图:

斑马纹

这个问题的解决办法实际很简单, 就是在迭代“新闻标题”列表呈现成 HTML 输出的时候判断当前行 (row) 的行号 (i) . 如果行号为偶数, 则设置当前行所在HTML 表格的背景颜色 (bgcolor) 为深色, 否则不设置. 大概的程序表达 (类 C 语言表达) 为:

if ((i/2.0)==(i/2))
    //设置背景色
else
    //不设置背景色

问题就这样解决了, 说实话, 此问题是小强自认为编程过程中所解决的第一个数学问题. 虽然只是简单的判断当前当前行号是否为偶数, 或者说是判断当前行是否为偶数行, 但已经是非常的兴奋.

 

网页图片转起来

本博客内有一篇博文, 标题为<一段脚本>, 是从博客园内转过来的, 代码整理如下:

R=0; 
x1=.1; 
y1=.05; 
x2=.25; 
y2=.24; 
x3=1.6; 
y3=.24; 
x4=300; 
y4=200; 
x5=300; 
y5=200; 
DI=document.images; 
DIL=DI.length;

function A(){
    for(i=0; i-DIL; i++){
        DIS=DI[i].style;
        DIS.position='absolute'; 
        DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; 
        DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5;
    }
    R++;
}

setInterval('A()',5);
void(0);

核心代码为:

function A(){
    for(i=0; i-DIL; i++){
        DIS=DI[i].style;
        DIS.position='absolute'; 
        DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; 
        DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5;
    }
    R++;
}
这段代码可以将当前页面中所有图像以某个点为中心开始前后顺序旋转, 呈现出很漂亮的效果.

正如高中数学所讲到的 y=Math.sin(x) 可以使得 y 在一个固定的范围内震荡, 上面的函数(function A())可以设置当前页面元素 DI[i] 的 Left 和 Top 样式(style), 使得其 Left 值和 Top 值都震荡起来, 而 Top 样式为 Math.cos() 值可以使得两个震荡值产生一个偏差, 从而不会出现一个很规则的运动轨迹. x5 与 y5 为震荡零点与屏幕左上角的偏移. x4 与 y4 为震荡的横和纵半径.

计算机编程上遇到的好多漂亮的曲线实际上都是数学上的最简单的函数叠加和迭代出来的结果, 如果不能一开始就领悟这些, 会使人匪夷所思.

 

未完 (前面的前几天就写好了, 下面的没有时间补上, 先发上来)…

 

TUPUNCO

2008-06-25

Good Luck Everybody, Everyday...




[本日志由 tupunco 于 2008-06-26 08:38 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.