欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java旋轉(zhuǎn)代碼,java 畫圖 旋轉(zhuǎn)

java環(huán)境下,如何實現(xiàn)3D圖形的自動旋轉(zhuǎn)?

程序?qū)崿F(xiàn)思路: 在javafx中Node對象有一個effect屬性,可以用于實現(xiàn)各種特效。PerspectiveTransform特效可以使Node對象實現(xiàn)透視變換。因此我們可以通過計算透視變換中每個點的位置來實現(xiàn)3D翻轉(zhuǎn)特效。

海豐網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司

實現(xiàn)步驟: 1、定義FlipView對象。包含以下屬性:

復(fù)制代碼 代碼如下:

//正面視圖

public Node frontNode;

//反面視圖

public Node backNode;

//是否翻轉(zhuǎn)

boolean flipped = false;

//翻轉(zhuǎn)角度

DoubleProperty time = new SimpleDoubleProperty(Math.PI / 2);

//正面翻轉(zhuǎn)特效

PerspectiveTransform frontEffect = new PerspectiveTransform();

//反面翻轉(zhuǎn)特效

PerspectiveTransform backEffect = new PerspectiveTransform();

create方法返回需要顯示的內(nèi)容:

復(fù)制代碼 代碼如下:

private void create() {

time.addListener(new ChangeListener() {

@Override

public void changed(ObservableValue? extends Number arg0,

Number arg1, Number arg2) {

setPT(frontEffect, time.get());

setPT(backEffect, time.get());

}

});

anim.getKeyFrames().addAll(frame1, frame2);

backNode.visibleProperty().bind(

Bindings.when(time.lessThan(0)).then(true).otherwise(false));

frontNode.visibleProperty().bind(

Bindings.when(time.lessThan(0)).then(false).otherwise(true));

setPT(frontEffect, time.get());

setPT(backEffect, time.get());

frontNode.setEffect(frontEffect);

backNode.setEffect(backEffect);

getChildren().addAll(backNode, frontNode);

}

以上代碼需要注意的是: 隨著time值的變化frontEffect和backEffect的值也會隨著變換。 2、PerspectiveTransform特效的實現(xiàn)使用了Math.sin()和Math.cos()方法模擬3D角度變換。 具體實現(xiàn)如下:

復(fù)制代碼 代碼如下:

private void setPT(PerspectiveTransform pt, double t) {

double width = 200;

double height = 200;

double radius = width / 2;

double back = height / 10;

pt.setUlx(radius - Math.sin(t) * radius);

pt.setUly(0 - Math.cos(t) * back);

pt.setUrx(radius + Math.sin(t) * radius);

pt.setUry(0 + Math.cos(t) * back);

pt.setLrx(radius + Math.sin(t) * radius);

pt.setLry(height - Math.cos(t) * back);

pt.setLlx(radius - Math.sin(t) * radius);

pt.setLly(height + Math.cos(t) * back);

}

3、角度變換在1秒的時間內(nèi)從3.14/2變換到-3.14/2。

復(fù)制代碼 代碼如下:

KeyFrame frame1 = new KeyFrame(Duration.ZERO, new KeyValue(time,

Math.PI / 2, Interpolator.LINEAR));

KeyFrame frame2 = new KeyFrame(Duration.seconds(1),

new EventHandler() {

@Override

public void handle(ActionEvent event) {

flipped = !flipped;

}

}, new KeyValue(time, -Math.PI / 2, Interpolator.LINEAR));

4、FlipView對象的創(chuàng)建:通過構(gòu)造函數(shù)可以很方便的創(chuàng)建FlipView對象.

復(fù)制代碼 代碼如下:

ImageView image1 = new ImageView(new Image(getClass()

.getResourceAsStream("lion1.png")));

ImageView image2 = new ImageView(new Image(getClass()

.getResourceAsStream("lion2.png")));

FlipView flip = new FlipView(image1, image2);

在這段java代碼--俄羅斯方塊,方塊是怎么旋轉(zhuǎn)的?

貼出來的代碼還不夠,不過已經(jīng)基本能回答你的問題了

我的推理過程:從(turnstate+1)%4可以看出,turnstate是一個數(shù)字,取值只有0123,因此它僅僅是一個標(biāo)識符,0123四種取值分別標(biāo)記著這個方塊處于原狀,旋轉(zhuǎn)90度,180度或者270度。然后blow函數(shù)應(yīng)該是一個判斷旋轉(zhuǎn)之后會不會出現(xiàn)和已有方塊重疊的函數(shù)。

因此,這個turn函數(shù)的功能是:把標(biāo)識符變成下一個狀態(tài),然后判斷如果旋轉(zhuǎn),會不會和已有的方塊重疊,如果重疊,就取消這個旋轉(zhuǎn)標(biāo)記的改變。

因此,答案就很明顯了:真正實現(xiàn)旋轉(zhuǎn)方塊的操作并不在這里,或者說,你再仔細(xì)研究一下這個程序的代碼,它可能實際上根本沒有旋轉(zhuǎn)過那個方塊,只是用turnstate這個數(shù)字標(biāo)記方塊旋轉(zhuǎn)了多少度,判斷重疊以及繪制的時候才真正計算或者從表里直接讀取旋轉(zhuǎn)后狀態(tài)而已。

將一個二維數(shù)組旋轉(zhuǎn)90度 用Java編寫代碼

#includestdio.h

#define N 4

int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

void prt()

{int i,j;

for(i=0;iN;i++)

{

for(j=0;jN;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

int main()

{int i,j,k,t;

printf("原來的數(shù)組:\n");

prt();

for(i=0;i=N/2;i++)

for(j=i;jN-i-1;j++)

{

t=a[i][j];

a[i][j]=a[j][N-1-i];

a[j][N-1-i]=a[N-1-i][N-1-j];

a[N-1-i][N-1-j]=a[N-1-j][i];

a[N-1-j][i]=t;

}

printf("\n順時針旋轉(zhuǎn)90度后的數(shù)組:\n");

prt();

getch();

return 0;

}

當(dāng)前名稱:java旋轉(zhuǎn)代碼,java 畫圖 旋轉(zhuǎn)
標(biāo)題來源:http://chinadenli.net/article36/dsiogpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)網(wǎng)站收錄用戶體驗外貿(mào)建站手機(jī)網(wǎng)站建設(shè)軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計