如何在flash中,用as3.0代码实现绘制反比例函数曲线 5
输入参数k,绘制y=k/x的函数曲线。主要是不知道graphics.moveTo()和graphics.lineTo()的起点和终点如何写?麻烦懂的大佬指点一下。
你好,我的原点位置为(200,200),k3是输入的K值,这样绘制不出图象,麻烦看看问题出在哪里了?
我来答
分享
举报
2个回答
#热议# 东京奥运会金牌大猜想?yunqingyi1 2018-04-28 · TA获得超过262个赞关注
graphics.moveTo(起点),这句相当于把绘制点移到某地,
以后的graphics.lineTo(终点),这里的终点就是下一个线段的起点。
要划这个曲线首先要知道自己划的区域是在哪里,个人认为应该按照曲率进行线段分割,既能够保证曲线的圆滑,又可以尽量减少线段的数量。
最简单的办法就是以原点中心为圆心,以与x轴夹角为量度,平均分配弧度,与y=k/x相交,链接这些所有的点,理论上这些线段的夹角应该相同(或近似),你分配的单位弧度越小,精度越高。
creatline(1000,360,this.graphics);
k值别太小,记住这是像素,精度80就非常圆滑了,还有曲线是倒着的,因为flash里y轴是向下的,原点在左上角。如果想跟常用坐标一样,就将y值为负,然后x减去你想要的位置。
function creatline(k:Number,jingdu:int,g:Graphics){
var unit:Number=Math.PI*0.5/jingdu;
var x:Number=Math.sqrt(k/Math.tan(unit));
var y:Number=k/x;
g.clear();
g.lineStyle(1,0x000000);
g.moveTo(x,y);
var max:int=jingdu;
for(var i:int=2;i<max;i++){
x=Math.sqrt(k/Math.tan(unit*i));
y=k/x;
g.lineTo(x,y);
}
}
收起追问追答
追问
你好,我的原点位置为(200,200),k3是输入的K值,这样绘制不出图象,麻烦看看问题出在哪里了?
追答
x-200,就负了,就到远原点左边去了,y的负值就跑到原点上面去了,也就是说你现在将图像画到了原点的左上方,一般原点都在影片的左上角,那么很可能你画到屏幕外面了,再有你要确定你那个文字输入确定是正确的数字,最好trace一下那个k值,是否是非0的数字。其实,你最好用我原始的方法绘制到单独的影片剪辑中,然后移动影片剪辑的位置,然后再修改缩放的值,将y轴缩放改为-1,这样更清晰明了。其实反比例函数绘制一次就足够了,你的k值实际上就是图像的缩放比例。嘿嘿。一次性绘制,增加第一个点和最后一个点,分别在x轴和y轴的极远端,比例符合你的函数。以后就通过k值进行缩放就可以了。
追问
十分感激你的详细解答,可是,我按照你说的这种办法还是绘制不出来(内心十分绝望,毕业设计就卡在这一块了,呜呜...)请问方便给个邮箱吗?我想把我的半成品发给你看看,请你帮忙指导一下,拜托了!
抢首赞
评论(1)
分享
举报收起
网雨霏霏 2018-04-26 · TA获得超过1万个赞关注
有意思,明天我试试看
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。