亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transform.java

?? 用java開發(fā)的一個實施策略游戲源碼 值得學習一下
?? JAVA
字號:
/*
	Netwar
	Copyright (C) 2002  Daniel Grund, Kyle Kakligian, Jason Komutrattananon, & Brian Hibler.

	This file is part of Netwar.

	Netwar is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	Netwar is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Netwar; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package netwar.utils.vectorgraphics;

/** A class that handles conversions between Point3D and Point2D and visa-versa.
 *
 * This class is stand alone, rather than included in the Point classes, so that multiple Transform classes could exist. This was done in order to show the unit in action on the netwar panel.
 * @author Kyle Kakligian
 */
public class Transform {
private float SCALE = 5;
private float XX = SCALE;
private float XY = 0;
private float XZ = 0;
private float YX = 0;
private float YY = -SCALE/2;
private float YZ = -SCALE*(float)Math.sqrt(3)/2;
private float ZX = 0;
private float ZY = -SCALE/2;
private float ZZ = SCALE*(float)Math.sqrt(3)/2;
private float X0 = 600;
private float Y0 = 350;
private float Xmin = 0;
private float Xmax = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().getWidth();
private float Ymin = 0;
private float Ymax = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().getHeight();
private int iteration = 0;

/** Creates a new instance of Transform with default values*/
public Transform() {
}
/** Converts the gamespace point into a 2D screenspace point using the transform matrix.
 * @param pt The point to convert.
 * @return Returns a new Point2D.
 */        
public Point2D getPoint2D(Point3D pt) {
    return new Point2D(pt.x * XX + pt.y * XY + pt.z * XZ + X0,
        pt.x * YX + pt.y * YY + pt.z * YZ + Y0);
}
/** Converts the gamespace point into a 2D screenspace point using the transform matrix.
 * @param p3 The point to convert.
 * @param p2 The point to return.
 * @return Returns the Point2D.
 */        
public Point2D getPoint2D(Point3D p3, Point2D p2) {
    p2.set(p3.x * XX + p3.y * XY + p3.z * XZ + X0,
        p3.x * YX + p3.y * YY + p3.z * YZ + Y0);
    return p2;
}
/** Converts the gamespace point into a 3D screenspace point with Z using the transform matrix.
 * @param p3 The point to convert.
 * @param p2 The point to return.
 * @return True iff the point is within the screen grid.
 */        
public boolean getPoint2DwithZ(Point3D p3, Point3D p2) {
    p2.set(p3.x * XX + p3.y * XY + p3.z * XZ + X0,
        p3.x * YX + p3.y * YY + p3.z * YZ + Y0,
	p3.x * ZX + p3.y * ZY + p3.z * ZZ);
    return (p2.x >= Xmin && p2.x <= Xmax && p2.y >= Ymin && p2.y <= Ymax);
}
/** Converts a 2D screenspace point into a 3D gamespace point using the transform matrix.
 * @param pt A Point2D in screen space.
 * @return Returns a new Point3D.
 */        
public Point3D getPoint3D(Point2D pt) {
    return new Point3D(
        (pt.x - X0 - XY / YY * (pt.y - Y0))/(XX - XY * YX / YY),
        (pt.y - Y0 -YX / XX * (pt.x - X0))/(YY - YX * XY / XX),
        0);
}
/** Converts a 2D screenspace point into a 3D gamespace point using the transform matrix.
 * @param p2 A Point2D in screen space.
 * @param p3 A Point3D to return.
 * @return Returns the Point3D.
 */        
public Point3D getPoint3D(Point2D p2, Point3D p3) {
    p3.set(
        (p2.x - X0 - XY / YY * (p2.y - Y0))/(XX - XY * YX / YY),
        (p2.y - Y0 -YX / XX * (p2.x - X0))/(YY - YX * XY / XX),
        0);
    return p3;
}
/** Converts a 2D screenspace point into a 3D gamespace point using the transform matrix.
 * @param x The x-axis value in screen space.
 * @param y The x-axis value in screen space.
 * @return Returns a new Point3D.
 */        
public Point3D getPoint3D(int x, int y) {
    return new Point3D(
        (x - X0 - XY / YY * (y - Y0))/(XX - XY * YX / YY),
        (y - Y0 -YX / XX * (x - X0))/(YY - YX * XY / XX),
        0);
}
/** Adjusts the transform matrix in the (x,y,0) direction. Use this method for the effect of scrolling.
 * @param x Change in the x direction.
 * @param y Change in the y direction.
 */
public void translate(int x, int y) {
	X0 += x;
	Y0 += y;
	iteration++;
}
/** Returns the maxX variable.
 * @return the MaxX variable.
 */
public int maxX() { return (int)Xmax; }
/** Returns the maxY variable.
 * @return the maxY variable.
 */
public int maxY() { return (int)Ymax; }
/** Adjust the transformation matrix due to a resize of the displayer.
 * This is necessary now, because the Transform will allow a GraphicThing to know it is out of bounds.
 * Includes re-centering.
 * @param deltaWidth the change in width.
 * @param deltaHeight the change in height.
 */
public void resize(float deltaWidth, float deltaHeight) {
	translate((int)(deltaWidth / 2), (int)(deltaHeight / 2)); 
	Xmax += deltaWidth;
	Ymax += deltaHeight;
}

/** Adjusts the transform matrix in the (0,0,z) direction. Use this method for the effect of zooming in and out.
 * @param factor The magnification factor.
 * @param halfwidth Half the width of the screen, in screenspace
 * @param halfheight Half the height of the screen, in screenspace.
 */        
public void zoom(float factor, int halfwidth, int halfheight) {
	if(factor == 0 || factor == 1) return;
	SCALE *= factor;
	XX *= factor;
	XY *= factor;
	XZ *= factor;
	YX *= factor;
	YY *= factor;
	YZ *= factor;
//	ZX *= factor;
//	ZY *= factor;
//	ZZ *= factor;
	X0 = X0 * factor + halfwidth * (1 - factor);
	Y0 = Y0 * factor + halfheight * (1 - factor);
	iteration++;
}
/** Returns the current scaling value. This is constant until zoom() is called.
 * @return Scale.
 */        
public float getScale() { return SCALE; }
/** Returns the current iteration number, incremented every time the scaling factors change.
 * Thus, if the same point3D is translated according to the same Transform with the same
 * iteration number and the Point3D hasn't changed in between,
 * it knows the outcome will be the same.
 * @return the current iteration number
 */
public int getIteration() { return iteration; }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一本久道久久综合久久鬼色| 国产精品久久久久久妇女6080 | 日韩欧美一级片| 99久久精品免费看| 懂色av中文字幕一区二区三区| 日韩av网站在线观看| 一区二区三区欧美激情| 国产精品夫妻自拍| 蜜臀av一区二区| 免费观看30秒视频久久| 日韩电影在线一区二区三区| 国产成人欧美日韩在线电影| 亚洲福利视频一区| 亚洲精品国产一区二区三区四区在线| 国产欧美日韩另类视频免费观看| 国产欧美一区视频| 日韩精品免费视频人成| 免费在线观看视频一区| 91黄色激情网站| 91久久精品日日躁夜夜躁欧美| 国产亚洲精品aa午夜观看| 久久综合九色综合欧美亚洲| 欧美大片在线观看一区| 亚洲一二三级电影| 在线亚洲+欧美+日本专区| 777午夜精品免费视频| 日韩一级片网址| 中文成人综合网| 亚洲国产精品麻豆| 欧美性一区二区| 国产欧美一区二区在线| 久久国产精品露脸对白| 91精品国产福利| 精品日韩av一区二区| 国产精品国产a| 国产69精品一区二区亚洲孕妇| 欧美成人激情免费网| 久久66热偷产精品| 成人丝袜18视频在线观看| 欧美日本一区二区三区四区| 日本一区二区高清| 视频在线在亚洲| 91精品国产综合久久精品性色| 日韩精品国产欧美| 欧美一区二区三区视频免费| 蜜芽一区二区三区| 精品久久久久香蕉网| 国产精品综合二区| 欧美一区二区三区色| 午夜精品久久久| 成人午夜精品在线| 综合亚洲深深色噜噜狠狠网站| 蜜桃av一区二区三区| 日韩午夜电影在线观看| 国产伦精品一区二区三区免费迷| 国产乱对白刺激视频不卡| 久久精品欧美一区二区三区麻豆| 懂色av中文一区二区三区| 自拍偷拍国产精品| 在线观看日韩精品| 捆绑调教一区二区三区| 国产网红主播福利一区二区| 91免费看`日韩一区二区| 精品精品国产高清一毛片一天堂| 亚洲国产成人porn| 亚洲精品一区二区三区影院 | 蜜桃视频免费观看一区| 久久理论电影网| 老色鬼精品视频在线观看播放| 国产日韩欧美一区二区三区乱码 | 欧美日韩www| 国产精品综合视频| 亚洲图片一区二区| 久久久久久久久久电影| 欧美四级电影在线观看| 国产精品性做久久久久久| 亚洲综合免费观看高清完整版 | 亚洲精品高清在线观看| 日韩午夜在线观看| 色偷偷一区二区三区| 最新高清无码专区| 日韩一本二本av| 99久久精品国产毛片| 久久国产精品色| 亚洲最大色网站| 国产欧美一区二区在线| 日韩午夜在线影院| 在线视频国内自拍亚洲视频| 国产精品一区在线观看你懂的| 亚洲一区二区在线免费观看视频 | 久久精品国产免费| 一级特黄大欧美久久久| 久久精品人人做人人爽97| 欧美一级久久久| 欧美裸体bbwbbwbbw| 日本欧美一区二区三区乱码| 日韩一区日韩二区| 欧洲在线/亚洲| 成人sese在线| 亚洲国产一二三| 亚洲日本一区二区| 久久精品亚洲精品国产欧美kt∨| 欧美精品第1页| 欧美性欧美巨大黑白大战| 成人av手机在线观看| 国产一区二区三区不卡在线观看| 天天色 色综合| 亚洲妇女屁股眼交7| 亚洲乱码精品一二三四区日韩在线| 久久久久久久综合日本| 日韩精品一区二区三区四区视频| 欧美老年两性高潮| 欧美性受极品xxxx喷水| 在线观看成人免费视频| 91理论电影在线观看| 95精品视频在线| 97se狠狠狠综合亚洲狠狠| 99精品国产热久久91蜜凸| 国产91高潮流白浆在线麻豆| 国产精品一级黄| 国产乱码精品一区二区三区忘忧草 | 欧美岛国在线观看| 精品国产a毛片| 久久久亚洲午夜电影| 国产亚洲va综合人人澡精品| 久久精品视频一区二区| 国产欧美一区二区三区在线老狼| 欧美国产精品一区| 一区免费观看视频| 亚洲六月丁香色婷婷综合久久 | 成人久久久精品乱码一区二区三区| 国产很黄免费观看久久| 成人精品视频一区| 成人av集中营| 欧美亚洲综合一区| 91麻豆精品国产91久久久使用方法 | 欧美精品亚洲一区二区在线播放| 欧美猛男超大videosgay| 91精品国产综合久久香蕉麻豆| 日韩一二在线观看| 国产视频一区二区三区在线观看| 国产精品久久久久久亚洲伦| 亚洲精品成人精品456| 视频一区二区三区入口| 狠狠色丁香久久婷婷综| 午夜久久电影网| 久久99久久99| 99r国产精品| 91精品久久久久久久91蜜桃| 久久久美女艺术照精彩视频福利播放| 中文字幕va一区二区三区| 一卡二卡三卡日韩欧美| 韩国成人在线视频| 色综合一区二区| 成人av先锋影音| 欧美日韩和欧美的一区二区| 精品欧美一区二区三区精品久久| 中文字幕乱码久久午夜不卡| 亚洲精品国产第一综合99久久| 毛片不卡一区二区| 91亚洲国产成人精品一区二三| 在线观看91av| 中文字幕久久午夜不卡| 婷婷综合五月天| www.成人在线| 欧美一区二区三区视频免费播放| 欧美韩国日本不卡| 日韩高清在线不卡| 成人免费看的视频| 欧美一二三区在线观看| 亚洲欧洲另类国产综合| 另类综合日韩欧美亚洲| 91啪九色porn原创视频在线观看| 日韩美女视频一区二区在线观看| 亚洲欧美色一区| 亚洲综合色视频| 不卡在线视频中文字幕| 欧美精品xxxxbbbb| 亚洲男人天堂av| 国产福利91精品一区| 日韩亚洲欧美一区| 亚洲第一搞黄网站| 日韩av电影免费观看高清完整版| aaa欧美日韩| 国产欧美综合在线| 精品一区在线看| 欧美情侣在线播放| 亚洲男人天堂av网| 99久久伊人网影院| 久久久91精品国产一区二区精品| 日本美女一区二区| 欧美人体做爰大胆视频| 亚洲激情在线激情| 91视频免费播放| 国产精品国产三级国产普通话蜜臀| 国产一区二区三区香蕉| 欧美电视剧在线观看完整版| 奇米777欧美一区二区| 欧美日韩国产一区| 亚洲国产精品一区二区尤物区|