某冰岚吧 关注:96贴子:3,360

回复:flash版的logo语言

取消只看楼主收藏回复



又是一个bug
dot执行程序时与在命令框里不是一个坐标系
在x方向上向左偏了250个点


24楼2016-10-07 22:06
收起回复

    一个测试,新建图层在前面加一个home这个图形的第一笔就会认定在原点,就是海龟的原点
    如果你画个正方形,想让它在原地转动最好就是用dot描


    29楼2016-10-11 00:07
    回复


      问题还是没解决坐标系依然没统一


      31楼2016-10-13 22:34
      回复
        to y圆1 r a b
        home
        ;圆心在(a,b)上
        new make e pid
        make c 2*r
        make d -1*r
        REPEAT c[dot d sqrt (r*r-d*d) dot d (sqrt (r*r-d*d))*(-1) make d d+1]
        make c 2*r
        make d -1*r
        REPEAT c[dot sqrt (r*r-d*d) d dot (sqrt (r*r-d*d))*(-1) d make d d+1]
        pu psxy e a b pd
        end
        to t椭圆 a b
        ;a,b为长短半轴(是半轴不是整轴)
        home
        make c 2*a
        make d -1*a
        REPEAT c[dot d (sqrt (1-(d*d)/(a*a)))*b dot d (sqrt (1-(d*d)/(a*a)))*b*(-1) make d d+1]
        make c 2*b
        make d -1*b
        REPEAT c[dot (sqrt (1-(d*d)/(b*b)))*a d dot (sqrt (1-(d*d)/(b*b)))*a*(-1) d make d d+1]
        end
        ;c*c=a*a-b*b ;(必须是a>b)
        ;c是焦点距离的一半
        ;焦点到椭圆的距离之和是(a+c)+(a-c)=2a
        to t椭圆1 c a
        ;c焦半距a为到两焦点距离和的一半
        home
        make e 2*a
        make d -1*a
        if a>c then make b sqrt(a*a-c*c)
        if a<c then make b sqrt(a*a+c*c)
        REPEAT e[dot d (sqrt (1-(d*d)/(a*a)))*b dot d (sqrt (1-(d*d)/(a*a)))*b*(-1) make d d+1]
        make e 2*b
        make d -1*b
        REPEAT e[dot (sqrt (1-(d*d)/(b*b)))*a d dot (sqrt (1-(d*d)/(b*b)))*a*(-1) d make d d+1]
        end


        33楼2016-10-14 00:02
        回复

          TO p平行四边形 B1 B2 J;边边角
          REPEAT 2[FD B1 RT J FD B2 RT 180-J]
          END


          34楼2016-10-14 00:09
          回复

            好像没有记录抬笔落笔的函数,而且要抬全抬要落全落, 抬落要自己控制


            35楼2016-10-14 00:15
            回复

              setxy和home都会画线,为了不画多余的线可以在前后加上pu,pd


              36楼2016-10-14 00:19
              回复

                为了不在调用函数的时候改变海龟原来的位置方向,
                也为了统一坐标系可以这样调用
                make x xcor make y ycor make z HEADING pu home pd 函数 pu setxy x y SETH z pd


                37楼2016-10-14 00:29
                回复
                  to y圆 r
                  home;统一坐标系
                  ;画圆
                  make c 2*r
                  make d -1*r
                  REPEAT c[dot d sqrt (r*r-d*d) dot d (sqrt (r*r-d*d))*(-1) make d d+1]
                  make c 2*r
                  make d -1*r
                  REPEAT c[dot sqrt (r*r-d*d) d dot (sqrt (r*r-d*d))*(-1) d make d d+1]
                  end


                  38楼2016-10-14 00:32
                  回复

                    ;准圆方程 x^2+y^2=a^2+b^2
                    ;从准圆上任一点向椭圆引两条切线,这两条切线垂直。
                    to z准圆 a b
                    ;a,b椭圆为长短半轴
                    home;统一坐标系
                    make r sqrt(a*a+b*b)
                    make c 2*r
                    make d -1*r
                    ;画圆
                    REPEAT c[dot d sqrt (r*r-d*d) dot d (sqrt (r*r-d*d))*(-1) make d d+1]
                    make c 2*r
                    make d -1*r
                    REPEAT c[dot sqrt (r*r-d*d) d dot (sqrt (r*r-d*d))*(-1) d make d d+1]
                    end


                    39楼2016-10-14 22:32
                    回复
                      ;一次函数y=kx+b
                      ;只画x-650到650,,,,,y-350到350
                      to z直线 k b
                      home
                      make c 1300
                      make d -650
                      REPEAT c[dot d k*d+b make d d+1]
                      make c 700
                      make d -350
                      REPEAT c[dot (d-b)/k d make d d+1
                      end


                      41楼2016-10-14 23:06
                      回复

                        ;一元二次函数
                        ;y=ax^2+bx+c(a≠0 abc为常数)
                        ;顶点坐标(-b/2a,(4ac-b^2)/4a)定值域的
                        to p抛物线 a b c
                        home
                        make e 1300
                        make d -650
                        REPEAT e[dot d a*d*d+b*d+c make d d+1]
                        if a>0 then[make e 350-(4*a*c-b*b)/(4*a)]
                        if a<0 then[make e 350+(4*a*c-b*b)/(4*a)]
                        make d ((4*a*c-b*b)/(4*a))
                        ;if a>0 then[REPEAT e[dot ((-1)*b+sqrt(b*b-(4*a)*(c-d))/(2*a) d dot ((-1)*b-sqrt(b*b-(4*a)*(c-d))/(2*a) d make d d+1]]
                        ;if a<0 then[REPEAT e[dot ((-1)*b+sqrt(b*b-(4*a)*(c-d))/(2*a) d dot ((-1)*b-sqrt(b*b-(4*a)*(c-d))/(2*a) d make d d-1]]
                        if a>0 then[REPEAT e[make f sqrt(d/a+(b*b-4*a*c)/(4*a*a)) dot f-b/(2*a) d dot f*(-1)-b/(2*a) d make d d+1]]
                        if a<0 then[REPEAT e[make f sqrt(d/a+(b*b-4*a*c)/(4*a*a)) dot f-b/(2*a) d dot f*(-1)-b/(2*a) d make d d-1]]
                        end


                        42楼2016-10-15 12:59
                        回复

                          STAMPOVAL 画椭圆 STAMPOVAL X Y TRUE
                          STAMPRECT 画矩形STAMPRECT X Y TRUE
                          系统自带的两个函数因为坐标系不统一所以不是以海龟为中心的
                          但是图形的中心还是在图形的中心的
                          在执行pra,,,ra,,,,,rp时不至于围外面的某点打转


                          44楼2016-10-15 21:24
                          回复

                            to d多角星 a r;a角数r外接圆半径
                            home
                            make d REMAINDER a 2
                            make e a/2 make b round a/2 make b b-1 make c 2*r *(sin ((180/a)*b)) pu fd r
                            if d=1 then [rt 180-90/a pd REPEAT a [fd c rt 180-180/a]]
                            if d=0 then [rt 180 fd 2*r rt 180-180/a pd REPEAT e[fd c rt 180-360/a] pu home fd r rt 180-180/a pd REPEAT e[fd c rt 180-360/a]]
                            pu home pd
                            end


                            45楼2016-10-15 23:37
                            回复

                              to k空心多角星 a r
                              home
                              make d REMAINDER a 2
                              make e a/2 make b (round a/2)-1 make c 2*r *(sin ((180/a)*b)) pu fd r
                              make g (round a/2)-2 make f 90-180*g/a make h sqrt(r*r-(c*c/4)) make i h/((sin(f))/(cos(f))) make j c/2-i
                              if d=1 then [rt 180-90/a pd REPEAT a [fd j pu fd (i*2) pd fd j rt 180-180/a]]
                              if d=0 then [rt 180 fd 2*r rt 180-180/a pd REPEAT e[fd j pu fd (i*2) pd fd j rt 180-360/a] pu home fd r rt 180-180/a pd REPEAT e[fd j pu fd (i*2) pd fd j rt 180-360/a]]
                              pu home pd
                              end


                              46楼2016-10-17 02:09
                              回复