| 赞 | 0  | 
 
| VIP | 12 | 
 
| 好人卡 | 42 | 
 
| 积分 | 7 | 
 
| 经验 | 44348 | 
 
| 最后登录 | 2025-5-10 | 
 
| 在线时间 | 792 小时 | 
 
 
 
 
 
Lv2.观梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 704 
 
        - 在线时间
 - 792 小时
 
        - 注册时间
 - 2011-10-20
 
        - 帖子
 - 2394
 
 
  
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
#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 
 |   
 
 
 
 |