设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1613|回复: 3
打印 上一主题 下一主题

[讨论] 某线算法一个

[复制链接]

Lv2.观梦者

梦石
0
星屑
687
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

跳转到指定楼层
1
发表于 2012-12-13 23:15:54 手机端发表。 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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

Lv2.观梦者

梦石
0
星屑
687
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

2
 楼主| 发表于 2012-12-13 23:17:01 手机端发表。 | 只看该作者
倒霉忘记备份,,,这是bug版
draw不行呜呜

点评

备份问题参考紫苏的“彻底解决10s的备份异常”  发表于 2012-12-13 23:42
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
537 小时
注册时间
2011-6-28
帖子
655
3
发表于 2012-12-14 08:48:04 | 只看该作者
看不懂
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
767
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
4
发表于 2012-12-14 16:44:16 | 只看该作者
最近学校里正好无聊滴写一些数学上的rgss代码中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-19 06:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表