我写了一个java版本的实现,在android当中效果也实现了。是一样的,你可以把代码当中提示点和辅助线的都打开,我在源码中都注释掉了

public void DrawBezier(int x[],int y[],intn,Graphics g){inti,j;doublet;//暂时存储传入的参数X和Y数组

double dx[] = new double[100];double dy[] = new double[100];double px[] = new double[100];double py[] = new double[100];for(i=0;i

{

px[i]=x[i];

py[i]=y[i];

}for(i=0;i<100;i++)

{

dx[i]= 0;

dy[i]= 0;

}for(i=0;i<100;i++)

{

t= (double)(((double)(i-1))/100);for(j=0;j

{

dx[i]+=Math.pow(1-t,n-1-j)*Math.pow(t,j)*C(n-1,n-1-j)*px[j];

dy[i]+=Math.pow(1-t,n-1-j)*Math.pow(t,j)*C(n-1,n-1-j)*py[j];

}

}int drawX[] = new int[100];int drawY[] = new int[100];

drawX[0] = (int) dx[0];

drawY[0] = (int) dy[0];for(i=1;i<100;i++){

drawX[i]= (int) dx[i];

drawY[i]= (int) dy[i];

g.drawLine(drawX[i-1],drawY[i-1], drawX[i],drawY[i]);

}

g.drawPolyline(drawX, drawY, n);

}public double C(int a,intb){inti,temp;int s1 = 1,s2 = 1,s3 = 1;if(a

{

i=a;

a=b;

b=i;

}

temp=b;while(temp>0)

{

s1*=temp;

temp--;

}

temp=a;while(temp>0)

{

s2*=temp;

temp--;

}

temp= a-b;while(temp>0)

{

s3*=temp;

temp--;

}return s2/(s1*s3);

}/*** 模拟翻页函数

*@paramPointX触摸点X

*@paramPointY触摸点Y

*@paramendX终止点,一般为书页的右下角X

*@paramendY终止点Y

*@paramgraphics 绘图的graphics*/

public void Turn(int PointX , int PointY ,int endX ,intendY,Graphics graphics){

Point a= newPoint(PointX, PointY);

Point f= newPoint(endX,endY);

Point g= new Point((a.x+f.x)/2,(a.y+f.y)/2);

Point e= newPoint();

Point h= newPoint();

h.x=f.x;

e.y=f.y;double kBar = -1.0/((double)(f.y-g.y)/(double)(f.x-g.x));double q = g.y-kBar*g.x;

h.y= (int) (h.x*kBar+q);

e.x= (int) ((e.y-q)/kBar);

Point m= new Point((a.x+e.x)/2,(a.y+e.y)/2);

Point n= new Point((a.x+h.x)/2,(a.y+h.y)/2);

kBar= (double)(m.y-n.y)/(double)(m.x-n.x);

q= m.y-kBar*m.x;

Point i= newPoint();

Point j= newPoint();

i.x=f.x;

j.y=f.y;

i.y= (int) (kBar*i.x+q);

j.x= (int) ((f.y-q)/kBar);

Point key1,key2;

key1= newPoint();

key2= newPoint();

key1=MidPoint(MidPoint(j, m), e);

key2=MidPoint(MidPoint(n, i), h);int x[] = new int[3];int y[] = new int[3];

x[0] = j.x;x[1] = e.x;x[2] =m.x;

y[0] = j.y;y[1] = e.y;y[2] =m.y;

DrawBezier(x, y,3, graphics);

x[0] = i.x;x[1] = h.x;x[2] =n.x;

y[0] = i.y;y[1] = h.y;y[2] =n.y;

DrawBezier(x, y,3, graphics);

graphics.drawLine(m.x, m.y, a.x, a.y);

graphics.drawLine(n.x, n.y, a.x, a.y);

graphics.drawLine(key1.x, key1.y, key2.x, key2.y);

String statString= "a: "+a.x+" "+a.y+"\n"+

"f: "+f.x+" "+f.y+"\n"+

"n: "+n.x+" "+n.y+"\n"+

"m: "+m.x+" "+m.y+"\n"+

"key1: "+key1.x+" "+key1.y+"\n"+

"key2: "+key2.x+" "+key2.y

;

graphics.drawString(statString,40, 40);

graphics.drawString("a", a.x, a.y);

graphics.drawString("f", f.x, f.y);

graphics.drawString("key1", key1.x, key1.y);

graphics.drawString("key2", key2.x, key2.y);

graphics.drawString("m", m.x, m.y);

graphics.drawString("n", n.x, n.y);

graphics.drawString("g", g.x, g.y);

graphics.drawString("e", e.x, e.y);

graphics.drawString("i", i.x, i.y);

graphics.drawString("j", j.x, j.y);

graphics.drawLine(a.x, a.y, f.x, f.y);

graphics.drawLine(m.x, m.y, n.x, n.y);

graphics.drawLine(e.x, e.y, h.x, h.y);

graphics.drawLine(i.x, i.y, j.x, j.y);

}publicPoint MidPoint(Point p1,Point p2){return new Point((p1.x+p2.x)/2,(p1.y+p2.y)/2);

}static classLine{public doubleK;public doubleB;public staticLine getLine(Point p1,Point p2) {

Line tLine= newLine();

tLine.K= (p1.y-p2.y)/(p1.x-p2.x);

tLine.B= p1.y-tLine.K*p1.x;returntLine;

}

}

java 贝塞尔_java贝塞尔曲线翻页效果相关推荐

  1. Java电子书平滑翻页效果_移动端页面平滑翻页的解决方案

    随着近几年移动营销页的火爆,催生了一个中国式的名词「H5」.而 H5 最常见的形态就是类似幻灯片翻页效果. 我们需要制作 H5 的时候,最快的办法就是使用一些滑动插件库,如 iDangero.us 出 ...

  2. linux+手机+翻页,在Android手机上实现阅读器的翻页效果

    本篇文章来谈谈怎么使用java实现翻页效果,就像电子阅读器那样. 现在先来看看翻页的原理图: 先了解各个字母表示的含义: A-把书页翻起来后看到的背面区域 B-把书页翻起来后看到的下一页的一角 C-当 ...

  3. android 阅读器自动滚动,在Android手机上实现阅读器翻页效果.doc

    在Android手机上实现阅读器翻页效果 先了解各个字母表示的含义:A-把书页翻起来后看到的背面区域B-把书页翻起来后看到的下一页的一角C-当前页的可见部分.a-手指滑动页角到达的位置b-当前页翻起来 ...

  4. android 电子书源码,翻页效果

    这两天模仿着做了一个apk电子书的应用,有翻页效果,本来是想学一下自己写的,无奈,最后偷懒使用了别人写的 翻页类 PageWidget.java 下面是工程文件的结构 这个是写的类的包结构,PageV ...

  5. 用Cocos Creator 模拟书本翻页效果

    1.简介 本文主要探讨了如何使用CocosCreator来模拟书本翻页效果,分别介绍了通过使用贝塞尔曲线和verlet积分算法来模拟书页底边在翻页过程中的弯曲形变,最后通过自定义assembler传入 ...

  6. 用 Cocos Creator 模拟书本翻页效果

    本篇文章作者:乐府-贝塔 乐府-贝塔:乐府前端核心开发,从事游戏开发多年,从 Cocos2d-x 做到 Cocos Creator,擅长渲染技术的相关优化.多年的前端开发经验激发了对技术研究的深厚兴趣 ...

  7. Android翻页效果原理实现之翻页的尝试

    炮兵镇楼 在<自定义控件其实很简单>系列的前半部分中我们用了整整六节近两万字两百多张配图讲了Android图形的绘制,虽然篇幅很巨大但仍然只是图形绘制的冰山一角,旨在领大家入门,至于修行成 ...

  8. 教你仿写 Flipboard 的翻页效果

    前言 自从清明放假之后,状态就一直一般般,(放假使我快乐,不要上学,我要放假!)导致更文也断了一段时间,鸽了好一段时间.痛定思痛,最近决定重新恢复更文.鉴于前段时间在学习扔物线大大 HenCoder ...

  9. flipboard的翻页效果的实现

    最近看到flipboard的翻页效果很不错,就想着把他给实现,整个效果做的差不多了,还有一些细节要完善,现在放上来.我学android全靠自学的,而且的代码的质量也难保证,还希望各位大神批评指正那. ...

最新文章

  1. android 循环平移动画
  2. 网页中PNG透明背景图片的完美应用
  3. 界面-工作者线程结构之:异步委托调用
  4. 814. Binary Tree Pruning
  5. Fabio技术手册(2):部署
  6. python题目及解析_python知识点总结以及15道题的解析
  7. flutter天气_牛笔!自己用Flutter撸一个天气APP
  8. Silverlight 中文教程第四部分:使用 Style 元素更好地封装观感 (木野狐译)
  9. 书单丨724运维日,为运维人干杯
  10. Java Tomcat SSL 服务端/客户端双向认证
  11. 没有tools.jar包的解决办法
  12. FISCO BCOS Failed to connect to nodes: [ ssl hanshake failed:/192.168.64.131:20200]
  13. Android端直播系统开发入门
  14. swfobject2.2
  15. 谈刺蛇c语言程序,C语言程设计实验内容与答案.doc
  16. 基于PG与PostGIS搭建实时矢量瓦片服务
  17. SCR-MCR:正则项, OGB榜单--清华唐杰-- 可扩展图学习
  18. 微信翻译,快把上海老外搞疯了
  19. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台
  20. 跟锦数学2017年02月

热门文章

  1. [jQuery]10 Things I Learned from the jQuery Source
  2. 软件项目开发应写的13类文档
  3. matlab调用c++生成dll32位与64位对应关系
  4. FFmpeg使用基础
  5. 最简单的基于FFmpeg的AVfilter的例子-修正版
  6. Windows下使用静态库
  7. python messagebox输出_python 3.4 中原来的tkinter组件的tkMessageBox变成啥了?
  8. boost signals2 coroutine
  9. linux to extract contents between patterns
  10. IPv6系列(一)—快速入门