mfe吧 关注:233贴子:14,191
  • 6回复贴,共1

利用MMF绘制函数图像(一)在源代码库中绘制

只看楼主收藏回复

一楼空着


1楼2016-07-04 10:30回复
    如今能画函数图像的软件多的根本数不过来。平时画函数图像其实计算器就能搞定,根本不用什么MMF。
    但还是开个教程,以充实吧的首页。
    --使用软件:CF2.5
    第一章 1.0版本
    第一步 坐标转换
    这是最麻烦的一步。所有的编程软件,诸如flashAS、Ruby、CF等,都是将原点坐标设在左上角。这就非常可恶。而且y轴正方向向下。所以第一步,先要转换坐标。
    首先制作第一个初级版本,我称之为1.0版本,即坐标固定,分度值固定,原点固定。(稍后为大家带来可以转换原点的版本)
    我们把屏幕设成640*480(MF标准尺寸)的
    然后,我们把横纵坐标全部除以32,即设为20*15的。
    否则,像Sinx这种图像根本看不出来。
    现在,假定屏幕是20*15的(1个单位代替32像素),把坐标原点设在(10,10)。
    接下来开始最烦的坐标转换了。
    我们以函数f(x)=x为例。有变量ActualX ActualY CurrentX CurrentY(前两个表示绝对坐标,后两个表示计算后的数学坐标)
    如何找出对应关系呢?我们可以猜测 两者是一次函数关系。根据待定系数法、计算解方程组 CX=AX/32-10
    验证一下 当AX=64时 cx=2-10=-8 正确。
    下面是Y坐标。同样是一次函数关系。设CY=k*AY+b
    代入。0=k*10+b
    320=k*0+b
    b=320, k=-32
    所以CY=-32*AY+320


    2楼2016-07-04 10:41
    回复
      我们已经成功转换出了坐标了。接下来我们可以开始绘制简单的图像。
      在此之前,还需要推导一个Y坐标逆运算公式。因为我们的基本思路是,由绝对X坐标,推出数学X坐标,从而推出数学Y坐标,反推出绝对Y坐标。毕竟,在MMF里面,显示方位的还是绝对坐标。
      既然CY=-32*AY+320
      那么-32*CY=AY+320
      AY=-32*CY-320
      先建立一个2*2的小ACTIVE点。
      绘制f(x)=x的图像。
      代码:(-...表示条件,:...表示动作)
      -Always
      :ActualX=ActualX+1
      :CurrentX=ActualX/32-10
      :CurrentY=CurrentX
      :ActualY=-32*CurrentY-320
      :Create Point at (0,0)
      :Set X Position Point to ActualX
      :Set Y Position Point to ActualY


      3楼2016-07-04 10:46
      收起回复
        【互动2】如果你已经考虑出了上述问题,那么请考虑y=x^-2图像靠近x轴时怎么解决? 同理还有secX tanX.....一个个解决是不可能的。
        欢迎将你的答案放到下面。精彩的答案可能得到奖励哟!
        【提示:可以利用CurrentX对应的Y与CurrentX+1对应的Y的差值关系,实现差距自动填补,从而得到通解!】


        5楼2016-07-04 11:03
        回复
          233没人进来 at几个人 @无视我…… @快乐mario8 @冻结的双重射手


          来自手机贴吧6楼2016-07-05 13:32
          回复