java3D的单摆

来源:互联网 发布:美工自我提升 编辑:程序博客网 时间:2024/05/01 20:02

这是我和同学一起做的东东

前面说了由于是刚刚学习的所以很多东西很恼火,都得现学

只有一个礼拜的时间

虽然已经结束好久了

前阶段有点忙

所以就没写上来,现在把程序的代码搞上来吧,我负责的是场景的建立我同学负责的是动画的设置,东西是很简单,不过使我们一点点学来的,希望高手不要见笑。

我把画球的放在这个里面了

  public BranchGroup createSceneGraph() {         float   y = (float) (0.8f - Math.sqrt(0.8f * 0.8f - x1 * x1));        BranchGroup objRoot = new BranchGroup();        //3.定义一个定向光        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 400.0);        DirectionalLight LB = new DirectionalLight();        LB.setInfluencingBounds(bounds);        objRoot.addChild(LB);        //4.定义一个坐标系trans,将小球object添加到该坐标系中        Transform3D TG0 = new Transform3D();        TG0.setTranslation(new Vector3f(x1, y, 0f)); //设定小球坐标        TransformGroup trans = new TransformGroup(TG0);        trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);        trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);        objRoot.addChild(trans);        Sphere object = new Sphere(0.2f);        trans.addChild(object);         return objRoot;    }
下面的这个是画线的

public static TransformGroup pendulumLine(float x) {         float y;         y = -(float) Math.sqrt(0.8 * 0.8 - x * x);         float vert[] = {             x, y, 0.0f,             0.0f, 0.0f, 0.0f         };         float color[] = {             1.0f, 1.0f, 1.0f,             1.0f, 1.0f, 1.0f         };         Transform3D TG1 = new Transform3D();         TG1.setTranslation(new Vector3f(0.0f, 0.8f, 0f));         TransformGroup trans1 = new TransformGroup(TG1);         LineArray line = new LineArray(2, LineArray.COORDINATES | LineArray.COLOR_3);         line.setCoordinate(0, vert);         line.setColor(0, color);         LineAttributes pa = new LineAttributes();         pa.setLineWidth(2.5f);         pa.setLineAntialiasingEnable(true);         pa.setLinePattern(LineAttributes.PATTERN_SOLID);         Appearance app = new Appearance();         app.setLineAttributes(pa);         Shape3D shape = new Shape3D();         shape.setGeometry(line); //        trans1.addChild(shape);         shape.setAppearance(app);         return trans1;     }

 我把画球的和画线的放在了两个坐标系里,使得球的坐标和线的底端坐标一样,这样看起来就是一个单摆了,然后通过坐标公式的计算,使得给定一个x值,球和线都能到指定的位置,用了几何的计算,但是我没有实现能让它成为一个动画进行摆动,这个给同学做的,但是做到最后也没弄出来,完全是按照书上的一些东西写的,我们感觉没问题了,但是不知道为什么会这样,所以只能做到这里了,不过检查的时候,虽然没做完,老师还是给我们很大的肯定,也无所谓了,总之通过这次课程设计,学到了很多的东西,这就够了。

这是上上周的事情了,由于最近有点忙,所以就没写,这周又有设计了,是数据库的,我们是组队参加的,做的是一个奥运志愿者的网站,用的是php+mysql,不过这个东东基本都是我们组里一个人写的,他很擅长php,我还差的远呢,所以得好好学了,这个暑假经过同学那里想去红岩网校学习下,觉得自己的基础差很多。

大四要毕业了,我们现在大二,我还准备考研,在大学的时间其实过的很快,看着学长们渐渐的都走了,心里难免也想的很多,确实要好好的充实自己啊,作为计算机的要加油啊。下学期不再学生会干了,我的科协工作也算是告一段落了,我的好朋友——和我一起干科协的会长出国了,祝愿他在美国能一帆风顺,我们共同的老大还有8天就走了,去腾讯了,我觉得那里的工作环境更加的人性化,很好的一份工作也祝他事业有成,然后就是我了,最近忙着复习,也不怎么玩游戏了,要潜下心来好好复习了,下学期没什么学生工作了,得好好学习专业知识,做好挑战杯,做好自己的事情。希望所有的朋友都能平平安安的,充实自己的大学生活,珍惜每一天。

原创粉丝点击