導航:首頁 > 編程語言 > 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貝塞爾相關的資料

熱點內容
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:829
php截圖flash 瀏覽:272
卸載聯想app哪個好 瀏覽:719
php文字轉圖片 瀏覽:329
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:777
伺服器與外網不通如何驗證 瀏覽:351
電子版是不是就是文件夾 瀏覽:50
游戲屬性文件加密 瀏覽:462
如何讓安卓手機桌面圖標下移 瀏覽:529
ubuntuphp5環境搭建 瀏覽:100
賭癮解壓視頻 瀏覽:917
晉城移動dns伺服器地址 瀏覽:296
php開源文庫系統 瀏覽:136
android記事本源碼 瀏覽:407
安卓11小游戲怎麼玩法 瀏覽:190
gif有損壓縮 瀏覽:937
windows下安裝linux命令操作 瀏覽:844