Project1

标题: 某线算法一个 [打印本页]

作者: end55rpg    时间: 2012-12-13 23:15
标题: 某线算法一个
#y=ax**2+ bx+ c
class Qua

def initialize(a=0,b=0,c=0)
@a,@b,@c=a,b,c
end

def topoint(a=@a,b=@b,c=@c)
  x = (b.to_f / (-2*a))
  y = get_y(x)
  return "[#{x},#{y}]"
end


#坐标算函数 一般式
def run(ar1,ar2,ar3)
  x1,x2,x3,y1,y2,y3=ar1[0],ar2[0],ar3[0],ar1[1],ar2[1],ar3[1]
  m1=(y1-y2) / (x1-x2)
  m2=(y2-y3) / (x2-x3)
  m3=x1-x3
  a=(m1-m2) / m3
  b=m1-a*(x1+x2)
  c=y1-a*(x1**2)-b*x1
  return false if b**2-4*a*c < 0
  @a,@b,@c = a,b,c
  return a,b,c
end


#算函数 两根(y=0)+任一坐标
def walk(arr,xn,xm)
  #y=a(x-x1) * x-x2
  #x1*x2=c / a
  #-a(x1+x2)=b

  x,y = arr
  a=(y.to_f / ((x-xn)*(x-xm)))
  b=(-a * (xn+xm))
  c=(xn * xm * a)
  return false if b**2-4*a*c < 0
  @a,@b,@c = a,b,c
  if (a-a.floor).to_s.length > 5
    a="#{y} / #{(x-xn)*(x-xm)}"
    b="#{a} * #{-(xn+xm)}"
    c="#{xn * xm} * #{a}" unless xn*xm == (x-xn)*(x-xm)
  end
  return a,b,c
end


def get_y(x)
  y=(@a*x**2+@b*x+@c)
  return y
end


#解2次方程
def get_x(y)
  #y=ax2+bx+c
  c=@c-y
  return false if @b**2-4*@a*c < 0
  x1= (-@b+Math.sqrt(@b**2-4*@a*c)).to_f / (2*@a)
  x2= ([email protected](@b**2-4*@a*c)).to_f / (2*@a)
  return x1,x2
end


#画抛物线
  def draw
key=eval(topoint).to_a
orz=[-key[0],-key[1]]
if key[1]!=0
    print("□"*19+"●\n");
  else
    print("←"+"□"*18+"●\n");
  end
for i in 1..3
y1=key[1]-i*2
x1,x2=get_x(y1)
p(x1,x2)
if @a < 0
  p(key[0].abs-x1.abs))
  t=""
  mx=(key[0].abs-x1.abs).abs
  if x1 >= -19 and x1 <= key[0]
    t+="□"*(20-1-mx)+"●"
  end
  if x2 >= -19 and x2 <= key[0]
    t+="□"*(20-1-mx)+"●"
  end
   if x1 > key[0] and x1 <= 40
    t+="□"*(mx*2-1)+"●"
  end
  if x2 <= 40 and x2 > key[0]
    t+="□"*(2*mx-1)+"●"
  end
  print t+"\n"
else
#开口向下loading
end

end#循环的
end
end


$scence=Qua.new(-18,948,-10560)
p"WORK OUT a b c:"
#p $scence.walk ([0,1],-1,6)
p"TOP POINT:"
p $scence.topoint
@yy=1;p"While y=#{@yy},get X:"
p $scence.get_x(@yy)
#$scence.get_y
p $scence.run([2,2],[1,0],[3,0])
$scence.draw

作者: end55rpg    时间: 2012-12-13 23:17
倒霉忘记备份,,,这是bug版
draw不行呜呜
作者: myboy2011    时间: 2012-12-14 08:48
看不懂
作者: R-零    时间: 2012-12-14 16:44
最近学校里正好无聊滴写一些数学上的rgss代码中




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1