导航:首页 > 编程语言 > java贝塞尔

java贝塞尔

发布时间:2022-08-29 03:37:28

A. 三次Bezier曲线绘制编程

顺便练一下贝塞尔函数,写了一个applet,每秒钟随机生成4个点展示效果。

满足题目要求的接口。

importjava.applet.Applet;

importjava.awt.Color;

importjava.awt.Graphics;

importjava.util.Random;

importjava.util.Timer;

importjava.util.TimerTask;

publicclassTestextendsApplet{

=-1570645570118871214L;

privateintpx[],py[];

privateRandomrnd;

@Override

publicvoidinit(){

rnd=newRandom(System.currentTimeMillis());

px=newint[4];

py=newint[4];

Timert=newTimer();

t.scheleAtFixedRate(newTimerTask(){

@Override

publicvoidrun(){

repaint();

}

},0,1000);

}

privatevoidgenerate(){

for(inti=0;i<4;i++){

px[i]=rnd.nextInt(150);

py[i]=rnd.nextInt(150);

}

}

staticpublicvoiddrawBezier(

Graphicsg,

intx0,inty0,

intx1,inty1,

intx2,inty2,

intx3,inty3){

int

px[]={x0,x1,x2,x3},

py[]={y0,y1,y2,y3};

g.setColor(Color.RED);

for(inti=0;i<px.length;i++){

g.fillOval(px[i],py[i],5,5);

}

g.setColor(Color.GREEN);

doublex=0,y=0;

intc=0;

for(doublet=0;t<=1;t+=0.01){

doubledx=cubicBezier(t,px),

dy=cubicBezier(t,py);

System.out.println("dx:"+dx+",dy:"+dy);

if(c++>0)g.drawLine((int)x,(int)y,(int)dx,(int)dy);

x=dx;y=dy;

}

}

(doublet,intp[]){

returnMath.pow(1-t,3)*p[0]+

3*t*Math.pow(1-t,2)*p[1]+

3*Math.pow(t,2)*(1-t)*p[2]+

Math.pow(t,3)*p[3];

}

@Override

publicvoidpaint(Graphicsg){

generate();

drawBezier(g,

px[0],py[0],

px[1],py[1],

px[2],py[2],

px[3],py[3]

);

}

}

B. Java怎么转换c语言

Java直接转C的没有。

Java转C#和C++的倒是有软件。(具体用法还要你自己研究)

比如:

1、Java语言转换器助手衔接,这个可以转C#。

2、Octopus的.NET转换器衔接,这个可以转C++或C#。

3、Tangible的Java转C#转换器衔接,有注释,方便学习,需要购买商业版才行。

4、XES的Java转C#转换器衔接,界面简单,容易上手。

5、Varycode工具衔接,在线工具,支持多语言转换(包括VB、Ruby、python等)。

C. RAND()*(-10-10)+10,0怎么解释

公式的量是无限的。因为公式是使用函数通过不同的操作符(如加减乘除运算、逻辑运算等)连接的式子。根据不同的要求就会有不同的公式,所以公式是无限多样的。

excel的函数也有不少,具体可以在excel的帮助里找到。基本的都列在下面。

数据库和清单管理函数
DAVERAGE 返回选定数据库项的平均值

DCOUNT 计算数据库中包含数字的单元格的个数

DCOUNTA 计算数据库中非空单元格的个数

DGET 从数据库中提取满足指定条件的单个记录

DMAX 返回选定数据库项中的最大值

DMIN 返回选定数据库项中的最小值

DPRODUCT 乘以特定字段(此字段中的记录为数据库中满足指定条件的记录)中的值

DSTDEV 根据数据库中选定项的示例估算标准偏差

DSTDEVP 根据数据库中选定项的样本总体计算标准偏差

DSUM 对数据库中满足条件的记录的字段列中的数字求和

DVAR 根据数据库中选定项的示例估算方差

DVARP 根据数据库中选定项的样本总体计算方差

GETPIVOTDATA 返回存储在数据透视表中的数据

日期和时间函数
DATE 返回特定时间的系列数

DATEDIF 计算两个日期之间的年、月、日数

DATEVALUE 将文本格式的日期转换为系列数

DAY 将系列数转换为月份中的日

DAYS360 按每年 360 天计算两个日期之间的天数

EDATE 返回在开始日期之前或之后指定月数的某个日期的系列数

EOMONTH 返回指定月份数之前或之后某月的最后一天的系列数

HOUR 将系列数转换为小时

MINUTE 将系列数转换为分钟

MONTH 将系列数转换为月

NETWORKDAYS 返回两个日期之间的完整工作日数

NOW 返回当前日期和时间的系列数

SECOND 将系列数转换为秒

TIME 返回特定时间的系列数

TIMEVALUE 将文本格式的时间转换为系列数

TODAY 返回当天日期的系列数

WEEKDAY 将系列数转换为星期

WORKDAY 返回指定工作日数之前或之后某日期的系列数

YEAR 将系列数转换为年

YEARFRAC 返回代表 start_date(开始日期)和 end_date(结束日期)之间天数的以年为单位的分数

DDE 和外部函数
CALL 调用动态链接库 (DLL) 或代码源中的过程

REGISTER.ID 返回已注册的指定 DLL 或代码源的注册 ID

SQL.REQUEST 连接外部数据源,并从工作表中运行查询,然后将结果作为数组返回,而无需进行宏编程。

有关 CALL 和 REGISTER 函数的其他信息

工程函数
BESSELI 返回经过修改的贝塞尔函数 In(x)

BESSELJ 返回贝塞尔函数 Jn(x)

BESSELK 返回经过修改的贝塞尔函数 Kn(x)

BESSELY 返回贝塞尔函数 Yn(x)

xlfctBIN2DEC BIN2DEC 将二进制数转换为十进制数

BIN2HEX 将二进制数转换为十六进制数

BIN2OCT 将二进制数转换为八进制数

COMPLEX 将实系数和虚系数转换为复数

CONVERT 将一种度量单位制中的数字转换为另一种度量单位制

DEC2BIN 将十进制数转换为二进制数

DEC2HEX 将十进制数转换为十六进制数

DEC2OCT 将十进制数转换为八进制数

DELTA 检测两个值是否相等

ERF 返回误差函数

ERFC 返回余误差函数

GESTEP 检测数字是否大于某个阈值

HEX2BIN 将十六进制数转换为二进制数

HEX2DEC 将十六进制数转换为十进制数

HEX2OCT 将十六进制数转换为八进制数

IMABS 返回复数的绝对值(模)

IMAGINARY 返回复数的虚系数

IMARGUMENT 返回参数 theta,一个以弧度表示的角

IMCONJUGATE 返回复数的共轭复数

IMCOS 返回复数的余弦

IMDIV 返回两个复数的商

IMEXP 返回复数的指数

IMLN 返回复数的自然对数

IMLOG10 返回复数的常用对数

IMLOG2 返回复数的以 2 为底数的对数

IMPOWER 返回复数的整数幂

IMPRODUCT 返回两个复数的乘积

IMREAL 返回复数的实系数

IMSIN 返回复数的正弦

IMSQRT 返回复数的平方根

IMSUB 返回两个复数的差

IMSUM 返回两个复数的和

OCT2BIN 将八进制数转换为二进制数

OCT2DEC 将八进制数转换为十进制数

OCT2HEX 将八进制数转换为十六进制数

财务函数
ACCRINT 返回定期付息有价证券的应计利息

ACCRINTM 返回到期一次性付息有价证券的应计利息

AMORDEGRC 返回每个会计期间的折旧值

AMORLINC 返回每个会计期间的折旧值

COUPDAYBS 返回当前付息期内截止到成交日的天数

COUPDAYS 返回成交日所在的付息期的天数

COUPDAYSNC 返回从成交日到下一付息日之间的天数

COUPNCD 返回成交日过后的下一付息日的日期

COUPNUM 返回成交日和到期日之间的利息应付次数

COUPPCD 返回成交日之前的上一付息日的日期

CUMIPMT 返回两个期间之间累计偿还的利息数额

CUMPRINC 返回两个期间之间累计偿还的本金数额

DB 使用固定余额递减法,返回一笔资产在指定期间内的折旧值

DDB 使用双倍余额递减法或其他指定方法,返回一笔资产在指定期间内的折旧值

DISC 返回有价证券的贴现率

DOLLARDE 将按分数表示的价格转换为按小数表示的价格

DOLLARFR 将按小数表示的价格转换为按分数表示的价格

DURATION 返回定期付息有价证券的修正期限

EFFECT 返回实际年利率

FV 返回投资的未来值

FVSCHEDULE 基于一系列复利返回本金的未来值

INTRATE 返回一次性付息证券的利率

IPMT 返回给定期间内投资的利息偿还额

IRR 返回一组现金流的内部收益率

ISPMT 计算在投资的特定期间内支付的利息

MDURATION 返回假设面值 $100 的有价证券的 Macauley 修正期限

MIRR 返回正负现金流使用不同利率的修正内部收益率

NOMINAL 返回名义年利率

NPER 返回投资的期数

NPV 基于一系列现金流和固定的各期贴现率,返回一项投资的净现值

ODDFPRICE 返回首期付息日不固定的面值 $100 的有价证券的价格

ODDFYIELD 返回首期付息日不固定的有价证券的收益率

ODDLPRICE 返回末期付息日不固定的面值 $100 的有价证券的价格

ODDLYIELD 返回末期付息日不固定的有价证券的收益率

PMT 返回投资或贷款的每期付款额

PPMT 返回投资在某一给定期次内的本金偿还额

PRICE 返回定期付息的面值 $100 的有价证券的价格

PRICEDISC 返回折价发行的面值 $100 的有价证券的价格

PRICEMAT 返回到期付息的面值 $100 的有价证券的价格

PV 返回投资的现值

RATE 返回年金的各期利率

RECEIVED 返回一次性付息的有价证券到期收回的金额

SLN 返回一项资产每期的直线折旧费

SYD 返回某项资产按年限总和折旧法计算的某期的折旧值

TBILLEQ 返返回国库券的债券等效收益率

TBILLPRICE 返回面值 $100 的国库券的价格

TBILLYIELD 返回国库券的收益率

VDB 使用递减余额法,返回指定期间内或某一时间段内的资产折旧额

XIRR 返回一组不定期发生的现金流的内部收益率

XNPV 返回一组不定期发生的现金流的净现值

YIELD 返回定期付息有价证券的收益率

YIELDDISC 返回折价发行的有价证券的年收益率,例如:国库券

YIELDMAT 返回到期付息的有价证券的年收益率

信息函数
CELL 返回有关单元格格式、位置或内容的信息

COUNTBLANK 计算区域中空单元格的个数

ERROR.TYPE 返回对应于错误类型的数字

INFO 返回有关当前操作环境的信息

ISBLANK 如果值为空,则返回 TRUE。

ISERR 如果值为除 #N/A 以外的错误值,则返回 TRUE。

ISERROR 如果值为任何错误值,则返回 TRUE。

ISEVEN 如果数为偶数,则返回 TRUE。

ISLOGICAL 如果值为逻辑值,则返回 TRUE。

ISNA 如果值为 #N/A 错误值,则返回 TRUE。

ISNONTEXT 如果值不是文本,则返回 TRUE。

ISNUMBER 如果值为数字,则返回 TRUE。

ISODD 如果数字为奇数,则返回 TRUE。

ISREF 如果值为引用,则返回 TRUE。

ISTEXT 如果值为文本,则返回 TRUE。

N 返回转换为数字的值

NA 返回错误值 #N/A

xlfctTYPE TYPE 返回表示值的数据类型的数字

逻辑函数
AND 如果所有参数为 TRUE,则返回 TRUE

FALSE 返回逻辑值 FALSE

IF 指定要执行的逻辑检测

NOT 反转参数的逻辑值

OR 如果任何参数为 TRUE,则返回 TRUE

TRUE 返回逻辑值 TRUE

查找和引用函数
ADDRESS 以文本形式返回对工作表中单个单元格的引用

AREAS 返回引用中的区域数

CHOOSE 从值的列表中选择一个值

COLUMN 返回引用的列号

COLUMNS 返回引用中的列数

HLOOKUP 查找数组的顶行并返回指示单元格的值

HYPERLINK 创建快捷方式或跳转,打开存储在网络服务器、企业内部网或 Internet 上的文档

INDEX 使用索引从引用或数组中选择值

INDIRECT 返回由文本值表示的引用

LOOKUP 在向量或数组中查找值

MATCH 在引用或数组中查找值

OFFSET 从给定引用中返回引用偏移量

ROW 返回引用的行号

ROWS 返回引用中的行数

TRANSPOSE 返回数组的转置

VLOOKUP 查找数组的第一列并移过行,然后返回单元格的值

数学和三角函数
ABS 返回数的绝对值

ACOS 返回数的反余弦

ACOSH 返回数的反双曲余弦值

ASIN 返回数的反正弦

ASINH 返回数的反双曲正弦值

ATAN 返回数的反正切

ATAN2 从 X 和 Y 坐标返回反正切

ATANH 返回参数的反双曲正切值

CEILING 对数字取整为最接近的整数或最接近的多个有效数字

COMBIN 返回给定数目对象的组合数

COS 返回数的余弦

COSH 返回数的双曲线余弦

COUNTIF 计算符合给定条件的区域中的非空单元格数

DEGREES 将弧度转换为度

EVEN 将数向上取整至最接近的偶数整数

EXP 返回 e 的指定数乘幂

FACT 返回数的阶乘

FACTDOUBLE 返回参数 Number 的半阶乘

FLOOR 将参数 Number 沿绝对值减小的方向取整

GCD 返回最大公约数

INT 将数向下取整至最接近的整数

LCM 返回最小公倍数

LN 返回数的自然对数

LOG 返回数的指定底数的对数

LOG10 返回以 10 为底的对数

MDETERM 返回数组的矩阵行列式

MINVERSE 返回数组的反矩阵

MMULT 返回两个数组的矩阵乘积

MOD 返回两数相除的余数

MROUND 返回参数按指定基数取整后的数值

MULTINOMIAL 返回一组数的多项式

ODD 将数取整至最接近的奇数整数

PI 返回 Pi 值

POWER 返回数的乘幂结果

PRODUCT 将所有以参数形式给出的数字相乘

QUOTIENT 返回商的整数部分

RADIANS 将度转换为弧度

RAND 返回 0 和 1 之间的随机数

RANDBETWEEN 返回指定数之间的随机数

ROMAN 将阿拉伯数字转换为文本形式的罗马数字

ROUND 将数取整至指定数

ROUNDDOWN 将数向下靠近 0 值取整

ROUNDUP 将数向上远离 0 值取整

SERIESSUM 返回基于公式的幂级数的和

SIGN 返回数的正负号

SIN 返回给定角度的正弦

SINH 返回数的双曲正弦值

SQRT 返回正平方根

SQRTPI 返回某数与 Pi 的乘积的平方根

SUBTOTAL 返回清单或数据库中的分类汇总

SUM 添加参数

SUMIF 按给定条件添加指定单元格

SUMPRODUCT 返回相对应的数组部分的乘积和

SUMSQ 返回参数的平方和

SUMX2MY2 返回两个数组中相对应值的平方差之和

SUMX2PY2 返回两个数组中相对应值的平方和之和

SUMXMY2 返回两个数组中相对应值差的平方之和

TAN 返回数的正切

TANH 返回数的双曲正切值

TRUNC 将数截尾为整数

统计函数
AVEDEV 返回一组数据与其均值的绝对偏差的平均值

AVERAGE 返回参数的平均值

AVERAGEA 返回参数的平均值,包括数字、文本和逻辑值

BETADIST 返回 Beta 分布累积函数的函数值

BETAINV 返回 Beta 分布累积函数的反函数值

BINOMDIST 返回单独项二项式分布概率

CHIDIST 返回 chi 平方分布的单尾概率

CHIINV 返回 chi 平方分布的反单尾概率

CHITEST 返回独立性检验值

CONFIDENCE 返回总体平均值的置信区间

CORREL 返回两个数据集之间的相关系数

COUNT 计算参数列表中的数字多少

COUNTA 计算参数列表中的值多少

COVAR 返回协方差,即成对偏移乘积的平均数

CRITBINOM 返回使累积二项式分布小于等于临界值的最小值

DEVSQ 返回偏差的平方和

EXPONDIST 返回指数分布

FDIST 返回 F 概率分布

FINV 返回反 F 概率分布

FISHER 返回 Fisher 变换

FISHERINV 返回反 Fisher 变换

FORECAST 根据给定的数据计算或预测未来值

FREQUENCY 返回作为矢量数组的频率分布

FTEST 返回 F 检验的结果

GAMMADIST 返回伽玛分布

GAMMAINV 返回反伽玛累积分布

GAMMALN 返回伽玛函数的自然对数,Γ(x)

GEOMEAN 返回几何平均数

GROWTH 根据给定的数据预测指数增长值

HARMEAN 返回数据集合的调和平均值

HYPGEOMDIST 返回超几何分布

INTERCEPT 返回回归线截距

KURT 返回数据集的峰值

LARGE 返回数据集中第 k 个最大值

LINEST 返回线条趋势的参数

LOGEST 返回指数趋势的参数

LOGINV 返回反对数正态分布

LOGNORMDIST 返回对数正态分布的累积函数

MAX 返回参数列表中的最大值

MAXA 返回参数列表中的最大值,包括数字、文本和逻辑值

MEDIAN 返回给定数字的中位数

MIN 返回参数列表的最小值

MINA 返回参数列表中的最小值,包括数字、文本和逻辑值

MODE 返回数据集中的出现最多的值

NEGBINOMDIST 返回负二项式分布

NORMDIST 返回普通累积分布

NORMINV 返回反普通累积分布

NORMSDIST 返回标准普通累积分布

NORMSINV 返回反标准普通累积分布

PEARSON 返回 Pearson 乘积矩相关系数

PERCENTILE 返回区域中值的第 k 个百分比

PERCENTRANK 返回数据集中值的百分比排位

PERMUT 返回对象给定数的排列数

POISSON 返回泊松分布

PROB 返回区域中的值在两个限制之间的概率

QUARTILE 返回数据集的四分位数

RANK 返回某数在数字列表中的排位

RSQ 返回 Pearson 乘积力矩相关系数的平方

SKEW 返回分布的偏斜度

D. java 三次贝塞尔曲线 怎么确定控制点

只是第二点和第三点的坐标而已,肯定有算法。具体看你要实现什么业务。

E. 数据库及pdf文件输出

【C++库】

PDF类库 PoDoFo
http://podofo.sourceforge.net/
PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库。它还包含一些小工具用来解析、修改和创建 PDF 文档。

Xpdf
http://www.foolabs.com/xpdf/download.html
Xpdf是一个开放源代码的PDF档案浏览器,Xpdf 可解码LZW压缩格式并阅读加密的PDF文件。

PDF生成工具 Poppler
http://poppler.freedesktop.org/
Poppler 是一个用来生成 PDF 的C++类库,从xpdf 继承而来。它使用了很多先进的类库例如 freetype 和 cairois 来达到更好的输出效果,同时也提供了一组命令行工具包。

JagPDF
http://www.jagpdf.com/
JagPDF 提供给 C/C++ 和 Python 编程语言用来生成 PDF 文档的库。

libHaru
http://libharu.org/wiki/Downloads
开源的PDF库

CLibPDF
http://hpux.connect.org.uk/hppd/hpux/Shells/ClibPDF-2.02/
ClibPDF是C函数库,可以直接生成PDF文件, 不需要Adobe Acrobat等工具支持.

------------------------------------------------------------------------

【JAVA库】
PDF操作类库 iText
http://www.lowagie.com/iText/
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

PDFBox
http://www.pdfbox.org/
非常强悍的PDF生成和解析Java类库

jpedal
http://www.jpedal.org/
jpedal是开源纯Java的PDF文档解析库,可以用来读取PDF文档中的文字、图形。

JasperReports
http://jasperforge.org/plugins/project/project_home.php?group_id=102
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。

Fourfive
http://sourceforge.net/projects/fourfive
Fourfive是一个领先的开源Web报表解决方案,使用XML作为它的配置文件。支持集群、负载平衡、动态发布、PDF, Excel, LDAP,图表、过滤器、排序、布局定制、门户、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。

FOP
http://xmlgraphics.apache.org/fop/
FOP是由James Tauber发起的一个开源项目,原先的版本是利用xsl-fo将xml文件转换成pdf文件。但最新的版本它可以将xml文件转换成pdf,mif,pcl,txt等多种格式以及直接输出到打印机,并且支持使用SVG描述图形。

JFreeReport
http://sourceforge.net/projects/jfreereport/
JFreeReport是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。

YaHP
http://www.allcolor.org/YaHPConverter/
YaHP是一个能够把html文档转换成pdf文档的Java开源包。

PDFjet
http://pdfjet.com/os/edition.html
PDFjet是一个用于动态生成PDF文档的Java类库。支持绘制点、线、方框、圆、贝塞尔曲线(Bezier Curves) 、多边形、星形、复杂路径和形状。支持unicode,文本间距调整,嵌入超链接等。它同时有Java和.NET两个版本。

vPDF
http://sourceforge.net/projects/vpdf/
一个将RTF文档转成PDF文档的工具

【.NET组件】
--------------------------------------------------

iTextSharp
http://itextsharp.sourceforge.net/
iTextSharp 是用来生成 PDF 文档的 C# 组件

PDFsharp
http://www.pdfsharp.com/
PDFsharp is a C# library that easily creates PDF documents on the fly. The same GDI+ like drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer. PDFsharp can also modify, merge, and split existing PDF files or incorporate pages from existing PDF files into new PDF documents.

Report.NET
http://report.sourceforge.net/
Report.NET 是一个功能强大且易用的用来生成 PDF 文档的 C# 组件
---------------------------------------------------------------------

【PHP】

Php Pdf Factory
http://sourceforge.net/projects/pdf-factory/
一个PHP的PDF操作库。

TCPDF
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。

HTML2PDF
http://html2fpdf.sourceforge.net/
HTML2PDF能够把一个HTML文本转换成一个打印机友好的PDF文件。这个PHP脚本构建在FPDFPHP脚本之上。

cPdfWriter
http://www.palos.ro/index.php?page=opensource_active
cPdfWriter是一个能够输出PDF文档的PHP5 class。基于TCPDF,FPDF和其它相关脚本。

FPDF
http://www.fpdf.org/
FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。它所具有的特点包括:可选择的unit大小,页面格式和页边 距;页眉和页脚管理;自动分页;自动换行与文本自动对齐;支持JPEG与PNG图片格式;支持着色和文件超链接;支持TrueType,Type1与 encoding;支持页面压缩。...

------------------------------------------------------------------------

【Python和Ruby】
Prawn
http://prawn.majesticseacreature.com/
Prawn: 用Ruby生成PDF更简捷

ReportLab
http://www.reportlab.org/
Reportlab是用python开发的生成pdf的工具包,它是一个开源软件。

PDF生成工具 pyPdf
PyPDF这是一个用于构建PDF的纯Python工具包

F. android中Path类的lineTo方法和quadTo方法画线的区别

android 中path类lineto方法和quadto方法的区别如下:
1. Path--->quadTo(float x1, float y1, float x2, float y2):
该方法的实现是当画弧线时会形成平滑的曲线,该曲线又称为"贝塞尔曲线"(Bezier curve),其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;
贝塞尔曲线的形成,就比如我们把一条橡皮筋拉直,橡皮筋的头尾部对应起点和终点,然后从拉直的橡皮筋中选择任意一点(除头尾对应的点外)扯动橡皮筋形成的弯曲形状,而那个扯动橡皮筋的点就是控制点。
2. Path--->lineTo(float x, float y) :
该方法实现的仅仅是两点连成一线的绘制线路,这样,当我们用这个方法绘制曲线时,缺陷就出来了。对比前面quadTo方法lineTo方法绘制的曲线不能形成平滑的弯曲,会出现明显的两点形成一线的突痕。

G. 有没有大神 用Android实现仿照Siri声波曲线

代码实现

波浪其实是由4条贝塞尔曲线组成的,可以在自定义View的onDraw函数中,用Path.quadTo函数画出4条曲线。

Path.quadTo(float x1, float y1, float x2, float y2)

其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;当控制点的x1位于起点与终点之间时,将画出正弦曲线,此时y1控制正弦曲线的高度,即效果图中波浪的高度由y1控制。
实现了曲线绘制和高度控制之后,如何让曲线像波浪一样动起来呢?
我的解决方法是在屏幕左边,即x<0的位置,同样绘制4条正弦曲线,并且启动线程让8条曲线都向右移动,当左边4条曲线全部移动到屏幕内后,让这8条曲线复位。如此周期进行。
解析

使用方法

在xml中,

<com.tao.view.SiriView
android:id="@+id/siriView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_centerInParent="true"/>

在Activity.Java中,

SiriView siriView = (SiriView) findViewById(R.id.siriView);
// 停止波浪曲线
siriView.stop();
// 设置曲线高度,height的取值是0f~1f
siriView.setWaveHeight(0.5f);
// 设置曲线的粗细,width的取值大于0f
siriView.setWaveWidth(5f);
// 设置曲线颜色
siriView.setWaveColor(Color.rgb(39, 188, 136));
// 设置曲线在X轴上的偏移量,默认值为0f
siriView.setWaveOffsetX(0f);
// 设置曲线的数量,默认是4
siriView.setWaveAmount(4);
// 设置曲线的速度,默认是0.1f
siriView.setWaveSpeed(0.1f);

H. 求: Java画出---CubicCurve2D.Double cubicCurve2D 三次贝塞尔曲线 的例子。

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

I. 怎么求 Java 贝塞尔曲线两点之间的角度

public void test() {
CvPoint controlPoint[] = new CvPoint[4];
controlPoint[0] = new CvPoint(50, 60); //起点
controlPoint[1] = new CvPoint(130, 200); //控制点
controlPoint[2] = new CvPoint(300, 360); //控制点
controlPoint[3] = new CvPoint(400, 600); //终点
int n = controlPoint.length - 1; //
int i, r;
float u;

bezierPoint.clear();
// u的步长决定了曲线点的精度
for (u = 0; u <= 1; u += 0.01) {

CvPoint p[] = new CvPoint[n + 1];
for (i = 0; i <= n; i++) {
p[i] = new CvPoint(controlPoint[i].x, controlPoint[i].y);
}

for (r = 1; r <= n; r++) {
for (i = 0; i <= n - r; i++) {
p[i].x = (1 - u) * p[i].x + u * p[i + 1].x;
p[i].y = (1 - u) * p[i].y + u * p[i + 1].y;
}
}
bezierPoint.add(p[0]);
}

for (CvPoint point : bezierPoint) {
System.out.println(point.x + "," + point.y);
}
}

J. java如何用描点法绘制双曲线

一个点一个点的画是最简单的。然后用Path2D来画直线。
Path2D.Double path = new Path2D.Double () ;

for (int i = 0 ; i < 100; i ++)
{
double y = f (x) ;
path.lineTo(x, y) ;
// 这里可以用quadTo () ;但要提供差值点。
}

Graphics2D g2 = (Graphics2D) g ;
g.draw (path) ;

补充:quadTo可能就是差值算法,这样你可以减少采样点来达到平滑曲线的效果。另外就是用RanderHint来进行抗锯齿等平滑处理。

阅读全文

与java贝塞尔相关的资料

热点内容
游戏属性文件加密 浏览:460
如何让安卓手机桌面图标下移 浏览:526
ubuntuphp5环境搭建 浏览:99
赌瘾解压视频 浏览:917
晋城移动dns服务器地址 浏览:294
php开源文库系统 浏览:134
android记事本源码 浏览:405
安卓11小游戏怎么玩法 浏览:188
gif有损压缩 浏览:935
windows下安装linux命令操作 浏览:842
米家app怎么设置进门亮灯 浏览:651
任我行服务器为什么会影响截图 浏览:295
安卓留言板怎么删除 浏览:18
做大厂程序员有什么感受 浏览:242
php文件只读 浏览:775
红色警戒3命令修改器112 浏览:433
安卓税收和苹果税是什么意思 浏览:446
快速排序算法的时间复杂度分析 浏览:113
大龄程序员困境 浏览:270
手机号忘了怎么登录农行app 浏览:573