- 浏览: 200337 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
kongyumi:
电话18800163600
初学certificate -
kongyumi:
解压密码多少?求告知
初学certificate -
船到桥头自然沉:
初学certificate -
笑海人胜:
...
JavaFX学习之Preloader -
kanjiantaiyang:
引用[img][/img][url][/url][b][/b] ...
security
Transform为Node提供仿射变换,如旋转,尺度变化,移动,修饰。通过node.getTransforms()得到一个list的transform,然后添加各种变化。 仿射变化实现了物体的3d效果。
Transform提供一些静态方法,创建Rotate,Scale,Shear,Translate。和坐标获得。
Affine 代表仿射变化。其方法主要是获取3x4矩形中的坐标
Rotate 旋转
属性:
angle 旋转角度
axis 轴线
pivotX ,pivotY ,pivotZ 轴心
构造方法:
Rotate(double angle, double pivotX, double pivotY) //角度,以那个点为旋转轴心
方法:
Scale 尺度变化(大小变化)
Shear 修饰
主要有4个属性决定该变化
x,y,pivotX,pivotY
其方法也是主要针对这四个属性的操作。
Translate 移动
用transform构建的3D物体,这个是网上摘抄下来的。
Transform提供一些静态方法,创建Rotate,Scale,Shear,Translate。和坐标获得。
Affine 代表仿射变化。其方法主要是获取3x4矩形中的坐标
Rotate 旋转
属性:
angle 旋转角度
axis 轴线
pivotX ,pivotY ,pivotZ 轴心
构造方法:
Rotate(double angle, double pivotX, double pivotY) //角度,以那个点为旋转轴心
方法:
Scale 尺度变化(大小变化)
Shear 修饰
Text text = new Text("Using Shear for pseudo-italic font"); text.setX(20); text.setY(50); text.setFont(new Font(20)); text.getTransforms().add(new Shear(0.35, 0));
主要有4个属性决定该变化
x,y,pivotX,pivotY
其方法也是主要针对这四个属性的操作。
Translate 移动
用transform构建的3D物体,这个是网上摘抄下来的。
package animation; import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.ParallelCamera; import javafx.scene.PerspectiveCamera; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.shape.RectangleBuilder; import javafx.scene.transform.Rotate; import javafx.stage.Stage; import javafx.util.Duration; public class Cube3D extends Application { @Override public void start(Stage stage) throws Exception { stage.setTitle("Cube 3D"); //stage.initDepthBuffer(true); Cube c = new Cube(50, Color.RED, 1); c.rx.setAngle(45); c.ry.setAngle(45); Cube c2 = new Cube(50, Color.GREEN, 1); c2.setTranslateX(100); c2.rx.setAngle(45); c2.ry.setAngle(45); Cube c3 = new Cube(50, Color.ORANGE, 1); c3.setTranslateX(-100); c3.rx.setAngle(45); c3.ry.setAngle(45); Timeline animation = new Timeline(); animation.getKeyFrames().addAll( new KeyFrame(Duration.ZERO, new KeyValue(c.ry.angleProperty(), 0d), new KeyValue(c2.rx.angleProperty(), 0d), new KeyValue(c3.rz.angleProperty(), 0d)), new KeyFrame(Duration.millis(1000), new KeyValue(c.ry .angleProperty(), 360d), new KeyValue(c2.rx .angleProperty(), 360d), new KeyValue(c3.rz .angleProperty(), 360d))); animation.setCycleCount(Animation.INDEFINITE); // create root group Group root = new Group(c, c2, c3); // translate and rotate group so that // origin is center and +Y is up root.setTranslateX(400 / 2); root.setTranslateY(150 / 2); root.getTransforms().add(new Rotate(180, Rotate.X_AXIS)); // create // scene Scene scene = new Scene(root, 400, 150); scene.setCamera(new ParallelCamera()); stage.setScene(scene); stage.show(); animation.play(); } public static void main(String[] args) { launch(args); } public class Cube extends Group { final Rotate rx = new Rotate(0, Rotate.X_AXIS); final Rotate ry = new Rotate(0, Rotate.Y_AXIS); final Rotate rz = new Rotate(0, Rotate.Z_AXIS); public Cube(double size, Color color, double shade) { getTransforms().addAll(rz, ry, rx); getChildren().addAll( RectangleBuilder .create() .width(size) .height(size) .fill(color.deriveColor(0.0, 1.0, (1 - 0.5 * shade), 1.0)) .translateX(-0.5 * size).translateY(-0.5 * size) .translateZ(0.5 * size).build(), RectangleBuilder .create() .width(size) .height(size) .fill(color.deriveColor(0.0, 1.0, (1 - 0.4 * shade), 1.0)) .translateX(-0.5 * size).translateY(0) .rotationAxis(Rotate.X_AXIS).rotate(90).build(), RectangleBuilder .create() .width(size) .height(size) .fill(color.deriveColor(0.0, 1.0, (1 - 0.3 * shade), 1.0)) .translateX(-1 * size).translateY(-0.5 * size) .rotationAxis(Rotate.Y_AXIS).rotate(90).build(), RectangleBuilder .create() .width(size) .height(size) .fill(color.deriveColor(0.0, 1.0, (1 - 0.2 * shade), 1.0)).translateX(0) .translateY(-0.5 * size) .rotationAxis(Rotate.Y_AXIS).rotate(90).build(), RectangleBuilder .create() .width(size) .height(size) .fill(color.deriveColor(0.0, 1.0, (1 - 0.1 * shade), 1.0)) .translateX(-0.5 * size).translateY(-1 * size) .rotationAxis(Rotate.X_AXIS).rotate(90).build(), RectangleBuilder .create() // top face .width(size).height(size).fill(color) .translateX(-0.5 * size).translateY(-0.5 * size) .translateZ(-0.5 * size).build()); } } }
发表评论
-
JavaFX学习 EventFilter
2013-01-11 10:41 3678EventFilter可以让你在事件捕捉过程中处理一些东 ... -
JavaFX学习 事件Event
2013-01-04 13:54 0常用的时间一般分为鼠标事件和键盘输入事件,看一下这些事件 ... -
JavaFX学习 自定义控件
2013-01-04 14:19 8180Control,Skin,behavior 在java ... -
JavaFX学习 位置计算
2012-12-31 15:22 1301如何得到节点在window中的位置 Point2D p ... -
JavaFX学习之Image
2013-01-11 13:53 7363ImageView and Image ImageVi ... -
JavaFX学习之Concurrent
2012-12-13 16:48 0Service Task public class ... -
JavaFX学习之Geometry
2012-12-13 16:45 0BoundingBox Bounds Dim ... -
JavaFX学习之Canvas
2013-01-15 16:20 4269Canvas and GraphicsContext ... -
JavaFX学习之Input
2012-12-13 16:39 0InputEvent Clipboard and ... -
JavaFX学习之Media
2012-12-13 16:32 0javafx支持视频和音频的播放,可以看media包下的 ... -
JavaFX学习之Paint
2012-12-13 16:29 0Paint Color ImagePatte ... -
JavaFX学习之Chart
2013-01-15 16:01 9294Chart 分piechart 和XYChart 再看看 ... -
JavaFX学习之Effect
2013-01-14 15:53 1874Effect 抽象类,所有特殊效果的父类。 Ble ... -
JavaFX学习之Animation
2012-12-13 16:02 0Animation AnimationTimer ... -
JavaFX学习之Stage
2012-12-13 15:55 0Window Stage 刚开始的Stage由平 ... -
JavaFX学习之Web
2013-01-12 16:06 12713PopupFeatures 处理新窗口 WebHi ... -
JavaFX学习之Scene
2012-12-13 15:49 0Node setManaged(boolean va ... -
JavaFX学习之Layout
2013-01-15 16:03 12718Region 继承parent,被 ... -
JavaFX学习之Control
2012-12-13 14:25 10675Control Control类控件通常由Control, ... -
JavaFX学习之Shape
2012-12-11 10:48 6165Shape 继承Node 方法 setFill(Pai ...
相关推荐
总的来说,"moon3d"项目是一个绝佳的学习资源,它通过实践教你如何使用JavaFX的3D特性构建一个具有真实感的空间场景。通过这个教程,你可以掌握JavaFX 3D编程的基础,为创建更复杂的3D应用打下坚实的基础。
CollabMode是一款基于JavaFX开发的文本编辑器,它的核心特性是...通过研究和学习CollabMode的源代码(假设CollabMode-main是源码包),开发者可以深入了解如何在JavaFX平台上实现类似的功能,进一步提升自己的技能。
10. **Java 3D与其他Java库的集成**:如Swing或JavaFX,可以将3D元素与2D用户界面相结合。 通过这两个资源,开发者不仅可以学习到Java 3D的基本使用,还能逐步深入到高级主题,为开发高质量的3D应用打下坚实基础。...
例如,它可以通过`transform`属性实现元素的3D转换,创建出具有深度感的视觉效果。`transition`属性则可以用来定义当元素从一种状态平滑过渡到另一种状态时的动画效果,比如菜单项在鼠标悬停时的展开和收起。 菜单...
这里可以使用CSS3的`transform`属性来改变图片大小,或者使用额外的元素来展示放大的图片。 2. JavaFX实现(适用于桌面应用): 如果是在JavaFX环境中,我们可以利用`ImageView`类的交互性来实现。为`ImageView`...
通过`javax.media.j3d`包,开发者可以创建节点树结构来表示3D对象,使用`BranchGroup`、`SceneGraph`、`Transform3D`等类来构建和操作三维空间。例如,`Appearance`类用于定义物体的外观,包括材质、纹理和光照效果...
接下来是CSS3,它是CSS(层叠样式表)的最新版本,引入了许多新的特性和功能,如选择器的扩展、边框和背景的复杂效果、多列布局、转换(transform)、过渡(transition)和动画(animation)。CSS2.0_API_2002.chm和...
此外,JavaFX的Paint类允许我们设置图形的颜色和填充,而Transform类则帮助我们实现变换操作,如translate()、rotate()和scale()。 为了增强用户体验,GraphicEditor还引入了撤销/重做功能,这通常依赖于Memento...
在IT领域,GUI设计通常涉及各种库或框架,如Java的Swing和JavaFX,Python的Tkinter,或是Unity中的NGUI。 NGUI,全称Next-Generation User Interface,是一个适用于Unity 3D的游戏用户界面系统。Unity是一款强大的...
虽然标题中的"体"暗示了3D图形,但在Java中,通常使用Java 3D库或JavaFX 3D来处理3D图形,而Java 2D主要处理2D。不过,Java 2D也可以通过投影和变换模拟3D效果。 2. **Java 3D**:Java 3D是一个开源库,它扩展了...
在实际开发中,开发者通常会使用Java 3D提供的如Transform3D、SceneGraphObject、Appearance等类,结合Java Swing或JavaFX来创建用户界面,以及使用AudioClip处理音频。 总之,Java3D坦克源码是一个实践性的项目,...
`SimpleUniverse`适用于桌面应用,而`Canvas3D`适合嵌入到Java Swing或JavaFX组件中。 总结,"用Java 3D实现三维演示系统"是一个涉及Java 3D基础、场景图构建、对象变换、光照设置以及交互和动画实现的综合项目。...
2. **Java**:JavaFX提供了一种创建倒影的方法,通过`DropShadow`和`Reflection`效果类可以轻松实现。在Swing中,可以使用自定义绘图或者第三方库如Java2D-Utils来实现。 3. **C#** & **WPF**:Windows ...
标题 "dct-image-compression.rar" 提到的是一个与离散余弦变换(Discrete Cosine Transform, DCT)相关的图像压缩项目,采用Java语言实现。这个压缩包中包含了使用DCT进行图像压缩的主要程序,以及一个名为"DCT彩色...
快速傅里叶变换(Fast Fourier Transform,简称FFT)是一种高效的计算离散傅里叶变换(Discrete Fourier Transform,DFT)及其逆变换的算法。在Java编程中,实现带图形用户界面(GUI)的FFT应用可以为用户提供直观的...
10. **XML处理**:Java API还包含了处理XML的类库,如`javax.xml.parsers`用于解析XML,`javax.xml.transform`用于转换XML,`javax.xml.bind`支持对象到XML的绑定。 Java API文档是开发者学习和使用Java技术的关键...
【Java音乐播放器项目概述】 本项目是一个基于Java...总的来说,这个Java音乐播放器项目涵盖了GUI设计、音频处理、实时图形渲染等多个技术领域,对于学习Java编程和多媒体应用开发的学员来说,是一个很好的实践项目。
transformer.transform(new DOMSource(doc), new StreamResult(writer)); String output = writer.getBuffer().toString(); ``` 5. **使用JavaFX或Swing**:如果你的应用程序需要图形用户界面(GUI),JavaFX和...
这个API是建立在Java Foundation Classes (JFC) 和Swing之上的,允许开发者利用Java语言的特性来构建具有深度、透视和真实感的3D图形。Java3D API的核心目标是简化3D图形编程,使得开发者无需深入理解底层的图形硬件...
9. **整合其他Java技术**:Java3D可以很好地与其他Java技术如Swing、JavaFX等集成,构建出功能丰富的3D应用程序。 10. **社区支持**:虽然Java3D官方支持已停止,但开源社区仍有一些项目,如Java3D-Fork,持续维护...